/********************************** * 外部中断处理模块 * 功能:处理按键的外部中断,设置相应的标志位 * 说明: * 1. 处理KEY1、KEY2、KEY3的外部中断 * 2. 当按键被按下时,设置相应的标志位 * 3. 清除中断标志位,防止重复触发 **********************************/ #include "main.h" #include "exti.h" // 按键标志变量 typedef unsigned char u8; u8 key1_flag = 0; // KEY1按键标志,1表示按键被按下 u8 key2_flag = 0; // KEY2按键标志,1表示按键被按下 u8 key3_flag = 0; // KEY3按键标志,1表示按键被按下 /** * @brief EXTI2中断处理函数 * @note 处理KEY1的外部中断,PE2, EXTI_Line2 */ void EXTI2_IRQHandler(void) { // 检查KEY1外部中断标志 if(EXTI_GetITStatus(KEY_1_EXTI_LINE) != RESET) { key1_flag = 1; // 设置KEY1按键标志 EXTI_ClearITPendingBit(KEY_1_EXTI_LINE); // 清除中断标志位 } } /** * @brief EXTI3中断处理函数 * @note 处理KEY2的外部中断,PE3, EXTI_Line3 */ void EXTI3_IRQHandler(void) { // 检查KEY2外部中断标志 if(EXTI_GetITStatus(KEY_2_EXTI_LINE) != RESET) { key2_flag = 1; // 设置KEY2按键标志 EXTI_ClearITPendingBit(KEY_2_EXTI_LINE); // 清除中断标志位 } } /** * @brief EXTI4中断处理函数 * @note 处理KEY3的外部中断,PE4, EXTI_Line4 */ void EXTI4_IRQHandler(void) { // 检查KEY3外部中断标志 if(EXTI_GetITStatus(KEY_3_EXTI_LINE) != RESET) { key3_flag = 1; // 设置KEY3按键标志 EXTI_ClearITPendingBit(KEY_3_EXTI_LINE); // 清除中断标志位 } }