背景:
GD32f103替换STM32f103,外部晶振不起振系统自动调用内部晶振,程序无法正常运行。
显现:
Can、Uart等外设无法使用,定时器时钟频率不正常
原因(官方解释):
GD32运行时间比STM32运行速度快,导致实际等待晶振起振时间比设置的时间要短
解决方法1(官方):
stm32f10x.h
#define HSE_STARTUP_TIMEOUT ((uint16_t)0x0500)
修改为:
#define HSE_STARTUP_TIMEOUT ((uint16_t)0xffff)
结果:
按照该方法修改,程序仍然会出现使用内部晶振的问题,但概率会降低。
解决方法2:
制作bootloader程序,在bootloader中使用内部晶振,同时启动外部晶振。
等待2~5S时间,确保外部晶振已经启动后程序跳转至APP中。
|