打印
[其他ST产品]

为什么要把中断优先级配置为NVICPriorityGroup4

[复制链接]
1314|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
两只袜子|  楼主 | 2023-6-16 15:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

为什么要把中断优先级配置为NVIC_PriorityGroup_4

STM32系列MCU是基于ARM公司Cortex-M3内核设计开发。ARM Cortex_m3 内核支持 256 个中断(16个内核+240 外部)和可编程 256 级中断优先级的设置,中断控制和中断优先级控制寄存器也都属于Cortex M3 内核的部分。

STM32在例化与设计实现中仅支持84个中断,包括16个内核中断和68个可屏蔽中断,具有16级可编程的中断优先级。
STM32支持的68个外部中断通道已经固定的分配给响应的外部通道,如(DMA,TIM等)。

每个中断通道都有自己的中断优先级控制字节PRI_n(8位,STM32中只是用高四位),每4个通道的8位中断优先级控制字PRI_n构成一个32位的优先级寄存器(Priority Register)。68个外部通道可以构成17个32位的优先级寄存器。
对于4bit的中断优先级控制位可以进行对抢占式优先级和响应式优先级(又称子优先级、亚优先级)进行分配,其中抢占式优先级在高位,响应式在低位,可以通过设置AIRCR(Application Interrupt / Reset Control Register)寄存器的[10:8]但来确认抢占式和响应式分别能在4bit的中断优先级控制位中占到几个通过分配可以有以下几种情况:

view plaincopy to clipboardprint?

  • #define NVIC_PriorityGroup_0          ((uint32_t)0x700) /*!< 0 bits for pre-emption priority  
  • 4 bits for subpriority */  
  • #define NVIC_PriorityGroup_1          ((uint32_t)0x600) /*!< 1 bits for pre-emption priority  
  • 3 bits for subpriority */  
  • #define NVIC_PriorityGroup_2          ((uint32_t)0x500) /*!< 2 bits for pre-emption priority  
  • 2 bits for subpriority */  
  • #define NVIC_PriorityGroup_3          ((uint32_t)0x400) /*!< 3 bits for pre-emption priority  
  • 1 bits for subpriority */  
  • #define NVIC_PriorityGroup_4          ((uint32_t)0x300) /*!< 4 bits for pre-emption priority  

在新版本的stm32CubeMX软件,配置完成工程后,其自动生成的代码里,均将中断配置参考选择了NVIC_PriorityGroup_4。那么问题来了,为什么会推荐或者默认使用这个参数呢?

STM32 有 5 个分组(STM32 中定义的分组 0 对应的值是 7!)如果我们选择分组 4,即 NVIC_PriorityGroup_4 的话,那 4 位优先级就都全是抢占优先级了,没有亚优先级,那么就有 0~15 共 16 个优先级。这就是关键!全部应用了抢占式优先级。

对于中断优先级的知识分享还有好多!比如,在FreeRTOS中,抢占式优先级怎么使用?带来哪些优势?等静待版主补充吧!

P.S. 当然,论坛里面的小伙伴也欢迎来补充!


使用特权

评论回复
沙发
Undshing| | 2023-6-16 22:49 | 只看该作者
为什么不一半抢占一半子优先级啊?感觉这才是折中的选项啊

使用特权

评论回复
板凳
AloneKaven| | 2023-6-17 23:05 | 只看该作者
抢占优先级高的会优先抢占优先级低的

使用特权

评论回复
地板
Jacquetry| | 2023-6-18 22:41 | 只看该作者
优先级设置太高了也会引发一些bug的

使用特权

评论回复
5
远山寻你| | 2023-6-22 20:10 | 只看该作者
这个还真没研究过,一般都是拿来就用了

使用特权

评论回复
6
淡漠安然| | 2023-6-22 22:04 | 只看该作者
楼主这个讲的挺有意义的,知道中断从哪儿来,怎么配置,等等

使用特权

评论回复
7
江河千里| | 2023-6-23 01:12 | 只看该作者
一般要是中断用的少,用中断2组那个也行吧

使用特权

评论回复
8
别乱了阵脚| | 2023-6-23 03:21 | 只看该作者
cubemx生成的就是比较简单不烧脑

使用特权

评论回复
9
冰春彩落下| | 2023-6-23 05:36 | 只看该作者
对,期待对FreeRTOS中,抢占式优先级怎么使用的讲解

使用特权

评论回复
10
暖了夏天蓝了海| | 2023-6-23 07:13 | 只看该作者
优先级这些属实需要好好规划一下,不然不好弄

使用特权

评论回复
11
三生万物| | 2023-6-23 09:48 | 只看该作者
一般不都是用NVICPriorityGroup2

使用特权

评论回复
12
光辉梦境| | 2023-6-23 11:55 | 只看该作者
中断要是玩好了,估计以后操作系统也是很好上手的了

使用特权

评论回复
13
夜阑风雨| | 2023-6-23 21:06 | 只看该作者
反正就是默认用就OK了,肯定是没问题的

使用特权

评论回复
14
一秒落纱| | 2023-6-23 23:45 | 只看该作者
其实要是选择其他中断组也是没事儿的,只是官方这么推荐,就用官方的就好了

使用特权

评论回复
15
童雨竹| | 2024-2-1 07:02 | 只看该作者

根据色彩的变化记录每一行的颜色跳变点,由此识别出车牌区域。

使用特权

评论回复
16
Wordsworth| | 2024-2-1 08:05 | 只看该作者

切割完了第四个字符之后,再依次扫描剩下的空间,直到所扫描的这一竖上的所有点的灰度值不全为0时,认为是字符的开始并依次扫描直到所扫描的这一竖上的所有点的灰度值全为0时认为是字符的结束。

使用特权

评论回复
17
Clyde011| | 2024-2-1 09:08 | 只看该作者

需要设定一个阈值来对像素点进行设置

使用特权

评论回复
18
公羊子丹| | 2024-2-1 10:01 | 只看该作者

计算量小,计算快。缺点也严重:在不同的图像中,颜色分布差别大,处理效果也不会很好。

使用特权

评论回复
19
万图| | 2024-2-1 11:04 | 只看该作者

在内存中开辟七个长为车牌长的七分之一和宽为车牌宽的区域

使用特权

评论回复
20
Uriah| | 2024-2-1 12:07 | 只看该作者

二值化就是让图像的像素点矩阵中的每个像素点的灰度值为0(黑色)或者255(白色

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2038

主题

7363

帖子

10

粉丝