注:本文内容主要参考cortex-M0 权威指南。
Cotex-M0处理器内置了中断控制器,并且最多支持32个中断请求(IRQ)输入,以及1 个不可屏蔽中断(NMI)输入。另外Cotex-M0处理器还支持多个内部异常。而 Cortex -M3中的 NVIC 支持最多240个中断请求(IRQ)、1 个不可屏蔽中断(NMI)多个系统异常。
Cortex -M0的每个中断都有一个单独的中断编号, NMI 的编号为2,而片上外设和外部中断的则为16-47。1-15的其他编号,用于处理器内部的系统异常。有些中断的优先级是固定的,而有些则是可编程的。表中列出了异常类型、异常编号和优先级。

从头文件中可以看出,FM33LG0XX芯片的中断表如下。

外部中断

中断优先级定义
在 Cortex -M0处理器中,毎个中断都对应一个优先级。优先级决定了中断是否执行或者是否延迟执行。Cortex -M0处理器支持3个固定的最高优先级以及4个可编程的优先级。对于具有可编程优先级的异常,优先级配置寄存器为8位宽,而且只能使用最高两位。见下图。

因为第0到5位没有使用,故它们读出始终为0,对它们的写操作没有意义。在这个设定下,可以使用的优先级为0x00(最高)、0x40、0x80和 0xc0 (最低)。这点同 Cortex -M3处理器类似,只是 Cortex -M3处理器至少使用3个位,因此就具有至少8个可编程的优先级,而 Cortex -M0处理器只有4个。再加上3个固定的优先级,Cortex - M0总共具有7个优先级。
对于Cortex - M3来说,处理器有3个固定优先级和最多256 个优先级(最多有 128 个抢占等级),优先级的数量也是可由芯片设计者配置的,可选范围为8-256(多数情况下为8-32,比如 STM32 就只有16 级优先级)。 NVIC 将优先级分为两个部分:抢占优先级(用于嵌套中断)和子优先级(用于多个具有相同抢占优先级的中断同时发生),并且它们可由软件配置(SCB->AIRCR [10:8] PRIGROUP field)。
系统异常控制寄存器
对于 Cortex -M0处理器,只有3个与 OS 相关的系统异常才具有可编程的优先级,它们包括 SVC 、PendSV 和 SysTick ,其他像 NMI 和硬件错误等系统异常的优先级则是固定的。通过配置SHPR2和SHPR3两个寄存器来修改三个系统异常的优先级。


如果使用了CMSIS设备驱动库,你可以使用寄存器名SCB->SHP[0]和SCB->SHP[1]来访问SHPR2和SHPR3。

以freeRTOS为例,在port.c中,可以看到将PendSV和SysTick配置为最低优先级。


中断屏蔽寄存器(PRIMASK)
有些对时间敏感的应用,需要在一段较短的时间内禁止所有中断。对于这种应用,Cortex -M0处理器没有使用中断使能/禁止控制寄存器来禁止所有中断然后再恢复,而是提供了一个单独的特性,特殊寄存器中有一个被称作 RRIMASK,通过它可以屏蔽掉除了 NMI 和硬件错误异常的其他所有的中断和系统异常。 PRIMASK 寄存器只有1位有效,并且在复位后默认为0。该寄存器为0时,所有的中断和异常都处于允许状态;而设为1后,只有 NMI 和硬件错误异常处于使能。实际上,当 PRIMASK 设置为1后,处理器的当前优先级就降到了 0 (可设置的最高优先级)。若使用C语言以及CMSIS设备驱动库,用户可以使用以下函数来设置和清除PRIMASK。
__disable_irq();//设置PRIMASK
__enable_irq();//清除PRIMASK

对于Cortex -M3来说除了 PRIMASK 外还有其他的中断屏蔽寄存器。 BASEPRI 寄存器可以阻止某优先级或更低优先级的中断, FAULTMASK 寄存器则提供了其他的错误管理特性。

