EDA365电子论坛网
标题:
在学习使用 SMALL RTOS 时发现一个 BUG
[打印本页]
作者:
Maskman
时间:
2023-1-9 09:59
标题:
在学习使用 SMALL RTOS 时发现一个 BUG
最近在学习使用 SMALL RTOS 时发现一个 BUG。任务在调用系统等待函数 OSWait(K_TMO | K_SIG,x) 后,不能在延时 x 个 ticks 后被唤醒。分析了一下原因如下:
* E1 e. L' r- l) T" ^# {
在 OS_CORE.C uint8 OSWait(uint8 typ, uint8 ticks) small 中,
" m4 V) e" y) h
case (K_TMO | K_SIG): 中执行了函数 OSTaskSuspend(OSTaskID);
0 Z4 T, U! l+ b! H5 J1 ?5 l
( OS_CORE.C 第 549 行)而此函数将延时值改为了 0!
$ Y! Z7 m E5 o0 B$ N" R7 A
. V: r1 s$ G# S6 Z: E+ n, m# b
作者:
Ele_insect
时间:
2023-1-9 10:52
将此函数改用另一个函数 OS_TaskSuspend(TaskID); 并在其后加入任务切换函数 OSSched(); 便能工作正常。
作者:
风吹过后
时间:
2023-1-9 13:24
假设编一个串行通信程序,通信协议为:数据包长度为 NBYTE,起始字节为 STARTBYTE1、STARTBYTE2,最后一个字节为校验和,中间不可能连续出现 STARTBYTE1、STARTBYTE2。
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2