/*配置ARM_KEY引脚: PB9 */
GPIO_InitStruct.Pin = GPIO_PIN_9;
GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;//下降沿触发检测的外部中断模式
GPIO_InitStruct.Pull = GPIO_PULLUP;//
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
/* 外部中断初始化*/
HAL_NVIC_SetPriority(EXTI9_5_IRQn, 15, 0); //设置中断的优先级。
HAL_NVIC_EnableIRQ(EXTI9_5_IRQn);// 在NVIC中断控制器中启用设备特定的中断。
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
static int led_work_status = 0;
HAL_Delay(10);
if(ARM_KEY_STATE == KEY_DOWN){
led_work_status += 1;
if(led_work_status > 2)led_work_status = 0;
}
switch(led_work_status){
case 0:
LED_RED_ON;
LED_GREEN_OFF;
LED_BLUE_OFF;
break;
case 1:
LED_RED_OFF;
LED_GREEN_ON;
LED_BLUE_OFF;
break;
case 2:
LED_RED_OFF;
LED_GREEN_OFF;
LED_BLUE_ON;
break;
default:
break;
}
__HAL_GPIO_EXTI_CLEAR_FLAG(GPIO_PIN_9); //清除EXTI的行挂起标志。