| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- /**********************************
- * 外部中断处理模块
- * 功能:处理按键的外部中断,设置相应的标志位
- * 说明:
- * 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); // 清除中断标志位
- }
- }
|