在不完全手册的外部中断实验中,我看到了其中有介绍中断函数服务格式为
[mw_shl_code=c,true]void EXTI0_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line0)!=RESET)
{
中断逻辑……
EXTI_ClearITPendingBit(EXTI_Line0);
}
}[/mw_shl_code]
但是在exti.c程序中我看到了是这样写的程序:
[mw_shl_code=c,true]void EXTI0_IRQHandler(void)
{
delay_ms(10); //消抖
if(WK_UP=1)
{
LED0=!LED0;
LED1=!LED1;
}
EXTI_ClearITPendingBit(EXTI_Line0); //清除EXTI0线[/mw_shl_code]
[mw_shl_code=c,true]于是我想自己按照格式改写下程序,改为这个样子:[/mw_shl_code]
[mw_shl_code=c,true]void EXTI0_IRQHandler(void)
{
delay_ms(10); //消抖
if(EXTI_GetITStatus(EXTI_Line0)==1)
{
LED0=!LED0;
LED1=!LED1;
printf("OK\n");
}
EXTI_ClearITPendingBit(EXTI_Line0); //清除EXTI0线路挂起位
}
void EXTI9_5_IRQHandler(void)
{
delay_ms(10); //消抖
if(EXTI_GetITStatus(EXTI_Line5)==0)
{
LED0=!LED0;
printf("OK\n");
}
EXTI_ClearITPendingBit(EXTI_Line5); //清除LINE5上的中断标志位
}
void EXTI15_10_IRQHandler(void)
{
delay_ms(10); //消抖
if(EXTI_GetITStatus(EXTI_Line15)==0)
{
LED1=!LED1;
printf("OK\n");
}
EXTI_ClearITPendingBit(EXTI_Line15); //清除LINE15线路挂起位
}
但是发现按下wakeup的时候灯光闪烁总是不对,按下key0和key1的时候不闪烁,没有反应请问这是怎么回事?
[/mw_shl_code]
|