STM32新⼿必看简单⼏步⽤cubeMX完成按键的外部中断控制灯的亮灭
(STM32F103RCT)erd>moni
⽂章⽬录
⼀、什么是外部中断?
外部中断通常是 GPIO 的电平跳变引起的中断。在 stm32 中,每⼀个 GPIO 都可以作为外部中断的触发源。
外部中断⽀持 GPIO 的三种电平跳变模式。
1.上升沿中断:当 GPIO 的电平从低电平跳变成⾼电平时,引发外部中断。
lol是什么意思2.下降沿中断:当 GPIO 的电平从⾼电平跳变成低电平时,引发外部中断。
3.上升沿和下降沿中断:当 GPIO 的电平从低电平跳变成⾼电平和从⾼电平跳变成低电平时,都能引发外部中断。
西班牙与意大利⼆、操作步骤
1.在cube中配置外部中断
这⾥我们使⽤按键KEY0,从原理图中可以看到它的的引脚是PC5
所以我们将PC5设置为外部中断模式
将 GPIO 模式设置为下降沿触发的外部中断,上下拉电阻设置为上拉电阻,最后设置⽤户标签为 KEY0。
使能外部中断
因为我们需要⼀个灯,这⾥使⽤LED0,将LED0初始化
从原理图可以看到PA8引脚是LED0
初始化LED0,让LED0刚开始的状态是亮着的,设置⽤户标签为LED0,其他保持默认
⽣成代码(如果这个步骤不会可以参考我的另⼀篇⽂章)vocal什么意思
2.介绍主要函数
1.HAL_GPIO_EXTI_Callback
每当产⽣外部中断时,程序⾸先会进⼊外部中断服务函数。在 stm32f4xx_it.c 中,可以找到函数 EXTI0_IRQHandler,它通过调⽤函数HAL_GPIO_EXTI_IRQHandler 对中断类型进⾏判断,并对涉及中断的寄存器进⾏处理,在处理完成后,它将调⽤中断回调函数
HAL_GPIO_EXTI_Callback,在中断回调函数中编写在此次中断中需要执⾏的功能。
代码如下:
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
2.HAL_GPIO_TogglePin
google翻译工具翻转对应引脚的电平,这⾥我们需要翻转LED0的电平
代码如下:
圣诞节祝福语英文HAL_GPIO_TogglePin(GPIOA,LED0_Pin);
3.主函数
代码如下:
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
HAL_GPIO_TogglePin(GPIOA,LED0_Pin);
}
三、效果展⽰
pity
halloween day按键没有按下的时候亮
按下按键灯灭
earthcam
再按灯亮