写了一段程序用按键去控制接触器(YX、BZ)吸合断开,想通过定时中断去处理延时问题,但是仿真只有第一次按按钮的时候有延时效果,请问我的中断函数哪里错了吗?
主程序:
while(1)
{
t=KEY_Scan(1); //设置为MODE1,支持连按模式
switch(t)
{
case KEYUP_PRES: //如果KEY0=1且WKUP=1则输出上行信号;KEY0具有优先级,如果KEY0=1则取消KEY1下行信号(避免同时按导致变频器同时输出上下行)
OUT_YX=1; //主接触器吸合
YXADZ=1;
if (BZADZ==1) //延时500ms,打开抱闸接触器
{
OUT_BZ=1; //抱闸接触器吸合
BZADZ=0;
}
break;
case KEYDOWN_PRES: //如果=1输出下行信号;
OUT_YX=1; //主接触器吸合
YXADZ=1;
if (BZADZ==1) //延时500ms,打开抱闸接触器
{
OUT_BZ=1; //抱闸接触器吸合
BZADZ=0;
}
break;
default:
OUT_BZ=0;
BZATZ=1;
if(YXATZ==1)
{
OUT_YX=0;
YXATZ=0;
}
break;
}
}
延时函数:
void TIM3_IRQHandler(void) //TIM3中断
{
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查指定的TIM中断发生与否:TIM 中断源
{
if(YXADZ==0) i=0;
if(YXADZ==1) i++;
if(i>=100)
{
BZADZ=1;
YXADZ=0;
i=0;
}
if(BZATZ==0) j=0;
if(BZATZ==1) j++;
if(j>=100)
{
YXATZ=1;
BZATZ=0;
j=0;
}
TIM_ClearITPendingBit(TIM3, TIM_IT_Update); //清除TIMx的中断待处理位:TIM 中断源
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
好像如果下载程序直接跑不仿真试就没问题,但是连上仿真器就经常弹出这个BUG。
一周热门 更多>