打印

关于TIM3的定时问题

[复制链接]
1241|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yybj|  楼主 | 2010-10-9 10:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在做作业时需要用到一个通用定时器计时,于是选用TIM3,配置函数如下:
void TIM3_Configuration(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_TimeBaseStructure.TIM_Prescaler=36000-1;  //时钟频率=72M/(Prescaler+1)=2000,一秒计数2000次
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;    // 时钟分割
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;   //向上计数模式
TIM_TimeBaseStructure.TIM_Period=2000;    //自动重装寄存器的值,经计数Period次后发生一次中断
TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);     //使能TIM3中断源中断
TIM_Cmd(TIM3,ENABLE);     //使能TIM3外设
}
中断函数为:
void TIM3_IRQHandler(void)
{
   if(TIM_GetITStatus(TIM3,TIM_IT_Update)!=RESET)//判断是否为定时器3溢出中断
   {
     count_time++;
   }

   TIM_ClearFlag(TIM3, TIM_FLAG_Update);      //清中断标记
   TIM_ClearITPendingBit(TIM3,TIM_IT_Update);  // 清除TIMx的待中断处理位
}
系统时钟已经设为72M,本来想让TIM3每一秒产生一次中断,然后count_time加1,但实际count_time大概加到280时实际时间才过1秒,这是什么原因呢?求解!

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

175

主题

2496

帖子

1

粉丝