OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6850|回复: 2

请问分频系数为什么要+1

[复制链接]

7

主题

26

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2016-7-19
在线时间
19 小时
发表于 2016-7-19 23:50:42 | 显示全部楼层 |阅读模式
Tout(溢出时间)=(ARR+1)(PSC+1)/Tclk
请问其中的两个+1分部是什么意思啊?
ARR+1是因为计算由0开始算起吗?那PSC+1呢?
(ARR是0.1ms,PSC是分频系数)
微信截图_20160719234641.png

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

347

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
2078
金钱
2078
注册时间
2014-12-19
在线时间
710 小时
发表于 2016-7-20 08:26:08 | 显示全部楼层
去参考手册看定时器的计数时序图。下图是分频系数从1变为4的情况。最下面的Prescaler counter即PSC的值,为3的时候,实际是从0计到3,共4次。第3行的CK_CNT低电平宽度变为原来的4倍。第4行的Counter register即ARR的值,也是从0开始计的,图中是计到0xFC,加1后为253。可见变为原来的4倍后,ARR每计一次花的时间也变为原来的4倍,即计时频率下降了。预分频系数寄存器为16位,可取的值为0到65535,所以实际上定时器的分频范围为1到65536。
QQ截图20160720081209.png
回复 支持 反对

使用道具 举报

58

主题

6293

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11476
金钱
11476
注册时间
2014-4-1
在线时间
1297 小时
发表于 2016-7-20 09:17:23 | 显示全部楼层
本帖最后由 xuande 于 2016-7-20 09:19 编辑

CPU就是这么设计的,没有为什么。

见过别的芯片也是这样。
深层原因可能是:
寄存器只有16位,最大值是0xFFFF,65535,
但设计指标想达到0x10000,凑整数,
于是采用了这个办法。
可能还有一个好处:用户不小心设为0的时刻,存在除数为0的不确定情况。



回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 20:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表