打印
[STM32F4]

关于优先级分组的疑问。

[复制链接]
1203|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yzzly|  楼主 | 2018-5-25 15:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
无论系统有多少中断,函数NVIC_PriorityGroupConfig(NVIC_PriorityGroup_x)是不是只能设置一次(0~4组)?谢谢!
沙发
zchong| | 2018-5-25 19:29 | 只看该作者
中断未发生前,最后设置的那次有效

使用特权

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

使用特权

评论回复
地板
yzzly|  楼主 | 2018-5-26 09:20 | 只看该作者
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
zchong| | 2018-5-26 11:20 | 只看该作者
yzzly 发表于 2018-5-26 08:06
感谢二楼的指点!我还有个疑问,既然只有一次设置是有效的,无论怎么分组,只有16级优先级,那分组还有什么 ...

你首先要搞清楚优先级分组到底是干什么用的,优先级分组的目的是分配抢占优先级和子优先级的bit位数,举个例子,假如表示优先级的bit有7bit,分组的目的是让7bit的中的前x个用来表示抢占优先级,后y个用来表示子优先级,x+y=7.

使用特权

评论回复
6
Ryze| | 2018-5-27 18:15 | 只看该作者
赞同楼上,首先整清楚优先级分组的意义

使用特权

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

本版积分规则

427

主题

1182

帖子

3

粉丝