STM32
登录
直播中
lique
13年用户
884经验值
擅长:模拟与电源
私信
关注
[问答]
如何用cubeMX完成按键的外部中断控制灯的亮灭?
开启该帖子的消息推送
stm32cubemx
如何用cubeMX完成按键的外部中断控制灯的亮灭?
回帖
(1)
李恩佳
2021-11-17 11:07:36
一、什么是外部中断?
外部中断通常是 GPIO 的电平跳变引起的中断。在 stm32 中,每一个 GPIO 都可以作为外部中断的触发源。
外部中断支持 GPIO 的三种电平跳变模式。
1.上升沿中断:当 GPIO 的电平从低电平跳变成高电平时,引发外部中断。
2.下降沿中断:当 GPIO 的电平从高电平跳变成低电平时,引发外部中断。
3.上升沿和下降沿中断:当 GPIO 的电平从低电平跳变成高电平和从高电平跳变成低电平时,都能引发外部中断。
二、操作步骤
1.在cube中配置外部中断
这里我们使用按键KEY0,从原理图中可以看到它的的引脚是PC5
所以我们将PC5设置为外部中断模式
将 GPIO 模式设置为下降沿触发的外部中断,上下拉电阻设置为上拉电阻,最后设置用户标签为 KEY0。
使能外部中断
因为我们需要一个灯,这里使用LED0,将LED0初始化
从原理图可以看到PA8引脚是LED0
初始化LED0,让LED0刚开始的状态是亮着的,设置用户标签为LED0,其他保持默认
生成代码(如果这个步骤不会可以参考我的另一篇文章
点击此处
)
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
翻转对应引脚的电平,这里我们需要翻转LED0的电平
代码如下:
HAL_GPIO_TogglePin(GPIOA,LED0_Pin);
3.主函数
代码如下:
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){ HAL_GPIO_TogglePin(GPIOA,LED1_Pin);}
三、效果展示
按键没有按下的时候亮
按下按键灯灭
再按灯亮
这样按键就可以控制灯的亮灭
部分内容改写自大疆(侵权立删)
一、什么是外部中断?
外部中断通常是 GPIO 的电平跳变引起的中断。在 stm32 中,每一个 GPIO 都可以作为外部中断的触发源。
外部中断支持 GPIO 的三种电平跳变模式。
1.上升沿中断:当 GPIO 的电平从低电平跳变成高电平时,引发外部中断。
2.下降沿中断:当 GPIO 的电平从高电平跳变成低电平时,引发外部中断。
3.上升沿和下降沿中断:当 GPIO 的电平从低电平跳变成高电平和从高电平跳变成低电平时,都能引发外部中断。
二、操作步骤
1.在cube中配置外部中断
这里我们使用按键KEY0,从原理图中可以看到它的的引脚是PC5
所以我们将PC5设置为外部中断模式
将 GPIO 模式设置为下降沿触发的外部中断,上下拉电阻设置为上拉电阻,最后设置用户标签为 KEY0。
使能外部中断
因为我们需要一个灯,这里使用LED0,将LED0初始化
从原理图可以看到PA8引脚是LED0
初始化LED0,让LED0刚开始的状态是亮着的,设置用户标签为LED0,其他保持默认
生成代码(如果这个步骤不会可以参考我的另一篇文章
点击此处
)
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
翻转对应引脚的电平,这里我们需要翻转LED0的电平
代码如下:
HAL_GPIO_TogglePin(GPIOA,LED0_Pin);
3.主函数
代码如下:
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){ HAL_GPIO_TogglePin(GPIOA,LED1_Pin);}
三、效果展示
按键没有按下的时候亮
按下按键灯灭
再按灯亮
这样按键就可以控制灯的亮灭
部分内容改写自大疆(侵权立删)
举报
更多回帖
rotate(-90deg);
回复
相关问答
stm32cubemx
如何利用STM32
CubeMX
按键
实现
外部
中断
控制
LED
灯
亮
灭
?
2021-11-17
1495
如
何用
独立
按键
作为
外部
中断
的触发信号来实现LED的
亮
灭
?
2021-10-11
2010
如何利用
外部
中断
来实现
按键控制
LED
灯
的
亮
灭
?
2021-11-24
2781
如何使用Clion和
CubeMx
去
控制
led
灯
的
亮
灭
呢
2021-11-16
1078
外部
中断
+
按键
2017-01-05
5888
如何通过检测
按键
状态来
控制
LED
灯
亮
灭
?
2021-10-28
2550
如何利用信号量
控制
LED的
亮
灭
2021-02-23
3094
如何利用Stm32
控制
小
灯
的
亮
灭
?
2021-11-17
1049
怎样使用STM32 CubeIDE软件工具
完成
控制
板上的LED
灯
亮
灭
操作呢
2021-11-16
1425
怎样通过
按键
去
控制
LED
灯
的
亮
灭
2021-08-12
1942
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
英国威廉希尔公司网站
william hill官网 版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分