学习Cortex-M:三种关中断方式
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:三种关中断方式相关推荐
- Landesk学习笔记1_Landesk三种拖送方式
1. 推送 定时定点推送任务,如果对方在线与核心连接正常,则推送. 如果此时客户端不在线,则不推送.此任务只在那一个时刻运行,过时作废.以landesk核心为主. 2. 策略 landesk推送这个任 ...
- 了解mysql的三种不同安装方式的区别
学习目的:了解mysql的三种不同安装方式的区别 学习内容: mysql 的安装有三种:分别是源码安装.二进制安装.rpm安装. 源码安装的优势:linux操作系统开放源代码,因此在其上面安装的软件大 ...
- 多角度对比数据中心常见的三种走线方式
01 三种走线方式的施工图片 ▽下走线(地板下走线) ▽天花吊顶上走线 ▽机柜顶部走线 02 三种走线方式对比 通过上面的比较,毫无疑问,机柜顶部走线模式是最有优势的,给用户带来很多好处,包括维护方便 ...
- 电信设置的nat 虚拟服务器192.168.1.3 是什么,VMware WorkStation的三种网络连接方式详解...
一. 首先贴出本人在网络上找到与VMware网络连接相关的知识 安装完虚拟机后,默认安装了两个虚拟网卡,VMnet1和VMnet8,其他的未安装(当然也可以手动安装其他的).其中VMnet1是host ...
- SPA优缺点、解决单页面应用的SEO困难问题以及三种网页渲染方式
SPA特点优点缺点总结 1. 单页Web应用(SPA - Single Page web Application) 也就是说只有一个HTML文件的Web应用, 我们就称之为单页Web应用, 就称之为S ...
- 学习Python的三种境界,你现在是在什么境界?
前言 王国维在<人间词话>中将读书分为了三种境界:"古今之成大事业.大学问者,必经过三种之境界:'昨夜西风凋碧树,独上高楼,望尽天涯路'.此第一境也.'衣带渐宽终不悔,为伊消得人 ...
- 框架源码系列九:依赖注入DI、三种Bean配置方式的注册和实例化过程
一.依赖注入DI 学习目标 1)搞清楚构造参数依赖注入的过程及类 2)搞清楚注解方式的属性依赖注入在哪里完成的. 学习思路 1)思考我们手写时是如何做的 2)读 spring 源码对比看它的实现 3) ...
- word2vec三种保存模型方式
大家好,我是爱编程的喵喵.双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中.从事机器学习以及相关的前后端开发工作.曾在阿里云.科大讯飞.CCF等比赛获得多次Top名次.现 ...
- 三种创建线程方式之Callable接口
一.类继承关系及API解析 Callable接口 @FunctionalInterface public interface Callable<V> {V call() throws Ex ...
最新文章
- ajax中的url如何传递变量_如何创建和参数化UDT数据类型中的变量及IN,OUT 等参数?...
- 黑马程序员-JAVA基础-IO流中的装饰设计模式
- 关于栈的理解(读书笔记)
- QT的QAudioProbe类的使用
- 中兴计算机专业,中兴计算机专业面试题.pdf
- 【I】ZF2安装 和 创建一个新项目
- 更改tomcat的根目录路径
- python3多线程编程_Python3 多线程编程
- 10 mysql选错索引
- java.lang.IllegalStateException: ActionBarImpl can only be used with a compatible window decor layou
- ASCSDK-------通用包接入文档(COCOS篇)
- Java求质数(素数)(超详细)
- Apple Watch 7 显示屏尺寸和外观
- 搜集了一些AIDA64的GPGPU测试结果,现整理成表格共享
- java把图片导出ppt_ppt转图片程序(java实现)
- Macbook做Wifi热点,用蓝牙分享
- AI-多模态-2021:ALBEF
- SQL Server数据库通过身份证号获取年龄段分布
- 深入理解Linux网络技术内幕学习笔记第十九章:因特网协议第四版(IPv4):Linux的原理和功能
- HDU3785寻找大富翁~~真真切切的水题