专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
弱弱的问一个:uCOS-ii的一个基础问题
2019-03-24 16:29
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
TI MCU
15347
1
1637
uCOS-ii中好多下面这个代码:
#if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */
OS_CPU_SR cpu_sr;
#endif
这个:OS_CPU_SR cpu_sr; 怎么都不觉得它有用,而且还会引发编译警告! 为什么需要这一句? 此帖出自
小平头技术问答
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
1条回答
sblpp
1楼-- · 2019-03-25 01:17
< 这个啊
看看邵贝贝的那本书吧
上面写过的
“OS_ENTER_CRITICAL( )和OS_EXIT_CRITICAL( )是用来设置临界段代码的函数。OS_ENTER_CRITICAL( )使系统进入临界段,这时要求系统内核先关闭中断,再处置临界段代码,保护临界段代码不受多任务或中断服务子程序破坏。推出临界段时调用OS_EXIT_CRITICAL( ),系统重新开中断,进行正常任务调度。通常以上两个函数可以用3种方法实现,OS_CPU_H中定义了一个OS_CRITICAL_METHOD常数,用来选择函数实现的方法。常数值为1时,采用最简单的方法,OS_ENTER_CRITICAL( )中直接调用处理器指令关闭中断,OS_EXIT_CRITICAL( )调用相应处理器指令开中断(详细的代码在os_cpu_a.s文件中定义)。这样做存在一个问题:如果调用函数时系统禁止中断,那当临界段代码执行完毕后系统中断会变成允许了。常数值为2时,执行OS_ENTER_CRITICAL( )时会先将中断状态保存到堆栈中,然后关中断,执行OS_ENTER_CRITICAL( )时从堆栈中恢复原来的中断状态。这样做解决了方法1中存在的问题。常数值为3时需要多定义一个cpu_sr的局部变量,用于某些能直接得到当前处理器状态字的编译器中,保存状态字,用来恢复PSW。由于应用简单,方法1,2已经足够,所以本文中没有实现方法3的具体代码,而使方法3和方法2实现的代码一致。这里可以以后再扩充。
”
加载中...
一周热门
更多
>
相关问题
相关文章
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
看看邵贝贝的那本书吧
上面写过的
“OS_ENTER_CRITICAL( )和OS_EXIT_CRITICAL( )是用来设置临界段代码的函数。OS_ENTER_CRITICAL( )使系统进入临界段,这时要求系统内核先关闭中断,再处置临界段代码,保护临界段代码不受多任务或中断服务子程序破坏。推出临界段时调用OS_EXIT_CRITICAL( ),系统重新开中断,进行正常任务调度。通常以上两个函数可以用3种方法实现,OS_CPU_H中定义了一个OS_CRITICAL_METHOD常数,用来选择函数实现的方法。常数值为1时,采用最简单的方法,OS_ENTER_CRITICAL( )中直接调用处理器指令关闭中断,OS_EXIT_CRITICAL( )调用相应处理器指令开中断(详细的代码在os_cpu_a.s文件中定义)。这样做存在一个问题:如果调用函数时系统禁止中断,那当临界段代码执行完毕后系统中断会变成允许了。常数值为2时,执行OS_ENTER_CRITICAL( )时会先将中断状态保存到堆栈中,然后关中断,执行OS_ENTER_CRITICAL( )时从堆栈中恢复原来的中断状态。这样做解决了方法1中存在的问题。常数值为3时需要多定义一个cpu_sr的局部变量,用于某些能直接得到当前处理器状态字的编译器中,保存状态字,用来恢复PSW。由于应用简单,方法1,2已经足够,所以本文中没有实现方法3的具体代码,而使方法3和方法2实现的代码一致。这里可以以后再扩充。
”
一周热门 更多>