uCos临界区保护
2024-09-30 06:54:02
定义有三种method,stm32f4采用的是第三种:将当前中断的状态标志保存在一个局部变量cpu_sr中,然后再关闭中断。cpu_sr是一个局部变量,存在于所有需要关中断的函数中。注意到,在使用了该宏的所有函数中都定义了cpu_sr,也就是说在用户自己定义的应用程序中需要是用该宏时也有必要定义这样一个局部边变量。
OS_CPU_SR_Save
MRS R0,PRIMASK;读取PRIMASK到R0
CPSID I ;PRIMASK=1,关中断
BX LR ;返回,返回值保存在R0 OS_CPU_SR_Restore
MSR PRIMASK,R0;读取R0到PRIMASK中
BX LR
第一种method简单的进行关开中断的缺陷是不支持这种临界区的嵌套,也就说内层的退出后中断就打开了。
注释这里使用到的PRIMASK是看keil编译器已命名的内核寄存器,在工程文件中是没有定义的。
最新文章
- ABP入门系列(1)——学习Abp框架之实操演练
- 服务器内存UDIMM与RDIMM区别
- PHP 知识点链接
- c语言 四种方法调用数组
- 使用Memory Analyzer tool(MAT)分析内存泄漏(二)
- oracle系列--第二篇 oracle下载
- The Cow Lexicon
- 《Python 二三事》——python学习必看(转载)
- Centos 多个mysql数据库
- sort函数使用的基本知识
- 我的IT开源之路
- 用 HAproxy 搭建 RabbitMQ 集群
- SVN版本库修改URL路径或者IP地址
- 收藏品:MP3播放器
- 41A
- ABAP级别【技能树】
- luogu P4718 【模板】Pollard-Rho算法(贴代码)
- SourceTree安装教程
- 20、docker swarm
- hadoop主节点(NameNode)备份策略以、恢复方法、操作步骤