有些STM32用户,尤其是那些用过基于ARM Cortx-M3/M4/M7内核的STM32 MCU的用户,在使用基于M0/M0+内核的STM32系列并通过STM32CubeMx进行NVIC配置时,不难发现一个问题,那就是怎么没有中断子优先级【或称响应优先级、副优先级等】的配置?!【当然,很多时候我们或许没有关注子优先级】如下图所示,只看到抢占优先级的配置,看不到子优先级的配置项。
上图是我基于STM32L0系列芯片的配置,该系列芯片是基于ARM Cortex-M0+内核的。我们再看看下图的NVIC配置页面,显然可以看到抢占优先级【Preemption Priority】和子优先级【Sub
Priority】的配置项及相关信息。
上图是我基于STM32G4系列芯片的NVIC配置页面。该系列的内核是ARM Cortex-M4。
当我们使用STM32系列芯片并通过CubeMx图形化工具进行NVIC配置时,相应界面有无子优先级的配置,取决于该系列芯片所用的ARM Cortex内核。如果说所用STM32系列是基于ARM Cortex-M0或M0+内核的,在进行NVIC配置时是没有子优先级可以配置的。
ARM Cortex-M0或M0+内核的中断优先级控制寄存器实际有效位就是2位,全部用来对各个中断/异常做抢占优先级配置,不额外划分子优先级的配置。
也就是说,基于ARM Cortex-M0或M0+内核的STM32 MCU的NVIC配置不会有子优先级的概念和配置,对于优先级可配置的中断而言,总共就4个可抢占优先级。下图是基于ARM Cortex-M0或M0+内核的STM32系列展示。当然,STM32系列涉及的内核很多,远不止下面这些,还有M4/M7/M33等。
而ARM Cortex-M3、M4、M7内核的中断优先级配置寄存器的有效位为4位,同时还可以基于该4位做优先级的分组,进而引出抢占优先级和子优先级。
-
芯片
+关注
关注
457文章
51361浏览量
428313 -
mcu
+关注
关注
146文章
17371浏览量
353007 -
ARM
+关注
关注
134文章
9186浏览量
369769 -
STM32
+关注
关注
2274文章
10929浏览量
358041
发布评论请先 登录
相关推荐
STM32 MCU通过STM32CubeMx配置NVIC怎么没有中断子优先级选项
![STM32 MCU通过STM32<b class='flag-5'>CubeMx</b><b class='flag-5'>配置</b><b class='flag-5'>NVIC</b>怎么没有中断<b class='flag-5'>子</b><b class='flag-5'>优先级</b><b class='flag-5'>选项</b>](https://file1.elecfans.com/web2/M00/A3/B1/wKgaomT7yqmAInx3AAAt9klGPxQ079.png)
STM32F103的寄存器NVIC_IPRx抢占优先级和子优先级是怎么设置的?
[转] STN32抢占优先级与副优先级及中断优先级NVIC理解
UCOS3的串口优先级配置问题如何解决
stm32配置中断的优先级问题
NVIC中断优先级分组
关于STM32H725 NVIC优先级和次优先级问题求解
STM32NVIC中断优先级
![STM32<b class='flag-5'>NVIC</b>中断<b class='flag-5'>优先级</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
评论