1、关闭整个CPU的所有中断;2、关闭特定外设的所有中断;3、关闭特定外设的特定中断源。

http://blog.csdn.net/zoomdy/article/details/54954168
mingdu.zheng at gmail dot com

1、总开关

每个CPU有一个中断总开关。通过CPU中断控制寄存器实现。Cortex-M的中断控制寄存器包括:FAULTMASK、PRIMASK、BASEPRI、BASEPRI_MAX。总开关的本质是变更当前执行优先级,根据Cortex-M的架构设计,只有优先级高于当前执行优先级的中断或异常才能抢占CPU。

FAULTMASK

设置为1后关闭所有中断和异常,包括HardFault异常,只有NMI和Reset可以得到响应。

PRIMASK

设置为1后关闭所有中断和除了HardFault异常外的所有其他异常,只有NMI、Reset和HardFault可以得到响应。

BASEPRI

设置为n后,屏蔽所有优先级数值大于等于n的中断和异常。Cortex-M的优先级数值越大其优先级越低。

BASEPRI_MAX

和BASEPRI类似,但有个限制,即后写入的优先级数值要比当前的BASEPRI值小才会起作用,否则不起作用。

影响范围最广,影响CPU内的所有中断源。

疑问:线程模式下,当前优先级和中断优先级的抢占优先级相同,但中断的子优先级比当前子优先级高,会怎么样?当前优先级也分抢占优先级和子优先级吗?

2、分开关

Cortex-M包括一个嵌套向量中断控制器NVIC,每个外设在NVIC中都有一个对应的位,用来控制该外设的中断。

  • 写NVIC->ISER寄存器中外设对应位为1打开中断。
  • 写NVIC->ICER寄存器中外设对应位为1关闭中断。

分开关只影响特定外设的中断。

3、源开关

外设通常有多个中断源,如接收到数据、发送完成、接收超时等等。外设通常提供中断使能寄存器控制哪些中断源产生时要向上汇报(向分开关汇报)。源开关与特定的外设相关,不同的外设会有不同的中断,有不同的中断控制寄存器。有些外设本身有总开关,该总开关控制该外设的所有中断。

源开关影响范围最窄,仅影响外设的某一种中断源。

号外

STM32 HAL库采用外设寄存器关中断的方式。这种方式不依赖于外设在NVIC中的中断编号,更具有可移植性。如果采用NVIC寄存器关中断,那么需要知道外设关联的中断号,外设中断号可随着MCU的不同而不同,或者MCU内有多个同样的外设,每个外设实例的中断号都不是不同的。

学习Cortex-M:三种关中断方式相关推荐

  1. Landesk学习笔记1_Landesk三种拖送方式

    1. 推送 定时定点推送任务,如果对方在线与核心连接正常,则推送. 如果此时客户端不在线,则不推送.此任务只在那一个时刻运行,过时作废.以landesk核心为主. 2. 策略 landesk推送这个任 ...

  2. 了解mysql的三种不同安装方式的区别

    学习目的:了解mysql的三种不同安装方式的区别 学习内容: mysql 的安装有三种:分别是源码安装.二进制安装.rpm安装. 源码安装的优势:linux操作系统开放源代码,因此在其上面安装的软件大 ...

  3. 多角度对比数据中心常见的三种走线方式

    01 三种走线方式的施工图片 ▽下走线(地板下走线) ▽天花吊顶上走线 ▽机柜顶部走线 02 三种走线方式对比 通过上面的比较,毫无疑问,机柜顶部走线模式是最有优势的,给用户带来很多好处,包括维护方便 ...

  4. 电信设置的nat 虚拟服务器192.168.1.3 是什么,VMware WorkStation的三种网络连接方式详解...

    一. 首先贴出本人在网络上找到与VMware网络连接相关的知识 安装完虚拟机后,默认安装了两个虚拟网卡,VMnet1和VMnet8,其他的未安装(当然也可以手动安装其他的).其中VMnet1是host ...

  5. SPA优缺点、解决单页面应用的SEO困难问题以及三种网页渲染方式

    SPA特点优点缺点总结 1. 单页Web应用(SPA - Single Page web Application) 也就是说只有一个HTML文件的Web应用, 我们就称之为单页Web应用, 就称之为S ...

  6. 学习Python的三种境界,你现在是在什么境界?

    前言 王国维在<人间词话>中将读书分为了三种境界:"古今之成大事业.大学问者,必经过三种之境界:'昨夜西风凋碧树,独上高楼,望尽天涯路'.此第一境也.'衣带渐宽终不悔,为伊消得人 ...

  7. 框架源码系列九:依赖注入DI、三种Bean配置方式的注册和实例化过程

    一.依赖注入DI 学习目标 1)搞清楚构造参数依赖注入的过程及类 2)搞清楚注解方式的属性依赖注入在哪里完成的. 学习思路 1)思考我们手写时是如何做的 2)读 spring 源码对比看它的实现 3) ...

  8. word2vec三种保存模型方式

      大家好,我是爱编程的喵喵.双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中.从事机器学习以及相关的前后端开发工作.曾在阿里云.科大讯飞.CCF等比赛获得多次Top名次.现 ...

  9. 三种创建线程方式之Callable接口

    一.类继承关系及API解析 Callable接口 @FunctionalInterface public interface Callable<V> {V call() throws Ex ...

最新文章

  1. ajax中的url如何传递变量_如何创建和参数化UDT数据类型中的变量及IN,OUT 等参数?...
  2. 黑马程序员-JAVA基础-IO流中的装饰设计模式
  3. 关于栈的理解(读书笔记)
  4. QT的QAudioProbe类的使用
  5. 中兴计算机专业,中兴计算机专业面试题.pdf
  6. 【I】ZF2安装 和 创建一个新项目
  7. 更改tomcat的根目录路径
  8. python3多线程编程_Python3 多线程编程
  9. 10 mysql选错索引
  10. java.lang.IllegalStateException: ActionBarImpl can only be used with a compatible window decor layou
  11. ASCSDK-------通用包接入文档(COCOS篇)
  12. Java求质数(素数)(超详细)
  13. Apple Watch 7 显示屏尺寸和外观
  14. 搜集了一些AIDA64的GPGPU测试结果,现整理成表格共享
  15. java把图片导出ppt_ppt转图片程序(java实现)
  16. Macbook做Wifi热点,用蓝牙分享
  17. AI-多模态-2021:ALBEF
  18. SQL Server数据库通过身份证号获取年龄段分布
  19. 深入理解Linux网络技术内幕学习笔记第十九章:因特网协议第四版(IPv4):Linux的原理和功能
  20. HDU3785寻找大富翁~~真真切切的水题

热门文章

  1. 头号电脑黑客凯文·米特尼克
  2. 一种可以复制钟表零件的石膏模具
  3. Unity流水账8:MeshComponents
  4. mysql locate索引_MYSQL索引优化
  5. 耳机麦克风正常,但是部分PC应用不能语音的问题!
  6. 谷粒学院项目笔记6——oss、EasyExcel、课程分类、nginx
  7. 端口号是什么以及常见端口号
  8. 6、查询学过“张三”老师所教的所有课的同学的学号、姓名(重点)
  9. [经典教坛]方法总比问题多(完整版)
  10. 一键GHOST使用图文教程