【STM32】中断 - 指南
2025-12-02 14:30 tlnshuju 阅读(0) 评论(0) 收藏 举报做了两个小任务后重新回顾中断,以下使两个项目的链接,中断回调函数经常被使用,要深刻理解它的意义.另外如果有时间,会在写一篇HAL库的名称介绍,感谢支持就是这
电动车报警系统
https://blog.csdn.net/2301_76153977/article/details/154188748?spm=1001.2014.3001.5501
智能排队控制系统
https://blog.csdn.net/2301_76153977/article/details/154238447?spm=1001.2014.3001.5501
本篇将围绕三个大版块并结合上面两个小项目的经验来讲述中断
1 什么是中断
中断是单片机正在执行程序时,由于内部或外部事件的触发,打断当前程序,转而去处理这一事件,当处理结束后再回到原来被打断的地方继续执行原程序的过程。
systick模拟多线程实验时,为什么两个小灯不同频率闪烁的代码写在中断服务函数里,就能实现功能呢?
答:SysTick 通常配置为每 1ms 产生一次中断
每次中断时,这个函数自动被调用,执行完中断软件再回到断点
函数内部维护两个任务的计时器,完成:
- 任务1:每秒执行一次(1000ms)
- 任务2:每0.5秒执行一次(500ms)
在main函数的HAL_Init()函数中默认设置的是每过1ms调用一下中断函数systick_isr(),相当于每过1ms都会检测task1和task2的cnt计数情况。就是每过1ms调用一次中断函数systick_isr(),这1ms后就实现systick_isr()中1000ms的led1和500ms的led2闪烁
2 为什么要中断
2.1 中断的意义
中断的主导意义在于提高CPU的效率,而不会一直占用CPU,实现对突发事件的实时处理,以及实现应用的并行化和嵌入式系统进程之间的切换。相较于轮询方式(即按照一定的频率和周期不断地检测某些事件的发生),中断在处理一些偶然发生的事情时效率更高。
- 在链接1中,当振动传感器感受到振动时,PA4收到低电平,用HAL_GPIO_ReadPin读PA4,若是是低电平0(GPIO_PIN_RESET),则标志位为1,此代码在中断回调函数中实现
- 在链接2中,通过中断建立红外传感器功能,即倘若PB4是低电平,则为检测到有人,此代码也在中断回调函数中实现
2.2 中断执行流程
3 STM32中断
3.1 函数名词解释
| HAL_NVIC_SetPriority | 设置中断线的优先级 | HAL_NVIC_SetPriority(EXTI15_10_IRQn, 2, 0); // 设置EXTI15_10中断线的优先级 |
| HAL_NVIC_EnableIRQ | 使能中断 | HAL_NVIC_EnableIRQ(EXTI15_10_IRQn); // 使能中断 |
| HAL_GPIO_EXTI_IRQHandler | 处理中断请求 | HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_12); |
| HAL_GPIO_EXTI_Callback | EXTI线路检测回调 | void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) |
中断服务函数HAL_GPIO_EXTI_IRQHandler会自动调用中断回调函数HAL_GPIO_EXTI_Callback,
看链接1的一部分代码
void EXTI15_10_IRQHandler(void)
{
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_12);
}
对于上面代码,结合HAL库定义,意思是先检查指定的EXTI中断线是否被声明,即是否拿到12号中断线,如果它不为0,清除12号中断线,调用关于12引脚的中断回调函数
常用的函数有这几种,不要慌,下面将会讲到它们之间的关系,和什么时候调用~
3.2 STM32中断框图
3.2.1 NVIC
是STM32中的中断控制器。它负责管理和协调处理器的中断请求,是STM32中处理异步事件的要紧机制。


3.2.2 EXTI
EXTI 是External Interrupt的缩写,表示外部中断事件控制器。

a AFIO
AFIO 是Alternate Function Input/Output的缩写,表示复用作用 IO,主要用于实现 I/O 端口的复用能力以及外部中断的控制。
STM32上有很多 I/ O口以及内置外设(如I2C、ADC、ISP、USART等)。为了节省引出管脚的数量,这些内置外设通常与 I/O口共用管脚,即 I/O 管脚具有复用功能。例如,一个 GPIO 管脚除了可以作为普通的I/O端口外,还可以被复用为某个内置外设的功能引脚。

3.3 中断配置流程



浙公网安备 33010602011771号