[STM32F1] 定时器为什么不是TBCCR0=1000

[复制链接]
2094|30
 楼主| songqian17 发表于 2021-10-10 12:14 | 显示全部楼层 |阅读模式
TBCCTL0 = CCIE; // TRCCR0 interrupt ena××ed

TBCCR0 = 1000-1;

TBCTL = TBSSEL_1 + MC_1; // ACLK, up mode


为什么不是TBCCR0=1000?而是TBCCR0=1000-1呢?
lizye 发表于 2021-10-10 12:18 | 显示全部楼层
因为是从0开始计数的,1000-1正好记1000个
ousj 发表于 2021-10-10 12:20 | 显示全部楼层
在Timer工作在增技术是,要注意不同的中断向量会造成定时中断的效果不同。
 楼主| songqian17 发表于 2021-10-10 12:21 | 显示全部楼层

TBCCTL0的中断在TBR计数到999时发生,而TBIFG则是计数到0时发生,两个中断会差一个count的时间
xxrs 发表于 2021-10-10 12:23 | 显示全部楼层
从0开始到999是1000个计数值
zhenykun 发表于 2021-10-10 12:26 | 显示全部楼层
3#6#都说的是啊,一般都是要减一的,不然就计数成1001了
xxrs 发表于 2021-10-10 12:28 | 显示全部楼层
确实是从0开始计数的问题,一般的计数器都是这样的。。
yinxiangh 发表于 2021-10-10 12:30 | 显示全部楼层
是的啊 这个是从0开始计算的。
pangb 发表于 2021-10-10 12:32 | 显示全部楼层
一般使用配置函数的时候不需要这样设计。
jiajs 发表于 2021-10-10 12:35 | 显示全部楼层
这个你测试看看对不对吧
zyf部长 发表于 2021-10-10 12:36 | 显示全部楼层
什么定时器需要这样配置嗯
stly 发表于 2021-10-10 12:38 | 显示全部楼层
什么定时器需要这样配置嗯
xxrs 发表于 2021-10-10 12:40 | 显示全部楼层

配置1000就会有误差的。
xxrs 发表于 2021-10-10 12:42 | 显示全部楼层
计数器的模式自己研究。
llljh 发表于 2021-10-10 12:49 | 显示全部楼层
计算出来0-999才是1000的。
dingy 发表于 2021-10-10 12:51 | 显示全部楼层
的确 计数到1000 就是1001个数了。
renyaq 发表于 2021-10-10 12:53 | 显示全部楼层
自己配置的寄存器是什么
xxrs 发表于 2021-10-10 12:55 | 显示全部楼层
配置999 正好是1000.
zhanghqi 发表于 2021-10-10 12:57 | 显示全部楼层
TBCCR0=1000-1 就是计算1000个。
stly 发表于 2021-10-10 12:58 | 显示全部楼层
串口通信如何能发送与接收16位的数据?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

463

主题

5749

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部