历史上的今天
返回首页

历史上的今天

今天是:2024年10月08日(星期二)

正在发生

2019年10月08日 | STM32中断及FreeRTOS中断优先级配置知识

2019-10-08 来源:eefocus

很多朋友对中断的一些知识还是不了解,今天就写点关于Cortex-M3处理器中断相关,以及FreeRTOS中断优先级配置的内容。


从Cortex-M到Cortex-A认识ARM处理器,了解一下关于ARM处理器的种类。


本文主要结合Cortex-M3下面STM32F1系列处理器为例来讲述中断控制相关内容。而Cortex-M其它系列,或者说STM32其它系列关于中断的内容类似。


Cortex-M3只是STM32F1的一个内核。反过来说STM32F1是在Cortex-M3基础上增加了一些外设(如:USART、AD等)的芯片。


2

STM32中断控制

NVIC:Nested Vectored Interrupt Controller,即嵌套向量中断控制器。


STM32中NVIC我们比较熟悉,编程的时候使用中断都会对NVIC进行配置。


而STM32F1中的NVIC是属于Cortex-M3中的一部分,而不是STM32增加的外设。


NVIC向量中断控制器是Cortex‐M3不可分离的一部分,它与 CM3 内核的逻辑紧密耦合,有一部分甚至水乳交融在一起。


所以,NVIC相关的寄存器位于Cortex-M手册中。讲述STM32的中断控制,还得从Cortex-M3的NVIC讲起,


1.中断输入向量表

Cortex-M3的NVIC支持1至240个中断输入,比如STM32中xxxIRQs,也就是中断向量表,具体的数值由芯片厂商在设计芯片时决定。


比如STM32F1的中断和异常向量表:

640?wx_fmt=png

640?wx_fmt=png


2.中断和异常区别

很多初学的朋友不知道什么是中断?什么是异常?甚至有人直接把中断和异常笼统称为“中断”。


中断和异常其实有差异,也有关联,我们常说的中断其实是包含了异常。异常可以理解为MCU,或者程序处于了某种异常状态。


这么区分吧,看上面向量表,上部分有灰色背景的为异常,下部分白色的为中断。


异常属于Cortex‐M3内核的一部分,而中断属于MCU(STM32)的一部分(由厂家决定)。


所以:

1.站在Cortex‐M3内核角度,像STM32中USART这类中断,属于外部中断。


2.站在STM32角度,EXTI外部引脚中断才属于中断。


3.优先级

对于Cortex-M3来说,每个外部中断都有一个对应的优先级寄存器。


每个寄存器占用8位,但是允许最少只使用最高3位,在STM32F1中使用了高4位。(也就是我们可以分16个优先级)


优先级可以被分为高低两个位段,分别是抢占优先级和亚(响应)优先级。

640?wx_fmt=png

提示:

1.STM32中断优先级数值越小,优先级越大。


2.优先级分组:Cortex-M3,M4具有分组功能,即存在抢占优先级和响应优先级,如下图:

640?wx_fmt=png

而有的内核就没有,如Cortex-M0就没有。


3.参考资料

可以参看《Cortex-M3权威指南》


STM32的内核编程手册:

http://www.st.com/stonline/products/literature/pm/15491.pdf


3

FreeRTOS中断优先级配置

本节内容讲述一下FreeRTOS最大中断优先级配置问题,也就是FreeRTOSConfig.h配置文件中的:

configMAX_SYSCALL_INTERRUPT_PRIORITY

640?wx_fmt=png


你们知道配置数值的含义吗?


这里就需要结合NVIC相关的内容来理解。


上面说了,在STM32中,使用了NVIC优先级的高4位,而我们配置时需要对高4位进行配置(低4位未使用)。

640?wx_fmt=png

看上图,明白了吗,上面这个数值就是95,但代表的优先级为5。


这个配置数值的含义,大概意思是:你代码中使用的中断(比如USART1_IRQn)优先级需要大于5才可行。


如下面配置,优先级为2就不行(当然,有分组的还牵涉到分组问题)。

640?wx_fmt=png


推荐阅读

史海拾趣

Chengdu Sino Microelectronics Technology Co Ltd公司的发展小趣事

在集成电路设计领域,技术的突破是赢得市场的关键。成都华微科技始终坚持以技术研发为核心,不断投入巨资进行技术研发和创新。经过多年的努力,公司在可编程逻辑器件、系统级芯片、存储器和模数/数模转换器(AD/DA)芯片等领域取得了重大突破,产品性能达到了国内领先水平。这些技术突破不仅为公司赢得了市场的认可,也提升了中国集成电路设计行业的国际地位。

Free2Move公司的发展小趣事

面对日新月异的电子技术和不断变化的市场需求,成都华微科技始终坚持持续创新的发展理念。公司不断加大对新技术、新产品的研发投入,积极探索新的商业模式和市场机会。同时,公司还注重人才培养和团队建设,为公司的长远发展储备了丰富的人才资源。正是这种持续创新的精神,使成都华微科技在激烈的市场竞争中始终保持领先地位,引领着中国集成电路设计行业的未来发展。

这五个故事只是成都华微电子科技有限公司发展历程中的一部分,但它们足以展现出这家公司在电子行业中的坚定决心、技术实力、合作精神和创新能力。正是这些因素的共同作用,使成都华微科技能够在激烈的市场竞争中脱颖而出,成为电子行业的佼佼者。

