微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > STM8定时器TIM1的初始化问题

STM8定时器TIM1的初始化问题

时间:10-02 整理:3721RD 点击:
这是我写的:
void Time1_Init()
{  
   
  CLK_PCKENR1 |= SETBIT7;//开TIM1时钟
  TIM1_EGR = 0x0;  //允许产生更新事件  
  TIM1_PSCRH = 0x00;
  TIM1_PSCRL = 0xef;//240分频,100kHZ
  //初始化计数器值,设定自动重载寄存器值,计数125,得到800HZ
  TIM1_ARRH = 0x00;
  TIM1_ARRL = 0x7c;
  TIM1_CNTRH = 0x00;
  TIM1_CNTRL = 0x00;
  //使能计数器,边缘向上计数
  TIM1_CR1 = 0x81;
  //允许更新中断
  TIM1_IER = 0x01;
}
但是我看有的程序里也给计数器如此赋值:
  TIM1_CNTRH = 0x00;
  TIM1_CNTRL = 0x7c;
按照我对datasheet的理解,向上计数应该是CNTR从0开始计数,到ARR值时产生溢出,再从0开始计数,所以给CNTR赋值应该是0。不知我的理解对否

我也一样     困惑中

有哪位大侠能帮忙回答一下吗,万分的感谢

是这样的,完全正确。不过CLK_PCKENR1 |= SETBIT7;//开TIM1时钟  这句可以不写,因为上电后TIMR1的时钟默认是打开的。TIM1_EGR = 0x0;  //允许产生更新事件  这个寄存器也不用操作,意义不大。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top