概述
本章通过STM32CUBEIDE配置STM32F407的外部中断
原理
![](https://img-blog.csdnimg.cn/direct/3a24e74a37194535a2d6b2252001ba95.png)
如图所示,每个中断线对应9个中断源,即9个GPIO口,即可设置相应的上升沿触发、下降沿触发以及电平翻转触发,对应相应的外部中断触发。
IDE操作
![](https://img-blog.csdnimg.cn/direct/88bc895eae72481fab526efaf4f56af6.png)
![](https://img-blog.csdnimg.cn/direct/26d532c5e8e64084b9f96de3b62a1f0f.png)
/* EXTI interrupt init*/
HAL_NVIC_SetPriority(EXTI3_IRQn, 3, 0);
HAL_NVIC_EnableIRQ(EXTI3_IRQn);
HAL_NVIC_SetPriority(EXTI4_IRQn, 3, 0);
HAL_NVIC_EnableIRQ(EXTI4_IRQn);
通常中断函数都需要在库函数中的回调函数里进行编写,回调函数以及其作用都在以下的文件里
中断函数编写:
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin == GPIO_PIN_4)
{
Inverter_DRV_count++;
if(Inverter_DRV_count==1)
{
Start_flag=1;
HAL_GPIO_WritePin(GPIOF,GPIO_PIN_14,GPIO_PIN_SET);
}
if(Inverter_DRV_count==2)
{
Start_flag=0;
Inverter_DRV_count=0;
HAL_GPIO_WritePin(GPIOF,GPIO_PIN_14,GPIO_PIN_RESET);
}
}
}
函数的功能为,每当PG4按下时,则触发外部中断,标志位Start_flag实现0/1互换,此程序可用于某些算法的外部启停中断。