作业帮 > 综合 > 作业

stm32 高级定时器tim1和普通定时器tim2的问题,很不理解

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/25 01:40:53
stm32 高级定时器tim1和普通定时器tim2的问题,很不理解
本人写了一个很简单的stm32 的 普通定时器 tim2 的中断程序,实现1秒定时,通过中断来实现闪灯.但是当我把程序里的所有tim2换成tim1,也就是变成高级定时器定时,程序其他的全都没改,可是发现中断的速度由1秒变成了20多秒,为什么呢,不理解啊.tim1的时钟和tim2的时钟设置的都是 72M啊.为什么tim1就变慢了呢
配置函数如下:
void nvic_ready()
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQChannel;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
void tim2_ready()
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_TimeBaseStructure.TIM_Period = 9999;
TIM_TimeBaseStructure.TIM_Prescaler = 7199;
TIM_TimeBaseStructure.TIM_ClockDivision = 0 ;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM2, & TIM_TimeBaseStructure);
TIM_ClearITPendingBit(TIM2, TIM_FLAG_Update);
TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);
TIM_Cmd(TIM2,ENABLE);
}
中断程序也改成tim1的了,但是程序内容都没变
系统中TIM2时钟用的是APB1,TIM1用的是APB2,APB1限定速度在36MHz,APB2速度可以达到72MHz,在时钟配置上可以看下,TIM1是高级定时器,比TIM2的普通定时器要复杂一些,你可以在看下库例程中,对TIM1中的配置有何不同,感觉不会错这么多