stm32 hal 外部中断
时间: 2023-09-11 20:05:25 浏览: 130
STM32 HAL(Hardware Abstraction Layer)外部中断是通过配置中屏蔽寄存器、AF_EXTICRx寄存器以及NVIC寄存器来实现的。首先,需要配置中断屏蔽寄存器中的屏蔽位,允许外部中断请求通过。然后,通过AFIO_EXTICRx配置GPIO线上的外部中断/事件,并选择外部中断的触发边沿(上升沿、下降沿或两者都检测)。在NVIC中设置外部中断的优先级,并使能该中断。在软件中断/事件寄存器中将对应位写为1,触发外部中断。当外部中断发生后,在中断服务函数中,需要清除请求挂起寄存器中的对应位,即写1清除,以产生事件。
对于STM32 HAL外部中断的回调函数,可以使用HAL_GPIO_EXTI_Callback函数来处理。在该函数中,可以根据GPIO_Pin的值来执行相应的操作,比如LED的翻转。
如果想要配置一个外部EXTI线为事件模式来唤醒STM32,并进入睡眠模式,可以使用WFE指令。具体步骤是,配置一个外部EXTI线为事件模式,然后使用WFE指令进入睡眠状态。选择适当的睡眠模式,比如SLEEP-NOW微控制器立即进入睡眠模式。需要注意的是,在未开启外部中断(NVIC寄存器中未使能外部中断)的情况下进行配置。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [【STM32】HAL库-外部中断](https://blog.csdn.net/qq_45607873/article/details/124633942)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文