beary 发表于 2016-1-14 11:55:03

timer初始化时TIM_Prescaler和TIM_Period混着用可以吗?

一般情况下是TIM_Period设为一个时钟频率的整数倍-1,TIM_Prescaler就按照想要更新的速率

不过我看到的公式是
两个数值 +1 相乘再除以时钟频率,得到定时器的时间,
那么请问这两个数值反过来用一样吗?

孤鸿踏雪遗梦 发表于 2016-1-16 10:42:22

不太明白楼主的意思,我认为是一样的。这个我一般就按论坛里的教程做的:

假设时钟频率为48MHZ,如果指定预分频器即TIM_Prescaler的值为48000(-1),那么经48000分频之后的工作频率就是1000,也就是所谓的1KHz。如果再指定计数值即TIM_Period为1000(-1)的话,恰好就是1秒了。忘记那些计算公式吧,这样算就很好。

原文就这个意思,呵呵。

xmshao 发表于 2016-1-16 11:04:40

顶楼上。
那些公式只是表述的需要才有的。关键你了解怎么回事就好,一般有个小学4年级上下水平都能理解过来。
只是平常有时懒于做些思考了。呵呵

至于为什么减一,你结合ST MCU定时器相关部分的时序图看看,都是从0开始算起的。

小川希尔 发表于 2017-1-18 22:07:27

孤鸿踏雪遗梦 发表于 2016-1-16 10:42
不太明白楼主的意思,我认为是一样的。这个我一般就按论坛里的教程做的:

假设时钟频率为48MHZ,如果指定 ...

立马就懂了:lol

ts2000 发表于 2017-1-19 08:23:52

一个是分频系数,一个是计数值,可以一起用吧

海迹天涯 发表于 2017-1-19 10:06:53

我觉得可以反过来,但是分频支持的数值好像没有周期的大

队长shiwo 发表于 2017-1-19 11:27:51

来看看不是很明白楼主意思

队长shiwo 发表于 2017-1-19 11:31:57

arr 和 psc 的值,就可以计算中断时间了。计算公式如下:
Tout= ((arr+1)*(psc+1))/Tclk;
其中:
Tclk: TIM 的输入时钟频率(单位为 Mhz)。
Tout: TIM 溢出时间(单位为 us)。

lsjt 发表于 2018-5-13 16:12:01

孤鸿踏雪遗梦 发表于 2016-1-16 10:42
不太明白楼主的意思,我认为是一样的。这个我一般就按论坛里的教程做的:

假设时钟频率为48MHZ,如果指定 ...

您好大神,我想问下,为什么教程里的72M时钟,就要除以36000,得数为2000,表示1秒计数2000次?那除以72000得数为1000,不也是1秒计数到1000?这个2000,1000的数是初值?初值不应该是从该数计数到65536?为何是从0计数到该数呢?实在不明白,希望大神指点!!!!
页: [1]
查看完整版本: timer初始化时TIM_Prescaler和TIM_Period混着用可以吗?