中断:
GPIO_InitStruct.Pin = KEY_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;//因为你按键是1->0 GPIO_MODE_IT_RISING;
GPIO_InitStruct.Pull = GPIO_PULLUP;//内部上拉GPIO_NOPULL;
HAL_GPIO_Init(KEY_GPIO_Port, &GPIO_InitStruct);
HAL_NVIC_SetPriority(EXTI9_5_IRQn, 5, 0);
HAL_NVIC_EnableIRQ(EXTI9_5_IRQn);
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin==GPIO_PIN_9)
{
HAL_Delay(2);/*延时 消抖*/
if(RESET==HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin))//依旧是低电平 那就是真的中断
{
HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);//LED翻转
}
else/*异常电平抖动*/
{
}
}
}