最近在学习使用 SMALL RTOS 时发现一个 BUG。任务在调用系统等待函数 OSWait(K_TMO | K_SIG,x) 后,不能在延时 x 个 ticks 后被唤醒。分析了一下原因如下:
在 OS_CORE.C uint8 OSWait(uint8 typ, uint8 ticks) small 中,
case (K_TMO | K_SIG): 中执行了函数 OSTaskSuspend(OSTaskID);
( OS_CORE.C 第 549 行)而此函数将延时值改为了 0!
更多回帖