打印
[STM32F4]

关于优先级分组的疑问

[复制链接]
494|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hanwe|  楼主 | 2021-12-7 20:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
无论系统有多少中断,函数NVIC_PriorityGroupConfig(NVIC_PriorityGroup_x)是不是只能设置一次(0~4组)?谢谢!

使用特权

评论回复
沙发
jiajs| | 2021-12-7 20:42 | 只看该作者
中断未发生前,最后设置的那次有效

使用特权

评论回复
板凳
hanwe|  楼主 | 2021-12-7 20:44 | 只看该作者
我还有个疑问,既然只有一次设置是有效的,无论怎么分组,只有16级优先级,那分组还有什么意义?

使用特权

评论回复
地板
hanwe|  楼主 | 2021-12-7 20:46 | 只看该作者
407VET6系统,除了TICK中断外,还有COM1、COM6、DMA2_STREAM0、DMA2_STREAM1、DMA1_STREAM0、DMA1_STREAM2、DMA1_STREAM4 5个中断,中断分组选择第四组(SCB->AIRCR:0xFA050300);DMA2_STREAM0、DMA2_STREAM1用来读取ADC的转换结果,抢占优先级和子优先级分别是0、0,工作正常;COM1、COM6的抢占优先级和子优先级分别是2、0和1、0,工作正常;DMA1_STREAM0、DMA1_STREAM2、DMA1_STREAM4分别用来读取TIM5的CH3、CH1、CH2的捕捉数据(测量电网三相信号频率),DMA1_STREAM0、DMA1_STREAM2、DMA1_STREAM4的抢占优先级和子优先级都是15、0,DMA1_STREAM0工作完全正常,而DMA1_STREAM2和DMA1_STREAM4总是会出现停止工作的情况。

使用特权

评论回复
5
stly| | 2021-12-7 20:50 | 只看该作者
你首先要搞清楚优先级分组到底是干什么用的,优先级分组的目的是分配抢占优先级和子优先级的bit位数,举个例子,假如表示优先级的bit有7bit,分组的目的是让7bit的中的前x个用来表示抢占优先级,后y个用来表示子优先级,x+y=7.

使用特权

评论回复
6
dengdc| | 2021-12-7 20:52 | 只看该作者
赞同楼上,首先整清楚优先级分组的意义

使用特权

评论回复
7
jlyuan| | 2021-12-7 20:54 | 只看该作者
这些概念最好结合例程中的代码注释。STM32库例程多少注释还是很详细的。

使用特权

评论回复
8
heweibig| | 2021-12-7 20:56 | 只看该作者
只有最后一次有效

使用特权

评论回复
9
hanwe|  楼主 | 2021-12-7 20:58 | 只看该作者

好的,我明天去单位试一下,多谢各位大侠了哈        

使用特权

评论回复
10
tpgf| | 2022-1-5 14:59 | 只看该作者
运行过程中可以再次设置吗

使用特权

评论回复
11
xiaoqizi| | 2022-1-5 15:03 | 只看该作者
问题是过程中重新定义估计会造成混乱

使用特权

评论回复
12
木木guainv| | 2022-1-5 15:05 | 只看该作者
应该是以最后一次为准

使用特权

评论回复
13
磨砂| | 2022-1-5 15:08 | 只看该作者
要注意避免竞争的出现

使用特权

评论回复
14
晓伍| | 2022-1-5 15:17 | 只看该作者
可以多次设置 但是最后一次有效

使用特权

评论回复
15
八层楼| | 2022-1-5 15:18 | 只看该作者
需要想办法避免产生混乱

使用特权

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

本版积分规则

979

主题

8749

帖子

4

粉丝