stm32 原来72M 现在用48M,不正常,怎样设置RCC能正常(尽量简单)

2019-12-22 13:44发布

本帖最后由 蜗牛蜗牛 于 2017-10-11 09:48 编辑

原来的程序是在外部72M系统时钟调节写的,
现在要切要求外部晶振出问题后换到48M内部时钟运行,
(坑爹的是内部时钟只能到64M)现在串口,频率降下来原来好多程序不正常
解决方案是:
1,将每一个驱动程序都写2种时钟的,由于驱动程序很多,再加上调试太麻烦这是下下策
2.我猜测有没有可以设置修改一个值,使得原先72M主频那些时钟频率,让48M晶振也可以都设
置成72M晶振相同的频率,stm32片上外设我用的都是36M频率,理论应该可以,但是有没有这样操作?




越简单越好,有没有外部时钟(72M) 无缝切换内部时钟(48M或者64M)过这样操作?

顺便说一句stm32可以超频到128M ,但是特别不稳定,程序容易死机.


我晶振是外部8M的晶振,倍频9到72M
从那个时钟图可以看出 内部晶振只能8M2分频就是4M 然后倍频16 到64M


从时钟图来看,设置一下AHB 就可以解决, 再麻烦的话就是设置一下 APB1还有APB2,
每次读取系统时钟频率当72M时候 切换到48M 时候(也可以在这期间重启单片机),将AHB 和APB1还有APB2 设置成一样频率,这样可行吗
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
ackyee
1楼-- · 2019-12-22 18:02
HAL库里有更改时钟的地方  还有 楼主的产品是用外部72M时钟? 而不是内部倍频到72?
你搜索下HSE_VALUE  改这个值
然后改 SetSysClockTo72这个函数里的 倍频跟分频参数
蜗牛蜗牛
2楼-- · 2019-12-22 21:41
ackyee 发表于 2017-10-11 09:33
HAL库里有更改时钟的地方  还有 楼主的产品是用外部72M时钟? 而不是内部倍频到72?
你搜索下HSE_VALUE  改 ...

忘记说了外部时钟8M 倍频9到72M
ackyee
3楼-- · 2019-12-23 03:24
 精彩回答 2  元偷偷看……
asj1989
4楼-- · 2019-12-23 04:10
简单点,我觉得可以外部晶振不要使用72m 也降低到48M或者64 保持和内部一致。

到是lz 怎么检测外置晶振不正常?
蜗牛蜗牛
5楼-- · 2019-12-23 09:55
asj1989 发表于 2017-10-11 10:10
简单点,我觉得可以外部晶振不要使用72m 也降低到48M或者64 保持和内部一致。

到是lz 怎么检测外置晶振不 ...

      RCC_ClockSecuritySystemCmd(ENABLE); //启动时钟安全系统 CSS 不正常会进中断然后切换成内部低速时钟,
蜗牛蜗牛
6楼-- · 2019-12-23 13:00
asj1989 发表于 2017-10-11 10:10
简单点,我觉得可以外部晶振不要使用72m 也降低到48M或者64 保持和内部一致。

到是lz 怎么检测外置晶振不 ...

主要现在驱动都是72主频编写的,再改比较麻烦

一周热门 更多>