ucosII移植学习过程,OS_CPU_SR_Save()和OS_CPU_SR_Restore()函数的解析

本文探讨了uCOS-II中如何通过宏定义实现代码临界段的保护,具体介绍了OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()两个函数的工作原理,即如何在进入临界段时关闭中断并在退出时恢复中断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天突然兴起回顾了一下ucosII,本人在这方面也是小白,但研究了一下,也算有点收获,在此记录一下。

我们都知道,代码的临界段,也叫临界区,指的是处理时不可以分割的代码。一旦这部分代码开始执行,则不容许任何中断打断。为了确保临界段代码的可靠执行,在进入临界段之前一定要关闭中断,而临界段执行完后,则要立即打开中断。

首先,在这里,有两个宏定义,定义了OS_ENTER_CRITICAL()函数和

OS_EXIT_CRITICAL()函数,这两个函数的作用是关闭和打开中断。下面我们要知道这两个函数为什么操作中断的开关。我们重点关注宏定义,OS_CPU_SR_Save()这个函数

在os_cpu_a.asm文件中有定义,我们可以看到
  这个函数返回了一个值R0,并将这个值赋值给(暂存)cpu_sr内,目的就是保留为关闭中断前的状态,  CPSTD  I,这段代码是cortex-M3指令集的汇编指令,   ,这个操作就把中断给关了。

其次,我们再看OS_CPU_SR_Restore()函数,,将cpu_sr的状态重新读到PRIMASK里面,这样就恢复了最初状态。

哈哈哈,希望帮助到大家!大笑

                 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值