UCOSIII OS_CRITICAL_ENTER()的疑问

[复制链接]
 楼主| ckc1119 发表于 2017-9-2 07:26 | 显示全部楼层 |阅读模式

#define  OS_CRITICAL_ENTER()                                       
         do {                                                      
             CPU_CRITICAL_ENTER();             //1                   
             OSSchedLockNestingCtr++;                              
             if (OSSchedLockNestingCtr == 1u) {                    
                 OS_SCHED_LOCK_TIME_MEAS_START();                  
             }                                                     
             CPU_CRITICAL_EXIT();               //2                   
         } while (0)


请问这里的1  和2  开关中断 到底有什么意义   去掉会怎么样
delin17 发表于 2017-9-2 13:33 | 显示全部楼层
你去看他的指令,你就明白,1,2的意义了。
feelhyq 发表于 2017-9-3 22:58 | 显示全部楼层
保证该全局变量原子操作
北辰东弋 发表于 2017-9-11 15:02 | 显示全部楼层
这是临界区处理吧, 1的时候保存了中断状态然后关闭了中断, 执行1和2之间的代码, 防止被中断打断, 2的时候恢复中断状态,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

78

帖子

1

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