登录
STM32CubeMX的外部中断的使用
撞上电子
2023-11-26
858
我要咨询
撞上电子
165 内容
32w+阅读
49粉丝
+关注
描述
啥是中断?中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。
举个例子:
类比一下
在实际的代码中,HAL库的中断处理较为复杂:startup_stm32f103xb.s通过汇编注册了中断处理函数EXTI1_IRQHandler(),在stm32f1xx_it.c中,EXTI_IRQHandler()引用了HAL库的处理函数HAL_GPIO_EXTI_IRQHandler(),其功能主要为判断具体的中断原因,并调用对应的中断回调函数:HAL_GPIO_EXTI_Callback()。用户可以自己重声明中断回调函数(HAL_GPIO_EXTI_Callback()),在其中写入自己的用户逻辑,不出意外的话,你这时候可能会有点懵。上图!
中断处理函数写在EXTI_IRQHandler()或HAL_GPIO_EXTI_Callback()皆可,不过HAL_GPIO_EXTI_Callback()需要重新声明,比如:
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){ if(HAL_GetTick()-t>30) { if(GPIO_Pin == GPIO_PIN_1) { duty_cycle=duty_cycle+100; __HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_4,duty_cycle); } if(GPIO_Pin == GPIO_PIN_2) { duty_cycle=duty_cycle-100; __HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_4,duty_cycle); } } t=HAL_GetTick();}
对于代码的意思不必理会,只需知道这些是自己按需求写的,下面开始连接硬件:
以下是实操工程:
1,配置引脚
2,使能外部中断
3,点击右上角GENERATE CODE生成代码
Hal_GPIO_TogglePin()这个函数可以反转引脚电平,以控制小灯亮灭,多加的那几行代码用来做一个简单的消抖,然后编译,下载。如果没出问题的话,每按一次按键,灯都会改变一次亮灭状态,上面用的是xxxit.c中的Handler函数,下面试一试Callback函数,注释掉刚才加的代码,在main.c中添加如下代码:
编译,下载,运行,效果应该跟刚才一样,下面试一下TIM。
搞完后,小灯应该每秒闪烁5次。注意:
中断里不要使用延时函数Hal_Delay()
TIM中断要手动开启(Hal_TIM_Base_Start_IT())
打开APP阅读更多精彩内容
点击阅读全文
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
相关推荐
STM32
程序
机器
使用
STM32cubemx
的
外部
中断
只能触发一次的原因?
2024-05-07
0
STM32CubeMx
教程有人要吗?
2019-09-08
0
STM32CubeMx
外部
中断
基本使用方法
2021-01-14
0
浅析
STM32CubeMx
外部
中断
实验
2021-08-13
0
STM32CubeMx
配置
外部
中断
简介
2021-08-13
0
STM32CubeMx
外部
中断
配置的过程是怎样的?
2021-11-16
0
怎么实现基于
STM32CubeMX
的
外部
中断
设计?
2021-11-17
0
如何利用
STM32CubeMX
外部
中断
实现按键按一次变化一次?
2021-11-17
0
基于
STM32CubeMX
的
外部
中断
设计步骤有哪些呢
2021-11-17
0
基于
STM32CubeMx
的
外部
中断
设计步骤
2022-01-14
0
STM32
中断
系统
2021-11-30
434
第二节:
外部
中断
学习(用
CubeMX
学习
STM32
)
2021-12-05
651
STM32CUBEMX
开发GD32F303(15)----
外部
中断
EXTI
2023-07-26
1289
全部
0
条评论
快来发表一下你的评论吧 !
发送
登录/注册
×
20
完善资料,
赚取积分