高级会员

- 积分
- 568
- 金钱
- 568
- 注册时间
- 2015-1-12
- 在线时间
- 75 小时
|
F411工程中也是这样,中断分组是4 /* Set Interrupt Group Priority */通过手册或者hal库函数定义可以明白,当分组为4时,用于中断分组的4位全部用来做抢占优先级用,0位用于子优先级。
@arg NVIC_PRIORITYGROUP_0: 0 bits for preemption priority
* 4 bits for subpriority
* @arg NVIC_PRIORITYGROUP_1: 1 bits for preemption priority
* 3 bits for subpriority
* @arg NVIC_PRIORITYGROUP_2: 2 bits for preemption priority
* 2 bits for subpriority
* @arg NVIC_PRIORITYGROUP_3: 3 bits for preemption priority
* 1 bits for subpriority
* @arg NVIC_PRIORITYGROUP_4: 4 bits for preemption priority
* 0 bits for subpriority
HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);
但是某中断的响应中断级别居然还有2
//中断线0-PA0
HAL_NVIC_SetPriority(EXTI0_IRQn,2,2); //抢占优先级为2,子优先级为2
HAL_NVIC_EnableIRQ(EXTI0_IRQn); //使能中断线0
//中断线8、9-PC8、9
HAL_NVIC_SetPriority(EXTI9_5_IRQn,2,1); //抢占优先级为2,子优先级为1
HAL_NVIC_EnableIRQ(EXTI9_5_IRQn);
//中断线2-PD2
HAL_NVIC_SetPriority(EXTI2_IRQn,2,0); //抢占优先级为2,子优先级为0
HAL_NVIC_EnableIRQ(EXTI2_IRQn); //使能中断线2
不报错是因为这些数据是合理的,但是设置的中断级别可能就不是按照所想的那样了,可能会出错
|
|