【STM32】HAL库——按键外部中断
·
前期准备:
- STM32CubeMX
- Proteus 8
- IDE Keil(MDK-ARM)
STM32CubeMX部分
1. 配置时钟
依旧是选择STM32F103C4系列芯片,选择高速外部时钟,配置晶振。
将HCLK设置为最大频率72MHz
2. 选择IO口
PA1、PA2选择GPIO_Output模式,用作点灯
PA3、PA4选择GPIO_EXTI模式,用作外部中断
3. 引脚模式设置
GPIO:
level:高电平
mode:推挽输出
是否上下拉:不上下拉
引脚速度:中
关于Output模式的配置上一章内容有,这里就不再详细操作了。
EXTI:
mode:下降沿触发
是否上下拉:不上下拉
4. 中断优先级管理设置
将line3和line4中断使能勾选
5. 工程管理设置
依旧是我推荐的几个选项,然后GENERATE CODE,STM32CubeMX部分完成。
MDK 5部分
打开工程,发现HAL_GPIO_EXTI_IRQHandler(中断服务函数) 在stm32f1xx_it.c文件下
接着右键HAL_GPIO_EXTI_IRQHandler(中断服务函数),点击Go To Definition Of " "进入此函数
此函数的作用是清除中断标志位,之后进入HAL_GPIO_EXTI_Callback(中断回调函数)
中断运行结束后不会立马退出,而是进入HAL_GPIO_EXTI_Callback(中断回调函数),处理完中断回调函数的事件后,再退出中断,所以我们一般都是将需要响应的事件代码写入中断回调函数中
继续进入HAL_GPIO_EXTI_Callback(中断回调函数)
在HAL_GPIO_EXTI_Callback(中断回调函数) 中写入响应程序:KEY1按下,LED1和LED2发光
KEY2按下,LED1和LED2熄灭
Proteus 8 部分
如图搭建电路
将.HEX文件放入单片机,最后点击左下角的仿真即可看到效果
QQ录屏20210617163004
更多推荐
已为社区贡献9条内容
所有评论(0)