向大家请教:
最近LZ在用STM32做一个RTC实时时钟,设定了三种模式:实时时钟、设定闹钟、调整实时时钟;按键按下KEY2,切换模式;按键按下KEY1,设定闹钟和调整实时时钟两个模式下时和分闪烁位右移;按下KEY0,闪烁的时或分加1调整时间。但现在遇到了一个问题是:我在外部中断处理函数void EXTI15_10_IRQHandler闪烁和加1的功能的程序如下:
void EXTI15_10_IRQHandler(void)
{
delay_ms(10); //消抖
//if(sound_en==1&&KEY1==0) sound_key=1;
//if(((~KEY1)||(~KEY0))&&(alarm==1))
// alarm=0;
if(~KEY0)
{。。。。。
}
else if(~KEY1)//闪烁位右移
{
if(KEY1==0)//按键1
{
if((mode==1)||(mode==2))
{
flicker++;
if(hour_flicker==1)
{
hour_flicker=0;min_flicker=1;//右移,若原先调时时钟标志闪烁,则现在调分标志闪烁
}
else if(min_flicker==1)
{
hour_flicker=1;min_flicker=0;
}
}
}
}
EXTI->  R=1<<13; //清除LINE15上的中断标志位
EXTI->  R=1<<15; //清除LINE15上的中断标志位
}
现在的问题是:我如果在if里面写加1,else if里面写右移,加1功能就可以用,右移功能不行;如果在if里面写右移,else if里面写加1,右移功能就可以用,加1就不行。
请教各位,谢谢!
|