大家好,本人最近在编写F207定时器时(使用
timer3,采用APB1总线).
问题描述:
(1)寄存器配置情况:
即此进,我对RCC_CFGR,不做任何配置(APB1:即PPRE1[2:0]为“000”。AHB:即HPRE[3:0],PLL作为系统时钟输出为120M)
(2)现象:
配置TIMER3,
120分频,溢出中断次数为1000,中断产生周期是1ms(APB1,未分频)。
(3)疑问:
按照
芯片手册
PLLCLK = 120M; AHB 未分频;APBX未分频,从APBX出来的结果应该是120M,但由于APB1最大为30M,那么其输出到定时器最大时钟
应该最多为60M?
可是我查看溢出中断的波形分明为1ms,计数1000次,120分频计算的结果是120M.
请问如何达到120M, 给APB1 TIMER???
谢谢指点,不过,我的疑问仅在于最大输出为60M,到了TIM3后,为何TIM3的时钟源变成了120M???
你的F2,我没有搞过,但是我的F4有如下这个图中所示(在时钟树那个章节)。除非APB1的分频系数是1,否则通用定时器的时钟等于APB1时钟的2倍。
所以这个部分你要多看参考手册中时钟树啊。不管什么程序,只要涉及到时钟,肯定要看时钟树的。所以,你好好看下F2的参考手册。
兄弟,您说的这个时钟树,我在发帖前就早已读懂了,这一点请您不要怀疑我的能力。
我们的之间的分歧是:您没有读懂我的问题,而冒然回答,这样不太好吧!
pllclk = 120M,经过AHB(未分频),再APB1(4分频)出来30M, 再乘以2,得到60M.(这种初学者都能理解的知识,还请您不要再发了,谢谢)
如果您确实想帮我,就请您再认真读一下我的问题吧,万分感谢!!!
问题(再重复一下,请理解后,再作答,多谢):
PLLCLK = 120M, AHB(未分频), 再APB1(2分频或0分频,或1分频)。
理论值:
从APB1出来的理论值最大为30M, 如果0/1分频得到的最大值为60M,换句话说给TIM3最大的时钟为60M.
实际值:
通过查看示波器,发现TIM3的实际时钟可以达到120M.
总述:二楼的兄弟写了(60M*2),这里是有点疑问,时钟树上给TIM3的最大值就是60M(是由最大30M*2=60M),不可能再乘以2.除非定时器TIM3内部又作了倍频,否则不可能达到120M,目前的资料上没有看到TIM3内部再倍频之说,这才是我的疑问所在,还请兄弟们发点有价值的贴子哦,万分感谢!
一周热门 更多>