[STM32F4] 关于优先级分组的疑问

[复制链接]
 楼主| 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总是会出现停止工作的情况。
wangpe 发表于 2019-12-13 21:52 | 显示全部楼层
你首先要搞清楚优先级分组到底是干什么用的,优先级分组的目的是分配抢占优先级和子优先级的bit位数,举个例子,假如表示优先级的bit有7bit,分组的目的是让7bit的中的前x个用来表示抢占优先级,后y个用来表示子优先级,x+y=7.
langgq 发表于 2019-12-13 21:55 | 显示全部楼层
赞同楼上,首先整清楚优先级分组的意义
香水城 发表于 2019-12-19 17:17 | 显示全部楼层
这些概念最好结合例程中的代码注释。STM32库例程多少注释还是很详细的。
木木guainv 发表于 2020-1-8 15:50 | 显示全部楼层
只有最后一次有效
您需要登录后才可以回帖 登录 | 注册

本版积分规则

979

主题

8749

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部

979

主题

8749

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部