历史上的今天
返回首页

历史上的今天

今天是:2024年12月03日(星期二)

正在发生

2018年12月03日 | STM32的中断优先级设定

2018-12-03 来源:eefocus

在STM32的手册里没有提到关于设置中断优先级的情况,只列给出了中断向量表。根据该向量表可以创建一个中断编号的枚举数据,方便设置优先级及使能等的使用。


先说一下如何设置优先级。


优先级的设置在Cortex-CM3中:异常  -> 优先级定义  中有描述;针对优先级的寄存器描述需要查看Cortex-M3编程手册。


可在此处下载手册:http://download.csdn.net/detail/gao_xyz/9780686


1、优先级组的设置


在权威指南 优先级定义中有描述,其优先级由:抢占优先级 和 子优先级组成。


此处需注意:抢占优先级,顾名思义,可以抢占CPU的,当有更高的抢占优先级时,可打断低抢占优先级的中断;同一抢占优先级,当更高的子优先级来临,是不能打断的;当抢占优先级及子优先级都相同时,且中断同时到来,则先执行中断编号小的中断。


(在ucos中就是把PendSV中断和Systick中断设置为抢占及子优先级一致,因此,当在Systick中延时减到零,把其任务放入就绪,并引发调度,而没有立即进入PendSv中断服务函数的原因)


当然既然有抢占优先级和子优先级,那就要看是如何分配的,具体描述可见其编程手册,在权威指南中 优先级定义 部分的中断复位和控制寄存器中也可看书,有个PRIGROUP的位段(8-10,共3位。从0数起),用于设置优先级分组,其分组就对应的抢占优先级及子有限级对应情况如下:



但是并不是所有位都用上的。不同的芯片可能支持的中断级数不一样,有8级,16级,32级等。这个在芯片生产的时候就定好了使用那几位的。如只支持8级中断编程的,只使用3位设置抢占优先级和子优先级。目前使用的是高位,低位不用,如图:



为何使用高位(MSB)对齐呢?具体解释如下:



注:对于设置优先级组寄存,需要先写入访问键值(相当于说对该寄存器的保护作用),之后再写入需要设置的分组数据。


2、各优先级的设置


各中断的优先级的设置只要把设置的数据写入该中断对应的寄存器即可。


具体说一下程序中的设计:


从STM32的手册中断向量部分可以知,各中断向量表的位置是顺序排放的(4字节为单位),看M3编程手册可知,优先级的对应关系与其向量变的排列顺序是一致的,且每8位设置1个优先级。


在上面提到的,根据向量表枚举出各中断的中断编号,需要设置优先级时,通过中断编号来处理就可以了。


注:在设置优先级中,不要随意更改优先级组,不然其他设置的优先级会发生改变,结果不可意料。


推荐阅读

史海拾趣

DESOUTTER公司的发展小趣事

2001年,Desoutter公司与CP(Chicago Pneumatic)和GR(Grorges Renault)合并,成立了CPDI公司。这次合并使Desoutter公司获得了更强大的技术实力和市场资源,进一步巩固了其在气动工具领域的领先地位。合并后,CPDI公司继续致力于气动工具的研发和生产,并推出了一系列创新产品,以满足市场的不断变化和升级需求。

Deltron公司的发展小趣事

在追求经济效益的同时,Deltron公司始终关注环境保护和可持续发展。公司大力推行绿色生产理念,引进环保设备和技术,减少生产过程中的污染物排放。同时,公司还积极参与环保公益活动,提高员工和公众的环保意识。这些举措不仅提升了Deltron的品牌形象,也为公司的长期发展奠定了坚实基础。

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

随着国内市场的不断饱和,Deltron公司开始积极拓展国际市场。通过参加国际展览、与国外企业建立合作关系、设立海外分支机构等方式,Deltron逐渐打开了国际市场的大门。其优质的产品和服务得到了国际客户的认可,为公司的发展注入了新的活力。

Adamant Co Ltd公司的发展小趣事

