1.背景:
使用STM32F407的定时器及配置为:
TIM1用于PWM输出,不设中断嵌套;
TIM4、TIM12分别用于两个传感器的PWM输入捕获,均有设置中断嵌套;
TIM6作计时以及其余函数调用的容器,设置中断嵌套。
USART1用于通信,设置中断嵌套
2.定时器Prescaler及Period配置
TIM6, Prescaler=8400-1,Period=100-1;
TIM4, Prescaler=840-1,Period=0xFFFF-1;
TIM12, Prescaler=840-1,Period=0xFFFF-1;
2.中断嵌套顺序为:
USART1——NVIC_PriorityGroup_1,NVIC_IRQChannelPreemptionPriority=0,NVIC_IRQChannelSubPriority=0
TIM6——NVIC_PriorityGroup_2,NVIC_IRQChannelPreemptionPriority=0,NVIC_IRQChannelSubPriority=1
TIM4——NVIC_PriorityGroup_2,NVIC_IRQChannelPreemptionPriority=1,NVIC_IRQChannelSubPriority=2
TIM12——NVIC_PriorityGroup_2,NVIC_IRQChannelPreemptionPriority=1,NVIC_IRQChannelSubPriority=3
描述一下我遇到的问题:
所有的模块单独分开的时候都可以正常工作,且TIM4和TIM12可以同时工作,但加入TIM6之后,则中断嵌套级别最低的TIM12不能正常工作。目前需要USAT1和TIM6继续保持其中断优先的级别顺序,即保持优先级别高且可打断其他中断的能力。请问有无比较好的思路可以解决上述问题。
|