ckc1119 发表于 2017-9-2 07:26

UCOSIII OS_CRITICAL_ENTER()的疑问


#defineOS_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的时候恢复中断状态,
页: [1]
查看完整版本: UCOSIII OS_CRITICAL_ENTER()的疑问