随着企业规模的扩大,Adamant Co Ltd逐渐意识到社会责任的重要性。公司积极参与公益事业,为社会做出贡献。同时,公司还注重可持续发展,通过采用环保材料和生产工艺、降低能耗等方式,实现绿色生产。这些举措不仅提升了公司的社会形象,也为公司的长期发展注入了新的活力。

这些故事虽然基于虚构的Adamant Co Ltd公司,但其中所描述的挑战、机遇和策略在电子行业中是普遍存在的。通过这些故事,我们可以对电子行业企业的发展过程有一个大致的了解。

ENPIRION公司的发展小趣事

经过数年的研发和技术积累,ENPIRION公司在2004年推出了其首款革命性的产品——将电感集成的DCDC芯片。这款产品的问世引起了业界的广泛关注,因为它极大地减小了负载点稳压所需要的PCB面积和高度,实现了最高功率密度和最小外形封装。这一创新不仅获得了EDN 2004年度全球电源IC最佳产品奖,还赢得了其他众多国际大奖,为ENPIRION公司赢得了业界的广泛认可。

BREL International Components公司的发展小趣事

BREL International Components公司自创立之初,就致力于电子元件的技术创新。在早期阶段,公司研发出一款高性能的集成电路,其稳定性和耐用性远超市场同类产品。这一创新为BREL赢得了众多客户的青睐,公司迅速在电子元件市场占据了一席之地。随着技术的不断进步,BREL持续推出创新产品,如低功耗的芯片和高速传输的连接器,进一步巩固了其在行业内的领先地位。

问答坊 | AI 解惑

一进一出工程案例

系统设计每个进出口由一台计算机管理,在管理处设置一台计算机做进出的授权与管理,数据存放于管理处计算机,管理处可以随时查询车辆与人员的进出与授权情况,三台计算机通过TCP/IP联成局域网络;设备与计算机间采用工业标准RS485/RS422进行通讯。 ...…

查看全部问答>

电流放大电路

谁有电流放大电路的相关资料,拿出来分享一下。实用的电路最好,我找了好几个电路,但调试结果都不太理想。 就这么多了。 [ 本帖最后由 竹林中人 于 2009-6-3 20:26 编辑 ]…

查看全部问答>

2802 AD采样端口采样数字乱跳超过预期

我使用2802内部AD 端口采样电流信号,发现采样零信号,采样值波动很厉害?请教各位…

查看全部问答>

ZigBee技术语音图像无线监控系统的设计与实现

在环境比较恶劣,温度、压力、湿度、震动、噪声和电磁等因素时刻都可能发生变化的情况下,利用一般的网络技术来组建监控系统,可能会因为实时性不够强、灵敏度较小、延迟大、距离短、可靠性较低、受环境限制明显等缺陷,无法全面实时有效地实现安全 ...…

查看全部问答>

关于ADS8556死机的问题~!

最近在用ADS8556,虽然它采样很准确,但存在死机问题。不知道怎么回事,跪求各位大侠给点建议。谢谢!…

查看全部问答>

Wince 输入法

我通过实现IInputMethod接口, 实现了一个软件输入面板(SIP). 通过这个SIP输入字符的时候, 系统会弹出一个默认的候选窗口. 但这个候选窗口比较难看, 请问我可不可以用什么方法去定制这个侯选窗口? 在网上查阅一些资料, 突然对SIP和输入法的概念不 ...…

查看全部问答>

系统节拍问题

各位 请教个问题 100MHZ的 CCLK  系统节拍 为啥是10ms 啊? 根据 系统节拍定时器定时时间= Fcclk/(STRRLOAD+1)计算: Fcclk = 100MHZ  STRRLOAD的默认值为 0x000F 423F 计算得到的 不是10ms啊:$…

查看全部问答>

如何计算FPGA设计频率

我们的设计需要多大容量的芯片?我们的设计能跑多快?这是经常困扰工程师的两个问题.对于前一个问题,我们可能还能先以一个比较大的芯片实现原型,待原型完成再选用大小合适的芯片实现.对于后者,我们需要一个比较精确的预估,我们的设计能跑50M,100M 还 ...…

查看全部问答>

怎样根据原理图编写VHDL程序

怎样根据原理图编写VHDL程序…

查看全部问答>