我首先设置中断优先级
void
NVIC_TIME4_Configuration()
{
NVIC_InitTypeDef
NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitStructure.NVIC_IRQChannel
= TIM4_IRQn; //TIM3中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority
= 2; //先占优先级2级
NVIC_InitStructure.NVIC_IRQChannelSubPriority
= 1; //从优先级0级
NVIC_InitStructure.NVIC_IRQChannelCmd
= ENABLE; //IRQ通道被使能
NVIC_Init(&NVIC_InitStructure);
//根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器
}
我单步调试,发现执行到这句话 (使能定时器4更新中断)
TIM_ITConfig(TIM4,TIM_IT_Update,ENABLE);
就进入了HardFault_Handler
我将中断优先级优先级函数NVIC_TIME4_Configuration()屏蔽之后就可以运行下去了,或者是将使能定时器4更新中断改为定时器3更新中断就可以了运行下去了
谁知道是咋回事了????????????
我程序里面没有在设置其它的中断优先级了,就这一个中断
|