我正在使用Atom 32位开发MicroC。我声明了两个堆栈大小为0x100的任务(足够我的任务使用)。当我在我的一个任务中调用一个函数时,我检查它的if条件:
if (OSSchedLockNestingCtr > (OS_NESTING_CTR)0u)
{
*p_err = OS_ERR_SCHED_LOCKED;
return;
}即使是OSSchedLockNestingCtr == 0,代码也会进入!我检查esp,esp在堆栈表中,所以我没有堆栈溢出。即使条件为假,如何进入if分支?
发布于 2011-11-22 22:43:19
解决:我找到它了,中断函数是自动运行的(1秒内5次中断)当我一步一步地手动操作时,不知何故变量取了其他值(interrupt -> ISR ->将一些数据放回卡住的->中回到我的函数-> wierd -> :))。10倍于你们所有人
https://stackoverflow.com/questions/8217471
复制相似问题