找回密码
 立即注册
楼主: 杨为民

STC单片机 uC/OS-II核心技术(2):在替代法中任务切换时其实不需要临界区保护

[复制链接]

11

主题

340

回帖

929

积分

荣誉版主

积分
929
发表于 2023-9-19 00:14:39 | 显示全部楼层
截图202309190004438633.jpg
F5执行后,确实改变了OSPrioHighRdy


截图202309190005256015.jpg



把定时器中断的断点去掉,然后F5执行到RETI,
截图202309190007193463.jpg


可以看到OSPrioCur 不等于 OSPrioHighRdy,
中断返回变成了OSTCBCur变成了新的任务。


这个只能用仿真看,逻辑分析仪看很难分出来的。
仿真的结果和理论是一样的。

结论就是下面两条需要同时保护。不然嵌套后,出现不一样的结果。
OSPrioCur = OSPrioHighRdy;
OSTCBCur  = OSTCBHighRdy;


uCOSII-STC32G-V1.00_任务切换.zip

438.72 KB, 下载次数: 58

回复 支持 反对

使用道具 举报 送花

11

主题

340

回帖

929

积分

荣誉版主

积分
929
发表于 2023-9-20 00:04:57 来自手机 | 显示全部楼层
好像想明白为什么杨老师说,他以前用软中断的方式,不需要去保护那两条关键的语句。我猜是因为那个软件中断是高优先级的,其他中断根本不能打断正在执行的中断服务。

一般我们把软件切换任务中断,设置成最低优先级。这样就是保证高优先级中断可以嵌套优先执行,实时性更强。需要对最关键的两条语句做保护处理。

点评

是的  详情 回复 发表于 2023-9-20 00:11
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:16
  • 最近打卡:2025-04-30 08:41:32

105

主题

1215

回帖

1万

积分

荣誉版主

积分
12882
发表于 2023-9-20 00:11:48 | 显示全部楼层
熊*** 发表于 2023-9-20 00:04
好像想明白为什么杨老师说,他以前用软中断的方式,不需要去保护那两条关键的语句。我猜是因为那个软件中断 ...

是的
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:432
  • 最近打卡:2025-05-01 16:19:56

5

主题

1127

回帖

4263

积分

荣誉版主

积分
4263
发表于 2023-9-20 00:18:00 | 显示全部楼层
原来如此,还真是没想到
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 02:11 , Processed in 0.134853 second(s), 66 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表