历史上的今天
返回首页

历史上的今天

今天是:2025年05月26日(星期一)

正在发生

2021年05月26日 | 分解ARM Cortex-M系列优先级设置问题

2021-05-26 来源:eefocus

在我们嵌入式工程应用中,中断作为最常用的异步手段是必不可少的,而且在一个应用程序中,一个中断往往是不够用的,多个中断混合使用甚至多级中断嵌套也经常会使用到,而这样就涉及到一个中断优先级的问题。


本篇仍然是以我们最熟悉的Cortex-M系列为例,而M系列我就说说Freescale目前两大当家的——M0+和M4的优先级设置问题。我们知道ARM从Cortex-M系列开始引入了NVIC的概念(Nested Vectors Interrupts Controller),即嵌套向量中断控制器,以它为核心通过一张中断向量表来控制系统中断功能,NVIC可以提供以下几个功能:


1)可嵌套中断支持;


2)向量中断支持;


3)动态优先级调整支持;


4)中断可屏蔽。


抛开其他不谈,这里我们只说说中断优先级的问题。我们知道NVIC的核心工作原理即是对一张中断向量表的维护上,其中M4最多支持240+16个中断向量,M0+则最多支持32+16个中断向量,而这些中断向量默认的优先级则是向量号越小的优先级越高,即从小到大,优先级是递减的。但是我们肯定不会满足于默认的状态(人往往不满足于约束,换句俗话说就是不喜欢按套路出牌,呵呵),而NVIC则恰恰提供了这种灵活性,即支持动态优先级调整,无论是M0+还是M4除了3个中断向量之外(复位、NMI和HardFault,他们的中断优先级为负数,它们3个的优先级是最高的且不可更改),其他中断向量都是可以动态调整的。


不过需要注意的是,中断向量表的前16个为内核级中断,之后的为外部中断,而内核级中断和外部中断的优先级则是由两套不同的寄存器组来控制的,其中内核级中断由SCB_SHPRx寄存器来控制(M0+为SCB_SHPR[2:3],M4为SCB_SHPR[1:3]),外部中断则由NVIC_IPRx来控制(M0+为NVIC_IPR[0:7],M4为NVIC_IPR[0:59]),如下图所示:


M0+:




M4:





其中M4所支持的动态优先级范围为0~15(8位中只有高四位[7:4]才有效),而M0+所支持的动态优先级范围则为0~3(8位中只有高两位[7:6]才有效),而且秉承着号越小优先级越高的原则(0最高,15或3为最小),同时也间接解释了为什么复位(-3)、NMI(-2)和HardFault(-1)优先级最高的原因,很简单,人家都是负的了,谁还能比他们高,呵呵,而且这三位中复位优先级最高,NMI其次,HardFault最低(这个最低仅限于这三者)。

推荐阅读

史海拾趣

ATOP_Technologies公司的发展小趣事

在追求技术创新的同时,ATOP Technologies也始终注重品质管理和品牌建设。公司通过了ISO-9001认证,从产品的研发设计到生产,所有的流程都严格遵循最佳品质原则。此外,ATOP Technologies还注重品牌形象的塑造和推广,通过参加行业活动、举办技术研讨会等方式,不断提升品牌知名度和影响力。

Everbuild公司的发展小趣事

随着全球对环保和可持续发展的重视,Everbuild也将绿色环保理念融入到产品设计和生产过程中。公司采用环保材料和节能技术,减少生产过程中的污染和能源消耗。同时,Everbuild还积极参与环保公益活动,倡导绿色生活方式。这些举措不仅提高了公司的社会责任感,也为公司的可持续发展奠定了基础。

捷茂微(GATEMODE)公司的发展小趣事

为了进一步扩大市场份额,Everbuild开始积极拓展国际市场。公司派遣专业的团队参加国际电子产品展览会,与国际知名厂商进行技术交流和合作。同时,Everbuild还针对不同国家和地区的市场需求,推出了定制化的电子产品解决方案。这些努力使Everbuild的产品逐渐进入国际市场,并赢得了越来越多客户的信任和支持。

