大多数厂商启动函数直接运行
LDR R0, =__main BX R0
但是,GD的却先跑
LDR R0, =SystemInit BLX R0
再跑
LDR R0, =__main BX R0
所以,先修改SystemInit(void)函数,及其调用的函数 system_clock_config(void)。如果你要的频率,接近哪个频点,就自己增加一个...
如,110592000MHz, 我们就增加(开放):
#define __SYSTEM_CLOCK_110M_PLL_HXTAL 110592000UL //在该文件前面几行!
后续编译程序预处理,自己调用:
////~~~~
#elif defined (__SYSTEM_CLOCK_110M_PLL_HXTAL)
system_clock_110m_hxtal();
......
我们复制已有的“108MHz”情况的函数为“110MHz”函数,并修改相关参数: //注:110非常接近108MHz。
SystemCoreClock = __SYSTEM_CLOCK_110M_PLL_HXTAL;
......
换掉晶振,可能换掉匹配电容(5pF~)。 上电,示波器观察xin/xout脚:振荡==OK==搞定!
|