## EXTI 外部中断 STM32F103ZET6 正点原子 PA0 Wakeup KEY_UP 外接3.3 pulldown PE2 KEY2 外接3.3 pulldown PE3 KEY1 外接地 pullup PE3 KEY1 PE4 KEY0 #### exti.h .c ```C void MX_EXTI_Init(void); void EXTI0_IRQHandler(void); void EXTI2_IRQHandler(void); void EXTI3_IRQHandler(void); void EXTI4_IRQHandler(void); // 主要为配置模式不同,中断 上升沿 GPIO_InitStruct.Pin = KEY2_Pin|KEY1_Pin|KEY0_Pin; GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); HAL_NVIC_SetPriority(EXTI0_IRQn, 0, 0); HAL_NVIC_EnableIRQ(EXTI0_IRQn); ``` ```C void EXTI0_IRQHandler(void) { HAL_GPIO_EXTI_IRQHandler(KEY_UP_Pin); } ``` #### main.c 调用 MX_EXTI_Init() 初始化 #### 回调 void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin); void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){ if(GPIO_Pin == KEY_UP_Pin){/* KEY */ /* 翻转LED */ DS0_Toggle(); } } #### 加入makefile exti.c