中级会员
 
- 积分
- 222
- 金钱
- 222
- 注册时间
- 2015-6-10
- 在线时间
- 1 小时
|

楼主 |
发表于 2015-8-10 11:20:04
|
显示全部楼层
回复【8楼】sf116:
---------------------------------
不好意思,有些地方错误了,我再发一次。
假如我的中断在main函数中的设置顺序是这样的:
1、设置systick 中断,組2,抢占优先级为0,响应优先级为0;
NVIC_SetPriority(SysTick_IRQn, 0x00);
2、设置串口1接受非空中断,组1,响应优先级为1;
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
3、设置外部中断0,组0,相应优先级为1
GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource0);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
那么,你的意思其实最后中断的分组是为3中的设置,即组1,是这样吗?那假如说,我把1,即NVIC_SetPriority(SysTick_IRQn, 0x00)中的0x00设置为0x08,那这样的话,其实NVIC_SetPriority(SysTick_IRQn, 0x08)函数中的中断优先级设置是不成功的,因为最后3中设置的中断分组是组0,组0没有分配抢占优先级位,但是NVIC_SetPriority(SysTick_IRQn, 0x08)函数却又是给systick设置的抢占优先级是2。 |
|