[uCOS/RTOS] 请教大家一个UCOS-II的问题

[复制链接]
2782|16
 楼主| 日月盟约 发表于 2013-11-9 13:03 | 显示全部楼层 |阅读模式
关于UCOS的延时函数问题,情况是这样的,我用UCOS操作系统控制LED亮灭,就是一个很简短的小程序,只创建一个任务,如果在创建的任务的死循环for()中加TimeDly()函数,那么所创建的任务只能执行一次,灯亮灭一次就停止了;如果在任务的for()中不加的话,任务一直在执行,灯一直亮灭。
那么为什么“在创建的任务的死循环for()中加TimeDly()函数,那么所创建的任务只能执行一次,灯亮灭一次就停止了呢”实在不明白,还请大家给与解答,谢谢大伙啦!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 日月盟约 发表于 2013-11-9 15:32 | 显示全部楼层
在TimeDly()函数中,内核不是做了一次切换吗?也就是说程序第一次运行到这儿的时候,由于程序中只创建了一个任务,内核会切换到内核自带的空闲任务,然后等到用户创建的任务延时时间到内核又会进行一次调度,这样的话,用户程序又会得到执行呀,也就是说LED会不间断的闪烁呀?那么为什么在创建的任务的死循环for()中加TimeDly()函数,那么所创建的任务只能执行一次,灯亮灭一次就停止了呢?”跪求高手给予回答,谢谢啦
黄小俊 发表于 2013-11-9 19:08 | 显示全部楼层
,不知道。
woshixinshou 发表于 2013-11-10 07:23 | 显示全部楼层
可以肯定的一点就是,“如果在任务的for()中不加的话,任务一直在执行,灯一直亮灭。”这是错的,是系统不断复位的现象。
加for的话,形式是对的,看看配置文件里的OS_MAX_TASKS。

zchong 发表于 2013-11-11 08:31 | 显示全部楼层
调试一下,是跑飞了还是怎么回事
SLEET1986 发表于 2013-11-11 08:47 | 显示全部楼层
很明显任务切换不成功,移植不成功。
调试一下,跑飞了
 楼主| 日月盟约 发表于 2013-11-11 18:37 | 显示全部楼层
woshixinshou 发表于 2013-11-10 07:23
可以肯定的一点就是,“如果在任务的for()中不加的话,任务一直在执行,灯一直亮灭。”这是错的,是系统不 ...

配置文件里的OS_MAX_TASK设置为11,OS_LOWEST_PRIO 设置为12,但是为什么会出现上述情景,还是不明白,谁能给与解答呀,谢谢大伙了
飘逸的姑娘 发表于 2013-11-11 18:49 | 显示全部楼层
 楼主| 日月盟约 发表于 2013-11-11 19:12 | 显示全部楼层
woshixinshou 发表于 2013-11-10 07:23
可以肯定的一点就是,“如果在任务的for()中不加的话,任务一直在执行,灯一直亮灭。”这是错的,是系统不 ...

是系统不断复位的现象?!能说的详细点吗?这怎么和系统复位有关系?
 楼主| 日月盟约 发表于 2013-11-11 19:14 | 显示全部楼层
有谁知道啊?能给条明路吗?
roalychen 发表于 2013-11-13 13:34 | 显示全部楼层
本帖最后由 roalychen 于 2013-11-13 13:36 编辑

Debug看看怎么回事咯
klffnj 发表于 2013-11-18 10:41 | 显示全部楼层
你把delay 时间延长到1S 试试,
20062516 发表于 2013-12-15 21:00 | 显示全部楼层
有配置时钟节拍吗
maowa_2005 发表于 2014-3-13 10:53 | 显示全部楼层
应该是时钟节拍函数移植的时候没有移植成功,或者函数写的有问题,应该从这个方面着手去看
robotouch 发表于 2014-3-13 21:15 | 显示全部楼层
for循环中第1、2行和第3、4行之间没有延时,结果是LED2/4/6/8一直亮,其余灯全灭。
upc_arm 发表于 2014-3-13 21:24 | 显示全部楼层
是不是没有用idle空闲任务的缘故?
robotouch 发表于 2014-3-14 20:43 | 显示全部楼层
upc_arm 发表于 2014-3-13 21:24
是不是没有用idle空闲任务的缘故?

空闲任务是系统自动创建并不能被删除的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

42

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部