NVIC_PriorityGroupConfig的问题

2019-07-20 15:35发布

中断能够产生。中断初始化   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); //组1/*
   NVIC_PriorityGroup_1: 1 bits for pre-emption priority
  *                                3 bits for subpriority
*/
   NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQChannel;  
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; //这里设置为2,会有什么问题?  
    NVIC_InitStructure.NVIC_IRQChannelSubPriority =1;  
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  
    NVIC_Init(&NVIC_InitStructure);  






友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
whyviking
1楼-- · 2019-07-20 16:18
本帖最后由 whyviking 于 2017-4-4 17:58 编辑

在NVIC初始化函数中,是根据之前设置优先级分组先计算掩码,然后用掩码和输入参数一起来运算得到优先级参数。比如你把中断配置为分组1 ,这样Init函数内部就会通过位移运算。只取NVIC_IRQChannelPreemptionPriority 的最低位
和NVIC_IRQChannelSubPriority 的低3位。也就是说你这个函数可以正常运行但抢占优先级不是2而是0。
Electronic
2楼-- · 2019-07-20 16:47
有问题的,分组和优先级需要使用正确,否则你的优先级还有问题,具体什么问题,我还没有仔细研究
zzb_qwe
3楼-- · 2019-07-20 17:04
 精彩回答 2  元偷偷看……
szczyb1314
4楼-- · 2019-07-20 22:11
中断优先级组1的时候抢占优先级不可能是2,只能是1 or 0;抢占优先级高的可以打断抢占优先级低的,响应优先级高的不可打断响应优先级低的。这个优先级都是数值越小优先级越高。

一周热门 更多>