stm32 中断设置
在书上看到一个例子:NVIC_InitTypeDefNVIC_InitStructure;NVIC_PriorityGroupConfig(NVIC_ProiorityG...
在书上看到一个例子:
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_ProiorityGroup_1); //这一句
NVIC_InitStructure.NVIC_IRQChannel = TIM_IRQChannel;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//这句
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; //还有这句
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure) ;
如上注释的标志,第一句和后两句是什么关系? 展开
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_ProiorityGroup_1); //这一句
NVIC_InitStructure.NVIC_IRQChannel = TIM_IRQChannel;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//这句
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; //还有这句
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure) ;
如上注释的标志,第一句和后两句是什么关系? 展开
1个回答
展开全部
NVIC_PriorityGroupConfig(NVIC_ProiorityGroup_1);//把应用程序中断复位控制寄存器的10-8位设位1,表示1位抢断优先级,3位表示子优先级
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;此处只能为0或1,因为1位来表示
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;此处可以是0-7,因为是3位表示
把TIM_IRQChanne的抢断优先级设为0,子优先级设为2,数字越小优先级越高,抢断优先级可以打断其他的中断,而子优先级不能
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;此处只能为0或1,因为1位来表示
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;此处可以是0-7,因为是3位表示
把TIM_IRQChanne的抢断优先级设为0,子优先级设为2,数字越小优先级越高,抢断优先级可以打断其他的中断,而子优先级不能
追问
你的意思是不是说TIM是先由NVIC_PriorityGroupConfig(NVIC_ProiorityGroup_1);决定优先级和子优先级的大小?然后真正设定TIM的优先级时可以在NVIC_PriorityGroupConfig中所设定的范围内任意选择?比如你说的1位表示和3位表示是由于NVIC_ProiorityGroup_1优先级是0~1,子优先级是0~7?
追答
对,就是这个意思
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询