本人在使用STM32F103RB时,设置使用外部晶振,频率8MHz,锁相环设置为:PLLMUL 0111B (RCC->CFGR|=7<<18;),按手册上应为9倍频,72MHz。此频率下配置TIMER3的1ms的中断 (RCC->APB1ENR|=1<<1;;TIM3->ARR=10; TIM3->PSC=7199;),而实际情况是计时所用时长约为1.1倍正常时钟(已排出程序其它部分引起误差),如计时1秒,用时1.1秒;后经自己分析,PLL输出频率可能为64MHz(手头没有示波器),在此思路下,把PLLMUL值调为1000B后,计时开始精确(相当于PLLMUL输出为72MHz),为了验证这个可能性,继续修改PLLMUL为其它值,均表现为PLL倍频数=PLLMUL-1(由于我的整体系统原因,只能实验到PLLMUL=4到PLLMUL=13,这之间所有值都实验过。而且PLLMUL=13的时候实际倍频为12倍,96MHz,13倍频时由于系统其它器件速度跟不上没有实际测算,但装置运行灯闪烁)。
我现在的疑问是:
1,是手册上的倍频数说明错误还是我程序其它部分可能的设置错误造成这样的现象,我使用的手册是STM32F10XXX中文参考手册第10版,是不是版本太老有些变化没有更新呢?但我在官网上看的数据手册好像也是这个版本。
2,手册上说最高频率为72MHz,但PLL13倍频的时候已经是104MHz了吧,而且如果不是我外围器件的原因的话应该还能再高些,这已经超频接近1.5倍了啊,是这样吗?STM32还真是强悍!
求好心人解答
另外那位高手有最新的参考手册给个链接啊,在ST官网上找资料实在是太痛苦了……
|