打印
[STM8]

stm8的定时tim3问题

[复制链接]
1564|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
最近在研究stm8定时计数器,思路很简单,就是定时到一个时间以后就产生一个小脉冲,然后通过示波器去观察各个脉冲的间隔,程序如下:
void tim3_init(void)
{
    // 然后初始化定时器3
  TIM3_CR1 = 0x00;
  TIM3_IER = 0x00; // 禁止中断
  TIM3_EGR = 0x01; // 允许产生更新事件
  TIM3_PSCR = 0x00; // 预分频器; fck_cn=fck_psc除以2的PSC[3:0]次方

  TIM3_ARRH = 0x00; // 设定重装载时的寄存器的高8 位
  TIM3_ARRL = 0x96;   //0x96
  TIM3_CNTRH = 0x00; // 设定计数器的初值
  TIM3_CNTRL = 0x96;  ///0x96

  TIM3_IER = 0x01; // 允许更新中断
  //TIM3_CR1 = 0x01; // b0 = 1,允许计数器工作
  // b1 = 0,允许更新
  // 设置控制器,启动定时器
}

void main(void)
{
   tim3_init();
   while(1)
   {
         TIM3_CNTRL=0X00;          TIM3_CR1|=0X01; //启动

         for(i=0;i<8;i++){  //产生8次脉冲
            TEST_PIN;  //产生一个脉冲
             while((TIM3_SR1&0x01)==0); //等待更新事件
            TIM3_SR1=0;         
         }   
          TIM3_CR1&=0Xfe;//关闭
          break;
   }

}

通过观察示波器,发现每次的脉冲间隔时间都不一致,由于本人之前用过AVR的单片机定时,也不会出现这样子的问题。上面是示波器的图片,究竟是哪里出现问题了呢?求解答
沙发
lyzjimmy|  楼主 | 2014-6-20 08:56 | 只看该作者
我主要想问的是,如何才能定一个准确的时间,求解答

使用特权

评论回复
板凳
电子云图| | 2014-6-21 08:38 | 只看该作者
用TIM3的PWM的功能,调整好频率和占空比,脉冲不就精准了。

使用特权

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

本版积分规则

5

主题

15

帖子

0

粉丝