新手上路
- 积分
- 31
- 金钱
- 31
- 注册时间
- 2020-11-14
- 在线时间
- 13 小时
|
求助各位前辈。
程序中fre设为10,即STM32F407定时器TIM5每100ms进入一次中断,并在中断内将Count1加一,Count1累计到10时(1秒)将Count2加1。
问题是Count2每加1的时间间隔有时不为1s。
请问是哪里出了问题呢?
提前感谢解惑!
void TIM5_Init(u8 fre)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseStructure.TIM_Period = 84000000/84/fre - 1;
TIM_TimeBaseStructure.TIM_Prescaler = 84 - 1;
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseInit(TIM5,&TIM_TimeBaseStructure);
TIM_ITConfig(TIM5,TIM_IT_Update,DISABLE);
TIM_ClearFlag(TIM5,TIM_FLAG_Update);
TIM_Cmd(TIM5,DISABLE);
}
void TIM5_Enable(void)
{
Count1 = 0;
Count2 = 0;
TIM_ITConfig(TIM5, TIM_IT_Update, ENABLE);
TIM_Cmd(TIM5,ENABLE);
}
void TIM5_IRQHandler(void)
{
if(TIM_GetITStatus(TIM5,TIM_IT_Update) == SET)
{
Count1++;
if(Count1 == 10)
{
Count1 = 0;
Count2++;
}
TIM_ClearFlag(TIM5,TIM_FLAG_Update);
}
}
|
|