Cotex-M0中断及与Cotex-M3的对比相关推荐

  1. 南京沁恒推出的国产 M3 架构芯片与意法半导体 M3 芯片对比

    南京沁恒推出的 Cortex-M3 架构 MCU 包括: CH32F103xx 系列.CH32F203xx 系列.CH32F205xx 系列. CH32F207xx 系列.CH32F208xx 系列. ...

  2. ARM微控制器-MCU基础及CPU运行过程(堆栈/中断/寄存器操作)

    目录 为什么计算机能读懂1和0? 一. CPU的基本结构和运行机制 1. 一个基本的MCU内部结构 2. MCU Structure 3. 分析其中的CPU: 一个完整的CPU: 4. 堆栈 5. 堆 ...

  3. STM32学习手记5 BKP后备寄存器、RTC和中断

    STM32的后备寄存器: STM32共有42个16位后备寄存器,可以用来存储84个字节的用户数据.而所谓的后备寄存器,并不是真正的EEPROM.当VDD电源被切断,VBAT仍然保持供电,后备寄存器的内 ...

  4. STM32的异常“、“中断”和“事件”区别和理解

    1 异常与中断(Cortex-M3) 1.1 异常与中断 原话:  Cortex‐M3 在内核水平上搭载了一个异常响应系统,支持为数众多的系统异常和外部中断.  其中,编号为 1-15 的对应系统异常 ...

  5. STM32中断相关概念阐述

    STM32中断相关概念阐述 未完待续... 想完整的写完并写清楚不容易,修修改改ing... 注:本文以STM32F1系列为例,F1系列为Cortex M3内核. 目录 STM32中断相关概念阐述 1 ...

  6. GD32实战7__中断

    引子 什么是中断 ​ 举个生活中的小栗子吧,我正在编写这个文档,突然门铃响了,我去开下门,原来是快递,签收完快递后,又回来接着写. ​ 上面的例子中, 1. 我就是CPU 2. 编写文档,是主运行程序 ...

  7. 中断(interrupted()、isInterrupted())、Executor的中断

    1. 中断 一个线程执行完毕之后会自动结束,如果在运行过程中发生异常也会提前结束. InterruptedException通过调用一个线程的 interrupt() 来中断该线程,如果该线程处于阻塞 ...

  8. 光中断器行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)

    光中断器市场的企业竞争态势 该报告涉及的主要国际市场参与者有Sharp.Omron.Rohm Semiconductor.TT Electronics.Vishay Intertechnology.P ...

  9. 智能硬件开发如何选择低功耗MCU?

    本文转载至:http://www.iot-online.com/IC/embedded/2015/090928393.html 本文将市场上典型的低功耗MCU系列进行了比较,分析得出基于ARM. Co ...

  10. ARM Cortex-M处理器详解

    ARM Cortex-M处理器家族现在有8款处理器成员.在本文中,我们会比较Cortex-M系列处理器之间的产品特性,重点讲述如何根据产品应用选择正确的Cortex-M处理器.本文中会详细的对照Cor ...

最新文章

  1. select sqlite 唯一_SQLite中的SELECT子句使用通配符
  2. 每日一皮:我们最要避开的山寨产品...
  3. 【Android工具】更新手机视频流媒体客户端播放器OPlayer
  4. SAP CDS view自学教程之十:SAP CDS view扩展性(Extensibility)实现原理
  5. AngularJS快速入门指南15:API
  6. 网络负载平衡oracle,[Oracle] RAC 之 - 负载均衡深入解析
  7. mysql too many connections_mysql too many connections 解决方法
  8. 阿里为什么偏向全资收购(高德、优酷、饿了么等)?腾讯只是投资?
  9. [转载] 用 C++ 和 Java 写算法,差别大吗?
  10. 872. Leaf-Similar Trees - LeetCode
  11. 环绕声混响效果器-Acon Digital Verberate Immersive 2.2.1 WiN-MAC
  12. 【毕业季】这四年一路走来都很值得——老学长の忠告
  13. 弹性波波长计算公式_声波是一种弹性波(纵向应力波).ppt
  14. 内存颗粒和闪存颗粒的区别_内存条怎么判断好坏? 内存颗粒的种类及其差别介绍...
  15. 迅雷下载原理和P2p技术
  16. Dubbo——服务暴露过程分析
  17. VLAN 主干道配置
  18. HCIP第十六天(VLAN IF接口,STP生成树协议,BPDU的配置)
  19. Conflict with dependency com.android.support-annotations' in project':app'.Resolved ...解决方法
  20. 限制字符输入数功能(jQ版和原生JS版)

热门文章

  1. 破解黑红梅方提前知道保单机里的答案
  2. 有趣的微分方程之常数变易法
  3. CSDN积分和等级的划分
  4. hdu 4902 Nice boat(线段树区间改动,输出终于序列)
  5. 浅谈竞赛中的部分树(块、点、链)【长期更新】
  6. 一文学懂过滤器和监听器
  7. 文件保险箱 v4.0 绿色
  8. 9.01-常用网址归纳
  9. weiphp-自动回复消息
  10. python correlate_Python numpy.correlate函数方法的使用