// PE4 下降沿触发外部中断
gi.Pin = GPIO_PIN_4;
gi.Mode = GPIO_MODE_IT_FALLING; // 下降沿触发
gi.Pull = GPIO_PULLUP; // 默认高,按下拉低
HAL_GPIO_Init(GPIOE, &gi);
HAL_NVIC_SetPriority(EXTI4_IRQn, 1, 0);
HAL_NVIC_EnableIRQ(EXTI4_IRQn);
volatile uint8_t alarm_flag = 0;
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){
if(GPIO_Pin == GPIO_PIN_4){
alarm_flag = 1; // ISR 只置标志,不做事
}
}
// 主循环:
if(alarm_flag){ alarm_flag = 0; /* 处理报警逻辑 */ }