奇怪的是条件

时间:2011-11-21 19:34:44

标签: c embedded

我正在使用Atom 32bit上的MicroC。 我用0x100堆栈大小声明了2个任务(对于我的任务来说已经足够了)。当我在我的一个任务中调用一个函数时,我检查它的if条件:

if (OSSchedLockNestingCtr > (OS_NESTING_CTR)0u) 
{ 
   *p_err = OS_ERR_SCHED_LOCKED;
   return;
}

即使OSSchedLockNestingCtr == 0,代码也会进入!我检查esp,esp在堆栈表中,所以我没有堆栈溢出。即使条件为假,如何进入if分支?

1 个答案:

答案 0 :(得分:0)

已解决:我发现它,当我逐步进行手动操作时,中断功能自动运行(1秒内5次中断),不知何故变量正在采取其他值(中断 - > ISR - >放置一些数据在卡住 - >回到我的功能 - > wierd值:))。 10倍于你们所有人