历史上的今天
返回首页

历史上的今天

今天是:2024年12月11日(星期三)

正在发生

2018年12月11日 | stm32f103按键中断实现方法

2018-12-11 来源:eefocus

#include"stm32f10x.h"

 

void LED_GPIO_Config()

{

/*定义一个GPIO_InitTypeDef类型的结构体*/

GPIO_InitTypeDef GPIO_InitStructure;


/*开启GPIOB的外设时钟*/

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);


/*选择要控制的GPIOB引脚*/

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;


/*设置引脚模式为通用推挽输出*/

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;


/*设置引脚速率为50MHz*/

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;


/*调用库函数,初始化GPIOB*/

GPIO_Init(GPIOB, &GPIO_InitStructure);


/*关闭LED灯*/

GPIO_SetBits(GPIOB, GPIO_Pin_5);

}

 

void EXTI_PC5_Config()

{

static void NVIC_Configuration();


/*定义一个GPIO_InitTypeDef类型的结构体*/

GPIO_InitTypeDef GPIO_InitStructure;

/*定义一个EXTI_InitTypeDef类型的结构体*/

EXTI_InitTypeDef EXTI_InitStructure;


/*开启GPIOC的外设时钟和AFIO时钟*/

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO, ENABLE);


/*配置NVIC(PC5)*/

NVIC_Configuration();


/*EXTI GPIO(PC5)线配置*/

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; /*设置上拉输入*/

GPIO_Init(GPIOC, &GPIO_InitStructure); /*调用库函数,初始化GPIOC*/


/*EXTI线(PE5)模式配置*/

GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource5);

EXTI_InitStructure.EXTI_Line = EXTI_Line5;

EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;

EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; /*下降沿中断*/


EXTI_InitStructure.EXTI_LineCmd = ENABLE;

EXTI_Init(&EXTI_InitStructure);

}

 

static void NVIC_Configuration()

{

/*定义一个NVIC_InitTypeDef类型的结构体*/

NVIC_InitTypeDef NVIC_InitStructure;


/*为抢占优先级配置一位*/

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);


/*配置P[A|B|C|D|E]5为中断源*/

NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);

}

 

void Delay(uint32_t uCount)

{

    for(;uCount>0;uCount--);

}

 

void EXTI9_5_IRQHandler()

{

if(EXTI_GetITStatus(EXTI_Line5) != RESET) /*确保是否产生了EXTI Line中断*/

{

/*消抖*/

Delay(1000);

/*LED取反*/

GPIO_WriteBit(GPIOB, GPIO_Pin_5, (BitAction)((~GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_5))));

/*清除中断标志位*/

EXTI_ClearITPendingBit(EXTI_Line5);

}

}

 

int main(void)

{

/*初始化LED*/

LED_GPIO_Config();

/*EXTI线配置*/

EXTI_PC5_Config();


GPIO_SetBits(GPIOB, GPIO_Pin_5);/*置高*/


while(1);

}

推荐阅读

史海拾趣

联捷(Elinker)公司的发展小趣事

进入21世纪,联捷(Elinker)意识到技术创新的重要性,开始加大在研发方面的投入。经过数年的努力,公司成功研发出具有自主知识产权的电子产品,并在市场上取得了良好的反响。同时,公司开始注重品牌建设,通过一系列的市场推广活动,逐渐树立了联捷(Elinker)在电子行业中的品牌形象。

EXCELTA公司的发展小趣事

随着公司规模的扩大,产品质量的稳定性成为制约Excelta进一步发展的瓶颈。为了解决这一问题,公司决定引入先进的质量管理体系,并投入大量资源进行培训和改造。经过不懈的努力,Excelta的产品质量得到了显著提升,客户满意度也大幅提高。这一转变不仅为公司赢得了更多的订单,还奠定了公司在行业中的领先地位。

Broadcom(博通)公司的发展小趣事

进入21世纪,随着网络泡沫的破灭,博通陷入了严重的财务困境。亏损累计高达65亿美元,股价大幅下跌,公司甚至不得不裁员以维持运营。然而,正是在这样的困境中,博通展现出了坚韧不拔的精神。通过优化产品结构、调整市场策略,博通逐渐走出了低谷,并在2003年推出了全球第一个802.11b单片机,重新赢得了市场的关注。

