打印

为什么我的定时器不准?

[复制链接]
2068|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
violet520|  楼主 | 2008-8-20 10:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
芯片:STM32F103
想产生1秒的定时,使用TIMER2
void TIM_Configuration(void)

  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
//  TIM_OCInitTypeDef  TIM_OCInitStructure ;
  TIM_DeInit( TIM2);//复位TIM2定时器

  /* TIM2 configuration */
  TIM_TimeBaseStructure.TIM_Period = 1000 //最大计数值1000     
  TIM_TimeBaseStructure.TIM_Prescaler = 36000;//分频36000     
  TIM_TimeBaseStructure.TIM_ClockDivision = 0x0; // 时钟分割  
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //计数方向向上计数
  TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

  
  /* Clear TIM2 update pending flag[清除TIM2溢出中断标志] */
  TIM_ClearFlag(TIM2, TIM_FLAG_Update);


  /* Enable TIM2 Update interrupt [TIM2溢出中断允许]*/
  TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);  

  /* TIM2 enable counter [允许tim2计数]*/
  TIM_Cmd(TIM2, ENABLE);




    /* PCLK1 = HCLK/2 [低速APB1时钟等于HCLK/2]*/
    RCC_PCLK1Config(RCC_HCLK_Div2);
系统时钟是72MHZ,所以APB1时钟为36MHZ

希望能得到1秒的定时,但是实际上有4秒,不知道为什么?
沙发
st_yin| | 2008-8-20 11:04 | 只看该作者

定时器的始终只要分频就自动倍频*2
你现在APB1的时钟应该是72MHz吧。。。

使用特权

评论回复
板凳
violet520|  楼主 | 2008-8-20 11:13 | 只看该作者

不明白,请斑竹指教

定时器的始终只要分频就自动倍频*2
你现在APB1的时钟应该是72MHz吧。。。

使用特权

评论回复
地板
violet520|  楼主 | 2008-8-21 16:41 | 只看该作者

发现问题

使用72MHZ,在FLASH中运行,没有插入等待周期。
更改后,发现定时1S,实际上得到500MS
定时器的时钟只要分频就自动倍频*2,与这句话吻合了。

使用特权

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

本版积分规则

33

主题

123

帖子

1

粉丝