- 打卡等级:偶尔看看III
- 打卡总天数:30
- 最近打卡:2025-11-12 16:20:46
荣誉版主
- 积分
- 2848
|
发表于 2025-11-5 07:52:51
|
显示全部楼层
#define OS_ENTER_CRITICAL() {cpu_sr=((!_testbit_(EA))?0X00:0X80);}
#define OS_EXIT_CRITICAL() {IE|=cpu_sr;}
即然不理解,那我解释下,或许就明白了。
_testbit_(EA) 这是一个本征库函数调用, 意思是测试一下EA是否置位。
然后, (!_testbit_(EA))?0X00:0X80, 这是一个条件表达式,
cpu_sr=((!_testbit_(EA))?0X00:0X80) 先读EA值,取反,如果当前EA值为0 则给变量 cpu_sr=0, 否则 cpu_sr=0x80;
整句话的意思是, 取EA的值, 放到变量 cpu_sr 的最高位。 (bit7)
接下来的,IE|=cpu_sr; 就是恢复EA.
这是临界区的可嵌套形式。
如果实在是不理解,就不用吧,把它们删了,用自己习惯的 EA=0; EA=1;
|
|