380091044
发表于 2024-7-15 17:30:15
hsrzq 发表于 2024-7-15 15:11
1. 你参考的哪个例子?我感觉你参考的例子就有问题……或者是你理解错了参考的不对。
2. 一般不需要在我 ...
delay和OSTimeDly测试效果一样一样的,这是令我费解的地方,
我参考的就是官方给的这个例程,代码如下:
/******实时任务**********/
/**任务 A2 :每500ms,P2.2口翻转一次***/
void Task_A(void *p_arg)
{
if(p_arg);
while (1)
{
P22 = ~P22;
EA = 0;
OSCtxSw();
OSTimeDly(OS_TICKS_PER_SEC / 2);
}
hsrzq
发表于 2024-7-15 17:51:26
380091044 发表于 2024-7-15 17:30
delay和OSTimeDly测试效果一样一样的,这是令我费解的地方,
我参考的就是官方给的这个例程,代码如下: ...
你所有的任务里面都有OSCtxSw()吗?我强烈怀疑这就是问题的源泉,这把OS的任务调度整乱套了……
tzz1983
发表于 2024-7-15 19:24:53
本帖最后由 tzz1983 于 2024-7-15 19:28 编辑
这个应该是熊仔的STC8移植版.
我几个月前就提示过你了,可以用那个移植版本,
但不要学里面的例程, 他的例程是在证明一些特殊的东西.
(就是在EA=0时也可以切换任务这个功能.)
这是一个很不常用或都本不需要使用的功能. 所以他用了一些特殊的手法.
在你没有彻底了解UCOS前, 你最好忘记那个例程, 用正常的方式来使用OS的功能
tzz1983
发表于 2024-7-15 19:43:38
本帖最后由 tzz1983 于 2024-7-15 19:45 编辑
你的编思路也很奇怪, 读个键盘代码很复杂吗, 或者说很耗时吗, 为什么要单独搞个任务去读按键?
本来一个任务就可以做的事情, 分了好几个任务, 然后还搞不懂任务之间的关系.... 很难点透你啊
void Task_xxx(void *p_arg)
{
if(p_arg);
while (1)
{
static intjs=0;//用一个静态变量计数, 来记录当前状态已持续的时间.
int key;
key = ReadKeyboard(); //读键盘的值;
{
根据 key 和 js 的值做出决策, 改变或保持灯和声间. 或复位/改变 js 的值,
整个代码就这么完成了, 没必要读个键盘搞个任务, 一会挂起, 一会解除挂起. 有这个切换时间, 几次键盘都读出来了
}
js++;
OSTimeDly(5); // 5毫秒查询一次已经很快了, 你可以自己设定查询频率
}
}
hsrzq
发表于 2024-7-15 23:36:17
tzz1983 发表于 2024-7-15 19:24
这个应该是熊仔的STC8移植版.
我几个月前就提示过你了,可以用那个移植版本,
但不要学里面的例程, 他的例程 ...
我说这代码咋看咋别扭,原来果然是有“骚”操作……
问他参考的是哪个例程,一直也没直接说{:4_167:}
hsrzq
发表于 2024-7-15 23:39:43
380091044 发表于 2024-7-15 09:04
您说的对,我也总感觉自己感觉的不对,但是,各种测试后,发现,优先级高的任务就是不能及时切换过来,还 ...
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=9494&extra=page%3D2
几乎每一句都有注释,很适合看不懂代码的
380091044
发表于 2024-7-16 08:28:51
hsrzq 发表于 2024-7-15 17:51
你所有的任务里面都有OSCtxSw()吗?我强烈怀疑这就是问题的源泉,这把OS的任务调度整乱套了…… ...
没有,只有任务3语音播报有,我也尝试过把OSCtxSw()去掉,测试没有什么变化,我觉得这个东西可有可无,就暂时保留了,
380091044
发表于 2024-7-16 08:33:44
tzz1983 发表于 2024-7-15 19:24
这个应该是熊仔的STC8移植版.
我几个月前就提示过你了,可以用那个移植版本,
但不要学里面的例程, 他的例程 ...
感谢指点,我刚开始测试我的程序时,是没有使用里面的东西,后来发现自己根本搞不起来,算了,依葫芦画瓢,先测试玩起来,其他都和裸机程序一样,就是语音播报打断,实现不了状态机所能达到的效果,挂起恢复,这些我也不想用,不用,我也不知道如何处理才好。
380091044
发表于 2024-7-16 08:38:10
hsrzq 发表于 2024-7-15 23:36
我说这代码咋看咋别扭,原来果然是有“骚”操作……
问他参考的是哪个例程,一直也没直接说 ...
都怪我,不知道如何表达,我原想截图给你看的,后来想不如把相关代码贴出来更直接,哎,结果,还不如说是熊仔的STC32版本修改,我昨天看,官方已经把这个版本给撤销了,更换另一个程序DEMO上来了,这个确实不好用,有好用的资源推荐一下,感谢
hsrzq
发表于 2024-7-16 10:27:28
380091044 发表于 2024-7-16 08:38
都怪我,不知道如何表达,我原想截图给你看的,后来想不如把相关代码贴出来更直接,哎,结果,还不如说是 ...
你用Keil的学官方更新的那个DEMO就好了呀。
如果用开源工具sdcc的就用我移植的那个呀。