配置STM32时钟时应注意设置FLASH等待周期



昨天去杭电一趟了,然后带回来一套J-LINK。这下我可以动手写程序进行仿真了,HOHO~~~

万事开头难啊,写了一个小程序,只是点亮一个LED灯,程序很简单,可就是出了问题,程序会跑飞,仔细检查各个寄存器配置,似乎都没有什么问题,选择外部8M时钟,不分频输入到PLL,设置PLL为9倍频72M,AHB,ABP2不分频,ABP1为2分频,这些都挺下常的,可DEBUG时,运行到选择PLL时钟后程序就跑飞,在程序上改来改去,始终没能解决,后来降低了PLL的频率到48M,程序竟然没有跑飞,这就怪了,百思不得其解啊,郁闷了半天 :-( ,

自己实在没辙,于是上网找找解决方法。在一网站有人提示是否忘记了设置FLASH等待周期?回头一看程序,嘿嘿,我的程序里果然没有这方面的设置,看资料上写的是:

0等待周期,当 0 < SYSCLK < 24MHz
1等待周期,当 24MHz < SYSCLK ≤ 48MHz
2等待周期,当 48MHz < SYSCLK ≤ 72MHz


而上电复位后的等待设置为0,所以这里就有问题了!

知道了问题所在,那解决起来就很简单了。在配置时钟之前,我们打开FLASH预取缓冲区,并且设置等待周期为2。再次编译运行程序,我那小可爱---LED终于这起来了:-)







文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: STM32 编程
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.