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条回答
wx85105157
1楼-- · 2019-12-23 17:50
那为啥不直接用48或者64M算了?
takashiki
2楼-- · 2019-12-23 21:41
 精彩回答 2  元偷偷看……
huangqi412
3楼-- · 2019-12-23 23:42
既然HSE故障后切HSI能接受48M,为何不改一下软件让HSE也48M,这样就一样了。只需要逐个外设函数都检查修改下重编译,你确定动态修改更省事???
蜗牛蜗牛
4楼-- · 2019-12-24 01:57
takashiki 发表于 2017-10-11 10:52
内部时钟我就弄过128MHz的,方法已经很明显了我就不说了,信不信由你。

咋弄啊? 内部是8M 必须2分频那就是4M  倍频最大是16倍 那就是4*16=64M 你这个128怎么出来的?
你是不是当成外部的了,外部时钟可以倍频到128M 内部只能设置到64M
takashiki
5楼-- · 2019-12-24 06:00
蜗牛蜗牛 发表于 2017-10-11 11:34
咋弄啊? 内部是8M 必须2分频那就是4M  倍频最大是16倍 那就是4*16=64M 你这个128怎么出来的?
你是不是当 ...

HSI可以在MCO时钟输出的,拉条线连到XIN就是了。多占用2个IO。程序稍微折腾点,曲线救国搞到高频率。
蜗牛蜗牛
6楼-- · 2019-12-24 10:25
takashiki 发表于 2017-10-11 12:04
HSI可以在MCO时钟输出的,拉条线连到XIN就是了。多占用2个IO。程序稍微折腾点,曲线救国搞到高频率。 ...

牛逼啊,原理上没问题,你要是测试过能用,那就是能用了