Barry Industries Inc公司的发展小趣事

在国内市场取得一定成绩后,Barry Industries Inc开始积极拓展国际市场。公司参加了多个国际电子展会,与国际知名企业建立了合作关系,成功将产品打入国际市场。同时,Barry还积极寻求与国际先进技术的交流与合作,不断提升自身的技术水平和产品质量。

德国ACAM公司的发展小趣事

2014年,ACAM公司迎来了一个重要的里程碑事件——被奥地利微电子股份有限公司收购。这次收购极大地增强了ACAM公司在时间数字转换器(TDC)技术领域的实力。奥地利微电子在半导体行业有着深厚的积累和丰富的经验,与ACAM公司的技术优势相结合,进一步提升了ACAM公司在市场上的竞争力。

Amperite Co公司的发展小趣事

德国ACAM公司成立于1996年,总部位于施图登湖,毗邻斯图加特和卡尔斯鲁厄。公司从创立之初,就专注于时间到数字转换技术及其应用的研发。ACAM公司凭借其创新的技术和卓越的研发实力,在极短的时间内就取得了显著的成果。特别是在时间数字转换器(TDC)技术上,ACAM公司成功开发出业界领先的产品,为后续的快速发展奠定了坚实的基础。

问答坊 | AI 解惑

嵌入式中的ELF格式

ELF格式使得嵌入式开发者可把一个可执行映像映射到目标嵌入式系统,用于静态存储以及运行加载和执行…

查看全部问答>

国家复赛名单出来了, 不会是搞错了吧

本帖最后由 paulhyde 于 2014-9-15 09:20 编辑 大家说说你们省情况吧, 我是吉林的 全部题目就2个队,1个吉大,1个主办方长理工。 B题一个队没有, 据说山东也是这样。。。。。 还有个疑问,官方文件不是说了同校同题最多2个队能推荐 ...…

查看全部问答>

报告:iPad、平板电脑将蚕食鲸吞Wintel笔记本?

机遇与挑战: 平板电脑销售大跃进Windows操作系统与英特尔芯片笔记本受冲击更多消费者转而使用Google操作系统 市场数据: 今年平板电脑销售量至少1,500万台 根据Barclays Capital发布的研究报告,采用Windows操作系统与英特尔芯片的笔记本 ...…

查看全部问答>

Flash的问题

    请教各位,关于CE下,开发Flash播放器的问题。     之前在用VC开发PC版的Flash播放器,可以使用ShockWaveFlash这个现成的组件,轻松实现。但可惜的是CE5中无法使用。 据说以后CE7就会集成Flash引擎。 但是现在必须在CE5. ...…

查看全部问答>

请问学习嵌入式开发能不能不学汇编?

最近想学习嵌入式开发,可是我只会C和C++,没有汇编语言的基础,请问是否可以不学汇编而直接学习嵌入式开发?…

查看全部问答>

请问一个关于STM32中断的问题

                                 不使用库,使用KEIL自动生成的startup.s可以吗?使用某个中断直接写一个和启动文件里同名的中断服务函数就可以了吗? ...…

查看全部问答>

我是大学生我学过模拟电子但实际有很多电路图看不懂是怎么回事???初学者

在这一点上我可能比不上没知识的电工,请问有什么办法或有什么书推荐一下学习学习   [ 本帖最后由 boofeng2002 于 2012-3-31 11:18 编辑 ]…

查看全部问答>

msp430G2553如何设计迟滞比较器

项目使用launchPAD。 这是GRACE配置的COMP_A+功能图,如果要配置成迟滞比较器,可以用电阻搭外围电路吗?如何设计? …

查看全部问答>

关于 LOANIO 的使用问题

最近在做的东西,需要把HPS端的SPI、I2C、GPIO等等讯号传到FPGA,从FPGA的IO送出 看了一些官方文件试着做,SPI、I2C等 都正常没有问题,但就唯独GPIO怎么弄FPGA就是没反应 GPIO部分我主要是参考这篇文章 http://wenku.baidu.com/view/5e4004b340 ...…

查看全部问答>