timer初始化时TIM_Prescaler和TIM_Period混着用可以吗?
一般情况下是TIM_Period设为一个时钟频率的整数倍-1,TIM_Prescaler就按照想要更新的速率不过我看到的公式是
两个数值 +1 相乘再除以时钟频率,得到定时器的时间,
那么请问这两个数值反过来用一样吗?
不太明白楼主的意思,我认为是一样的。这个我一般就按论坛里的教程做的:
假设时钟频率为48MHZ,如果指定预分频器即TIM_Prescaler的值为48000(-1),那么经48000分频之后的工作频率就是1000,也就是所谓的1KHz。如果再指定计数值即TIM_Period为1000(-1)的话,恰好就是1秒了。忘记那些计算公式吧,这样算就很好。
原文就这个意思,呵呵。
顶楼上。
那些公式只是表述的需要才有的。关键你了解怎么回事就好,一般有个小学4年级上下水平都能理解过来。
只是平常有时懒于做些思考了。呵呵
至于为什么减一,你结合ST MCU定时器相关部分的时序图看看,都是从0开始算起的。 孤鸿踏雪遗梦 发表于 2016-1-16 10:42
不太明白楼主的意思,我认为是一样的。这个我一般就按论坛里的教程做的:
假设时钟频率为48MHZ,如果指定 ...
立马就懂了:lol 一个是分频系数,一个是计数值,可以一起用吧 我觉得可以反过来,但是分频支持的数值好像没有周期的大 来看看不是很明白楼主意思 arr 和 psc 的值,就可以计算中断时间了。计算公式如下:
Tout= ((arr+1)*(psc+1))/Tclk;
其中:
Tclk: TIM 的输入时钟频率(单位为 Mhz)。
Tout: TIM 溢出时间(单位为 us)。 孤鸿踏雪遗梦 发表于 2016-1-16 10:42
不太明白楼主的意思,我认为是一样的。这个我一般就按论坛里的教程做的:
假设时钟频率为48MHZ,如果指定 ...
您好大神,我想问下,为什么教程里的72M时钟,就要除以36000,得数为2000,表示1秒计数2000次?那除以72000得数为1000,不也是1秒计数到1000?这个2000,1000的数是初值?初值不应该是从该数计数到65536?为何是从0计数到该数呢?实在不明白,希望大神指点!!!!
页:
[1]