OS_CPU_SR cpu_sr = 0;
OS_EXIT_CRITICAL()
/////
OS_ENTER_CRITICAL()

知识点补充
1. 当CPU_CFG_CRITICAL_METHOD == CPU_CRITICAL_METHOD_INT_DIS_EN 时
这种方式最简单,即直接使用处理器的开中断和关中断指令来实现宏。但是不推荐使用这种方式,因为不支持中断嵌套, 但是考虑到有些处理器或者编译器仅支持这种方式,不得不选择这种方式。
2. 当CPU_CFG_CRITICAL_METHOD == CPU_CRITICAL_METHOD_STATUS_STK 时
这种方法稍复杂些,但可使CPU中断使能标志的状态在临界段前和临界段后不发生变化。
进入临界段前:
(1) Push/save 中断状态保存到堆栈中
(2) Disable 关闭中断
退出临界段:
(3) Pop/restore 恢复中断标志
3. 当CPU_CFG_CRITICAL_METHOD == CPU_CRITICAL_METHOD_STATUS_LOCAL时
这种方法的前提是,用户使用的C编译器具有扩展功能。用户可获得程序状态字的值,这样就可把该值保存在C函数的局部
变量中,而不必压到堆栈里。上面的宏定义就是采用的这种方式,也就是(1),(2)注释的地方。
|