stm8的 TIM4_CNTR问题

2019-07-19 21:16发布

void TIM4_Init(void)//256us中断一次
{
 TIM4_IER = 0x00;// 禁止中断
 TIM4_EGR = 0x01; // 允许产生更新事件
 TIM4_PSCR = 0x07;//计数器时钟=主时钟/128=16MHZ/128 //相当64us
 TIM4_ARR = 31;// 设定重装载时的寄存器值,255是最大值
 TIM4_CNTR = 31; // 设定计数器的初值 // 定时周期=(ARR+1)*64=16.320mS,本次为2ms
 TIM4_CR1 = 0x01; // b0 = 1,允许计数器工作// b1 = 0,允许更新// 设置控制器,启动定时器
 TIM4_IER = 0x01;// 允许更新中断
 _asm("rim"); // 允许CPU全局中断
}

求教原子哥
TIM4_ARR = 31;
TIM4_CNTR = 31;
stm8的定时器初始化时这两个为什么要设置成一样?TIM4_CNTR 不是从0开始吗 ,如何按照上面的设置是不是意味着初始化完成后就会马上产生一次更新中断
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
正点原子
1楼-- · 2019-07-20 01:40
回复【楼主位】钢铁侠:
---------------------------------
可能设计者想要这个效果吧。
钢铁侠
2楼-- · 2019-07-20 06:44
 精彩回答 2  元偷偷看……
正点原子
3楼-- · 2019-07-20 11:52
 精彩回答 2  元偷偷看……
杂牌电子
4楼-- · 2019-07-20 14:23
回复【3楼】钢铁侠:
---------------------------------
一个是初始的计数值,一个是自动重装值,我通常把初始计数值设为0
running
5楼-- · 2019-07-20 19:21
 精彩回答 2  元偷偷看……
操作系统
6楼-- · 2019-07-20 23:16
第一次不正常,可以忽略.