[ZLG-ARM] 问个 uC/OS II问题

[复制链接]
1663|1
 楼主| xjtuer 发表于 2008-1-28 11:23 | 显示全部楼层 |阅读模式
uC/os, TI, ST, tc, IO
void&nbsp;&nbsp;OSIntExit&nbsp;(void)<br />{<br />#if&nbsp;OS_CRITICAL_METHOD&nbsp;==&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;OS_CPU_SR&nbsp;&nbsp;cpu_sr;<br />#endif<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(OSRunning&nbsp;==&nbsp;TRUE)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OS_ENTER_CRITICAL();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(OSIntNesting&nbsp;&gt&nbsp;0)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OSIntNesting--;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((OSIntNesting&nbsp;==&nbsp;0)&nbsp;&&&nbsp;(OSLockNesting&nbsp;==&nbsp;0))&nbsp;{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OSIntExitY&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;OSUnMapTbl[OSRdyGrp];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OSPrioHighRdy&nbsp;=&nbsp;(INT8U)((OSIntExitY&nbsp;&lt&lt&nbsp;3)&nbsp;+&nbsp;OSUnMapTbl[OSRdyTbl][OSIntExitY]]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(OSPrioHighRdy&nbsp;!=&nbsp;OSPrioCur)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OSTCBHighRdy&nbsp;&nbsp;=&nbsp;OSTCBPrioTbl[OSPrioHighRdy];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OSCtxSwCtr++;&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;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OSIntCtxSw();&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;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OS_EXIT_CRITICAL();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br />上面程序中的OSIntCtxSw();相当于执行return;<br />因为includes.h中有宏定义<br />#define&nbsp;OSIntCtxSw()&nbsp;&nbsp;&nbsp;return<br />执行这个return除了程序返回之外,还有其他什么作用??&nbsp;
zlgarm 发表于 2008-1-28 14:27 | 显示全部楼层

OSIntCtxSw()

xjtuer&nbsp;您好:<br />&nbsp;&nbsp;&nbsp;&nbsp;这样做主要是不同情况中断OSIntExit()对堆栈的使用情况不同,所以必须加上这个宏定义,这样做也是为了使用方便。对于return具体作用您可以参考C语言书中的相关部分。<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;By&nbsp;zlgarm_zhp
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

19

帖子

1

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