Crystalfontz America Inc公司的发展小趣事

在发展过程中,Crystalfontz America Inc公司不断完善和升级产品线。除了传统的LCD、OLED显示模块外,公司还推出了触摸屏、线缆、PC安装支架等一系列配套产品。这些产品的推出不仅丰富了公司的产品线,也满足了客户多样化的需求。同时,公司还关注行业动态和市场需求变化,及时调整产品策略,确保产品始终保持竞争力。

BELDEN公司的发展小趣事

BELDEN公司的故事始于1902年,当Joseph C. Belden在美国芝加哥创立这家公司时,他怀揣着对电线电缆制造的深厚热情与独特见解。初创时期,公司致力于研发和生产高品质的电线电缆产品,很快便在市场中赢得了良好的声誉。经过多次试验,公司成功发明了“Beldenamel”绝缘材料,这种柔韧的珐琅绝缘材料为公司的成功奠定了坚实的基础。随着产品的不断优化和市场的逐步拓展,BELDEN逐渐在电子行业中崭露头角。

Abbotec Incorporated公司的发展小趣事

Abbotec Incorporated公司自成立以来,一直致力于电子技术的研发与创新。在某一年,公司研发团队成功开发出一款具有划时代意义的芯片,这款芯片在性能上大幅提升,同时降低了能耗。这一技术突破迅速引起了业界的关注,Abbotec因此获得了大量的订单,公司规模迅速扩大。

问答坊 | AI 解惑

全国大学生电子设计竞赛训练教程

群里朋友传的 共享下 本书是针对全国大学生电子设计竞赛特点和需要,为高等院校电子信息工程、通信工程、自动化、电气控制类专业学生编写的培训教材。全书共分8章,内容包括: 电子设计竞赛题目分析,电子设计竞赛基础训练,单元电子电路训练,单 ...…

查看全部问答>

嵌入式人才的发展方向,给从事嵌入式开发的同学指路(转)

     嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等。特别是随着消费家 ...…

查看全部问答>

如何使用Platform Build5.0江WinCE4.2build到CF 卡上??

如何使用Platform Build5.0江WinCE4.2build到CF 卡上?? 大侠们有谁知道的告知下阿 小弟先谢了…

查看全部问答>

关于在wince初始化中端口的问题

大家好,小弟想问一下, 在wince os跑起来后能否初始化INT0? 因我用读GPIO口的方式将INT0作为普通的I/O口来读取其状态(因为INT0与GPF0口复用), 读取完之后,我想把INT0设置为中断口? 想请教一下如何大家,如何在wince下初始化中端口? ( ...…

查看全部问答>

起航一号 djyos评估板简介

制作“起航一号”djyos评估板,是为了让大家有一个公共的、低成本的平台学习以及评估djyos,以便更好地推广djyos。 评估板的cpu选型,实际上是为djyos的si版本选择标准发布平台,没有追求“更快、更高、更强”的精神,而是以以下几点为原则: 1、适 ...…

查看全部问答>

物联网智能家居--如何往zigbee模块(CC2530)里下载程序

第一步:首先要打开针对C8051的IAR软件: 在file选项里找到open——workspace,接着根据你放协议栈的路径找到你需要的工程。 在上述图片中,你需要的工程在Projects中,打开后在zstack中找到Utilities , 在Utilities中找到SerialApp,这个文件夹 ...…

查看全部问答>

430F149下载器

如果用TI的LM3S811板子或者是MSP430 LaunchPad,它的仿真器能用于430F149下载吗?如果可以,是怎么用呢…

查看全部问答>

raw lwip 拔掉网线后再插上网线就连接不上了?

在学习raw lwip时,遇到以下几个问题: lm3s9b96作为服务器,拔掉网线后,pc机作为客户端就连接不上开发板了;lm3s9b96需重新上电后,pc机才能连接上。lm3s9b96作为客户端,pc机作为服务器时,开发板连续调用tcp_write,只有第一个能发送到pc机, ...…

查看全部问答>

多个单片机用485通信,主机怎么在访问从机的同时,其它从机处于待命状态?

本帖最后由 dontium 于 2015-1-23 11:33 编辑 对于485通信不是很了解,希望各位大神说一下,最好有程序说明一下主机对怎么对从机询问 …

查看全部问答>