我正在使用Atom 32bit上的MicroC。
我用0x100堆栈大小声明了2个任务(对于我的任务来说已经足够了)。当我在我的一个任务中调用一个函数时,我检查它的if
条件:
if (OSSchedLockNestingCtr > (OS_NESTING_CTR)0u)
{
*p_err = OS_ERR_SCHED_LOCKED;
return;
}
即使OSSchedLockNestingCtr == 0
,代码也会进入!我检查esp,esp在堆栈表中,所以我没有堆栈溢出。即使条件为假,如何进入if
分支?
答案 0 :(得分:0)
已解决:我发现它,当我逐步进行手动操作时,中断功能自动运行(1秒内5次中断),不知何故变量正在采取其他值(中断 - > ISR - >放置一些数据在卡住 - >回到我的功能 - > wierd值:))。 10倍于你们所有人