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。不知我的理解对否
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; //允许产生更新事件 这个寄存器也不用操作,意义不大。
