定义有三种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编译器已命名的内核寄存器,在工程文件中是没有定义的。

最新文章

  1. ABP入门系列(1)——学习Abp框架之实操演练
  2. 服务器内存UDIMM与RDIMM区别
  3. PHP 知识点链接
  4. c语言 四种方法调用数组
  5. 使用Memory Analyzer tool(MAT)分析内存泄漏(二)
  6. oracle系列--第二篇 oracle下载
  7. The Cow Lexicon
  8. 《Python 二三事》——python学习必看(转载)
  9. Centos 多个mysql数据库
  10. sort函数使用的基本知识
  11. 我的IT开源之路
  12. 用 HAproxy 搭建 RabbitMQ 集群
  13. SVN版本库修改URL路径或者IP地址
  14. 收藏品:MP3播放器
  15. 41A
  16. ABAP级别【技能树】
  17. luogu P4718 【模板】Pollard-Rho算法(贴代码)
  18. SourceTree安装教程
  19. 20、docker swarm
  20. hadoop主节点(NameNode)备份策略以、恢复方法、操作步骤

热门文章

  1. intellij idea 使用用到的问题
  2. UVa10491 Cows and Cars
  3. msp430项目编程37
  4. Python入门--9--格式化
  5. 最小费用最大流粗解 poj2516
  6. vue之列表渲染
  7. 快速上传到rackspace cdn工具turbolift swift 安装
  8. JAVA_MyEclipse如何加载Tomcat
  9. Python中ConfigParser模块应用
  10. 全文索引--自己定义chinese_lexer词典