如下两个函数:第二行的语句跑起来没有问题,但是只要加上第一句就会跑进ILLEGAL ISR里面去,怎么回事?
// statemachine.timer(&statemachine);//illegal
pro.timer1(&pro);
Linda:您好!
请问第一句的函数里具体执行了哪些操作?
如下两个函数:第二行的语句跑起来没有问题,但是只要加上第一句就会跑进ILLEGAL ISR里面去,怎么回事?
// statemachine.timer(&statemachine);//illegal
pro.timer1(&pro);
user4525004:
回复 Linda:
函数体如下:
void StateMachineTimer(STATEMACHINE_DATA *p){ if(p->SM_Timer<0xfffffff0) p->SM_Timer++; if(p->Vdc>50) { if(p->MainRlyOnTimer<60000) p->MainRlyOnTimer++; else p->MainRlyOnTimer=0; p->MainRlyOffTimer=0; } else { if(p->MainRlyOffTimer<60000) p->MainRlyOffTimer++; else p->MainRlyOffTimer=0; p->MainRlyOnTimer=0; }
}
如下两个函数:第二行的语句跑起来没有问题,但是只要加上第一句就会跑进ILLEGAL ISR里面去,怎么回事?
// statemachine.timer(&statemachine);//illegal
pro.timer1(&pro);
Linda:
回复 user4525004:
您好!
建议看一下Flash wait states相关寄存器的设置是否有低于数据手册规定的最小值。
另外建议到以下网址下载最新的编译器再试试看:
processors.wiki.ti.com/…/Compiler_Releases