AAT [Advanced Analog Technology, Inc.]公司的发展小趣事

在集成电路设计领域,技术的突破是赢得市场的关键。成都华微科技始终坚持以技术研发为核心,不断投入巨资进行技术研发和创新。经过多年的努力,公司在可编程逻辑器件、系统级芯片、存储器和模数/数模转换器(AD/DA)芯片等领域取得了重大突破,产品性能达到了国内领先水平。这些技术突破不仅为公司赢得了市场的认可,也提升了中国集成电路设计行业的国际地位。

ATP [ATP Electronics]公司的发展小趣事

ATP深知,优质的产品需要优质的服务来支撑。因此,公司一直致力于提升客户服务水平,为客户提供最优质的产品、最具竞争力的价格和最优质的服务。ATP通过建立完善的售后服务体系,及时解决客户在使用过程中遇到的问题,赢得了客户的信任和好评。同时,公司还积极开展市场调研,了解客户需求,不断优化产品和服务,以满足市场的不断变化。

这五个故事展示了ATP Electronics在电子行业中的发展历程和取得的成就。通过技术创新、推出工业级产品、践行环保理念、实施全球化战略以及提升优质服务,ATP成功地在激烈的市场竞争中脱颖而出,成为了闪存卡市场的领军企业。

Custom Connector Corporation公司的发展小趣事

CCC深知产品质量对于企业生存和发展的重要性。因此,公司始终将质量管理放在首位,建立了严格的质量检测体系和售后服务体系。从原材料采购到产品生产、再到售后服务,CCC都严格按照质量标准进行操作,确保每一件产品都符合客户的要求。这种对质量的执着追求让CCC赢得了客户的信赖和口碑相传。

德索五金(dosinconn)公司的发展小趣事

问答坊 | AI 解惑

超声波物位计的市场趋势

液位计的市场趋势 液位计应用场合极不相同,因而种类也繁多(超声波物位计)。 生产过程中各类塔釜罐液位的检测,目前仍是以压力和差压变送器为主。这除了其自身性价比还有一定的优势外,还有设计和应用的习惯问题。其次是磁浮子式、浮筒式、电容 ...…

查看全部问答>

请教关于DA转换的电路?

读出倾角传感器的模拟电压输出值,把它转换为数字信号!各位高手给点参考的资料吧。A\\D D\\A这是第一次弄,很菜!!!谢谢啦!-_-#…

查看全部问答>

请教一个老问题,关于获取sd卡序列号

找了不少以前的文章,还是没有解决我的问题 读取SD卡的序列号,老实说,我还没有做到,我不知是为什么,下边的代码希望能抛砖引玉,解决好这个问题。      问题的关键所在:在WINCE下,IOCTL_DISK_GET_STORAGEID    ...…

查看全部问答>

WINCE应用程序开发

     学习和使用了半年多的C#,现在转向WINCE应用程序开发,网上和朋友都推荐我使用VC进行WINCE应用 程序开发,谈到说C#将会是WINDOWS桌面程序的天下,而在WINCE下还是VC的天下,     自己要放弃C#,从头天始学习VC ...…

查看全部问答>

btdrt.lib问题

我现在在做魅族M8的蓝牙开发程序,对于配对想通过自己的程序实现,其中需要用到BthGetPINRequest等函数。这些函数在bt_api.h中是存在的,但是编译的时候不能通过,查阅MSDN需要加入btdrt.lib。但是SDK中并没有提供。而且我在网上搜不到。不知道我应 ...…

查看全部问答>

MC34063降压驱动电路

用MC34063做降压确实效率比专业IC的低,但是作为低成本的不失为一个好方案, 如果要求高一点可以用PT4115来做.或者其它类似的IC. 如果说是输入12V的电子变压器是没有什么问题,如果输入24V的话,那就要看电子变压器的稳压程度怎么样 ...…

查看全部问答>

[Johnson & Graham]1_High-speed Digital Design 中文版

高速数字电路设计 中文版,概述就不必了,经典书!!     资源共享,不要收费了,大家学习!!       …

查看全部问答>

STM32最小系统板设计资料,适合做各种实验

STM32的一大特色就是各种不同封装的型号之间的引脚是互相兼容的,这里介绍的2个STM32最小系统板体现了这个特色。 下载 (219.33 KB) 2009-11-12 16:01 下图中左边是PCB的背面,右边是PCB的正面,上半边的板适合于36脚和 ...…

查看全部问答>

关于DK-LM3Sxxxx开发板的一点建议

最近公司有个项目要搞,正好拿luminary练一下手。看到了DK-LM3S9B96开发板这个板子不错,功能很强大。唯一不足的是没有485输出。可能是我从参加工作到目前搞的产品有关,几乎是每个板子都需要485接口的。而且我感觉,在实际工作中,各种工控产品, ...…

查看全部问答>

单片机直接用电池驱动不加稳压电路行吗....

我自己做了一个单片机最小系统,可是在用P0口(已加上拉电阻),控制led灯时,   #include<reg52.h>sbit feng=P0^1;int i;void main() {   i=10000; while(1)  {   feng=0;   while(i- ...…

查看全部问答>