按键去抖程序如下: (实验时计划直接放进中断程序中
uint8_t KEY_Debounce(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
assert_param(IS_KEY_GPIO_PORT(GPIOx));
assert_param(IS_KEY_GPIO_PIN(GPIO_Pin));
Delay_ms(20);
if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == 0)
{
while(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == 0);
return 0;
}
else
return 1;
}
it.c文件的中断服务程序如下:
void EXTI4_15_IRQHandler(void)
{
// if(EXTI_GetITStatus(EXTI_Line6) != RESET)
// {
// if(KEY_Debounce(KEY_PORT,KEY1_PIN))
// GPIO_WriteBit(GPIOA, LED1_PIN,
// (BitAction)((1-GPIO_ReadOutputDataBit(LED_PORT, LED1_PIN))));
// EXTI_ClearITPendingBit(EXTI_Line6);
// }
if(EXTI_GetITStatus(EXTI_Line7) != RESET)
{
GPIO_WriteBit(GPIOA, LED2_PIN,
(BitAction)((1-GPIO_ReadOutputDataBit(LED_PORT, LED2_PIN))));
EXTI_ClearITPendingBit(EXTI_Line7);
}
}
下半段未加去抖,按键亮灯没问题,上半段加了之后,两个按键都不行了。刚开始学,单步运行搞不清,请大侠帮忙先看看,谢谢 |