兰鑫 发表于 2007-5-20 12:53

rtos请教

<br />刚接触RTOS,看了好久的书,程序还不能运行,请大家看看,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;main(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;init();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OSStart();<br />}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;TaskA(void)<br />{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P2=i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OSWait(K_SIG,0);<br />&nbsp;OSTimeTick();<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;TaskB(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;i=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OSWait(K_TMO,10);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;TaskC(void)<br />{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;i=0xff;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OSWait(K_TMO,15);<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br />程序很简单:p2口接led,想让它闪烁即可,<br />自己的分析是:让任务A调用OSTimeTick();想通过任务B,C,改变变量i的值,然后运行任务A时来改变led的变化。<br />但是程序不是我想的哪样运行,我在调试中看了下,程序是按顺序一直这样试行下去,到任务C后就进入睡眠了,现在就一直到这里了。<br />请各位帮帮忙分析一下吧,谢!!!(以前是用时间片轮转这样编写的,好像比较好理解,不知RTOS和它有什么区别呢?)qq:470359073

兰鑫 发表于 2007-5-26 21:26

small rtos

大家看看啦,难道就没有一个人知道吗,支持一下吧,多谢了!

新警察 发表于 2007-5-26 22:26

估计是没周期给任务A信号

兰鑫 发表于 2007-5-27 22:05

small rtos

我在任务A有调用OSTimeTick();啊,怎么到了时间也不切换,就一直在休眠哪里。真的不知哪里还有问题,我分析应该是没问题的啊,郁闷哦。<br />

why_buaa 发表于 2007-5-30 00:33

你在哪里给A信号了?

A执行到OSWait(K_SIG,0)就挂起了,没有人来给他信号的号它就一直挂着,下面的OSTimeTick()也就根本执行不了了,当然系统的时间片也就没有了
页: [1]
查看完整版本: rtos请教