中断能够产生。中断初始化 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);
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
在NVIC初始化函数中,是根据之前设置优先级分组先计算掩码,然后用掩码和输入参数一起来运算得到优先级参数。比如你把中断配置为分组1 ,这样Init函数内部就会通过位移运算。只取NVIC_IRQChannelPreemptionPriority 的最低位
和NVIC_IRQChannelSubPriority 的低3位。也就是说你这个函数可以正常运行但抢占优先级不是2而是0。
一周热门 更多>