嵌入式技术论坛
直播中

最强海贼王

8年用户 1335经验值
擅长:MEMS/传感技术
私信 关注
[问答]

在学习使用SMALL RTOS时发现一个BUG如何解决呢?

最近在学习使用 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!

回帖(2)

mintsy

2023-2-28 14:05:55
将此函数改用另一个函数 OS_TaskSuspend(TaskID); 并在其后加入任务切换函数 OSSched(); 便能工作正常。
举报

风来吴山

2023-2-28 14:06:06
假设编一个串行通信程序,通信协议为:数据包长度为 NBYTE,起始字节为 STARTBYTE1、STARTBYTE2,最后一个字节为校验和,中间不可能连续出现 STARTBYTE1、STARTBYTE2。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分