[ZLG-ARM] 请教:UCOS的任务调度

[复制链接]
2224|3
 楼主| id001 发表于 2008-3-2 23:53 | 显示全部楼层 |阅读模式
任务级的任务切换,函数的结构如下:<br />void&nbsp;OSSched(void){<br /><br />关中断&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//!!!这里关闭了中断!!!<br /><br />如果(不是中断嵌套并且系统可以被调度){<br /><br />&nbsp;&nbsp;&nbsp;确定优先级最高的任务<br /><br />&nbsp;&nbsp;&nbsp;如果(最高级的任务不是当前的任务){<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;调用OSCtxSw();&nbsp;//!!如在这里切换到一个高优先级的任务,系统的中断不是被关闭了吗?<br /><br />&nbsp;&nbsp;&nbsp;}<br /><br />}<br /><br />开中断<br /><br />}<br />==========================<br />请教的问题是:如调用OSCtxSw()函数时发生了任务切换,程序切换到另一个TASK任务中运行,也也就说在另外一个任务中运行时的&nbsp;总中断&nbsp;是被关闭的???
 楼主| id001 发表于 2008-3-3 08:52 | 显示全部楼层

困扰好几天了!!

  
dld2 发表于 2008-3-3 09:13 | 显示全部楼层

俺对ucos第一不感冒的地方,就是它总是喜欢关中断

就楼主的问题:<br />任务切换时,会将当前任务的CPSR入栈,会把目标任务的CPSR出栈。<br />给CPSR赋值,也就给中断控制位赋值了。
heuyck 发表于 2008-3-3 09:30 | 显示全部楼层

当任务切换时

新任务的CPSR的中断允许位如果是开<br />就会重新开启中断<br />当初就弄得一头雾水<br />各种信号量什么的也都涉及到任务切换<br />也就是会改变中断&nbsp;en/disable
您需要登录后才可以回帖 登录 | 注册

本版积分规则

35

主题

107

帖子

0

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