本帖最后由 蜗牛蜗牛 于 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 设置成一样频率,这样可行吗
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
你搜索下HSE_VALUE 改这个值
然后改 SetSysClockTo72这个函数里的 倍频跟分频参数
忘记说了外部时钟8M 倍频9到72M
到是lz 怎么检测外置晶振不正常?
RCC_ClockSecuritySystemCmd(ENABLE); //启动时钟安全系统 CSS 不正常会进中断然后切换成内部低速时钟,
主要现在驱动都是72主频编写的,再改比较麻烦
一周热门 更多>