打印
[STM32F4]

关于优先级分组的疑问

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

使用特权

评论回复
沙发
llia| | 2019-12-13 21:43 | 只看该作者
中断未发生前,最后设置的那次有效

使用特权

评论回复
板凳
hanwe|  楼主 | 2019-12-13 21:47 | 只看该作者
感谢二楼的指点!我还有个疑问,既然只有一次设置是有效的,无论怎么分组,只有16级优先级,那分组还有什么意义?

使用特权

评论回复
地板
hanwe|  楼主 | 2019-12-13 21:50 | 只看该作者

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
wangpe| | 2019-12-13 21:52 | 只看该作者
你首先要搞清楚优先级分组到底是干什么用的,优先级分组的目的是分配抢占优先级和子优先级的bit位数,举个例子,假如表示优先级的bit有7bit,分组的目的是让7bit的中的前x个用来表示抢占优先级,后y个用来表示子优先级,x+y=7.

使用特权

评论回复
6
langgq| | 2019-12-13 21:55 | 只看该作者
赞同楼上,首先整清楚优先级分组的意义

使用特权

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

使用特权

评论回复
8
木木guainv| | 2020-1-8 15:50 | 只看该作者
只有最后一次有效

使用特权

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

本版积分规则

979

主题

8749

帖子

4

粉丝