为什么同时打开TIM4,5,6,7,发现中断响应函数里面中断时间发生延迟,开的中断越多越延迟

2019-07-21 00:57发布

如题: 为什么同时打开TIM4,5,6,7,发现中断响应函数里面中断时间发生延迟,开的中断越多越延迟 我的中断响应函数里仅仅是执行 一次IO的反转而已,为什么开一个TIM中断时中断响应时间正常,开2个就都延迟一些,开4个就都更加延迟了呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
11条回答
sfraim
2019-07-21 19:15
这是TIM4的,其他TIM5,TIM5,TIM7的函数都一样的设置,但是同时打开这几个定时器时,我发现所有的中断响应函数都变慢了,只开一个定时器比如TIM4的时候,是正常的速度 
void TIM4_Base_Init()
{
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); //时钟使能

TIM_TimeBaseStructure.TIM_Period = 3;  //重装值,默认
TIM_TimeBaseStructure.TIM_Prescaler =60; //分频系数,72M/72=1MHz,其他依此类推  
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式
TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);     //把上述数值写入对应寄存器
 
TIM_ITConfig(TIM4,TIM_IT_Update,ENABLE);            //使能或者失能指定的TIM中断

NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn;            //TIM3中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  //先占优先级0级
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;  //从优先级3级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能
NVIC_Init(&NVIC_InitStructure);                 //把上述数值写入对应寄存

TIM_Cmd(TIM4, ENABLE);  //使能TIMx外设
 
}

一周热门 更多>