STM32外部中断解析
@TOC
前言
本篇文章将带大家了解STM32F103的外部中断。
一、外部中断是什么
外部中断是单片机实时地处理外部事件的一种内部机制。当某种外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理;中断处理完毕后.又返回被中断的程序处,继续执行下去。
二、STM32F103的外部中断
外部中断一共有20条中断线。
通过观察发现不同组的相同引脚号的引脚连接到了相同的外部中断线上。
其中
外部中断线 EXTI16连接到PVD输出。
外部中断线 EXTI17连接到RTC警告事件。
外部中断线 EXTI18连接到USB唤醒事件。
外部中断线 EXTI19连接到ETH唤醒事件。
外部中断既可以选择上升沿也可以选择下降沿,也可以同时使用这两个组成双边沿触发。
三、外部中断的中断号
在stm32f103xe.h里面我们可以看到外部中断及其他中断的中断号。
不是每一个中断线都有一个中断号,有的中断线是共用一个中断号的。
比如EXTI15_10_IRQn = 40
外部中断线10到15就是共用40这个中断号的。
四、HAL库的外部中断初始化流程
在stm32f1xx_hal_exti.c里面我们可以看到使用外部中断的方法。
在stm32f1xx_hal_gpio.c里面我们可以看到引脚想要被配置为外部中断需要做的设置。
使用HAL_NVIC_SetPriority()这个函数设置外部中断优先级。
使用HAL_NVIC_EnableIRQ()这个函数使能中断。
这里我们还需要对void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)这个函数进行重写,_weak代表这个函数是虚函数我们可以对他进行重写,处理我们自己的一些逻辑。
总结上面内容:
外部中断初始化流程:
1.使用HAL_NVIC_SetPriority设置外部中断的优先级
2.使用HAL_NVIC_EnableIRQ使能外部中断
3.重定向中断服务函数
4.在中断服务函数中调用HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)然后重定向回调函数void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
总结
本篇文章的讲解就到这里了,想要系统学习STM32的小伙伴可以找我一起交流。
下一篇文章将讲解使用外部中断配置按键。
- 点赞
- 收藏
- 关注作者
评论(0)