STM32移植到GD32中以105为例
首先请查看 STM32F105移植文档.pdf,其中对移植要点有详细介绍。
- PIN TO PIN:同型号芯片的管脚完全一致,架构同为 M3 内核。
- 资源对比(以 105 为例):
- 主频:GD32 为 108M,STM32 为 72M;不过在 72M 下 GD32 完全兼容。
- Flash:GD32 的容量明显大于 STM32。
注:如果功能较多,建议先注释掉其它外设,只保留一个点灯程序,再逐步打开,验证性
一、软件环境设置
-
使用 Keil 开发 GD32F10x
目前市面通用的 MDK for ARM 版本有 Keil 4 和 Keil 5:使用 Keil 4 建议安装 4.74 及以上版本;使用 Keil 5 建议安装 5.20 以上版本。这里我只使用 Keil 5。
-
在 Keil5 中添加 GD32F10x MCU Device
1)从相关网站下载 GD32F10x 系列插件
Keil.GD32F1xx_DFP.1.1.0.rar。图 4-5. GD32 MCU 型号支持 pack 包名称(keil5)

2)解压并安装至 Keil 5 的目录,一般默认选择即可。
图 4-6. Pack 包安装示意图(keil5)

3)安装完成后重新打开 Keil5 工程,即可在 Device -> Database 中看到 Gigadevice 的型号。
4)在 Options for Target -> Debug -> Settings -> Flash Download 中添加 flash 算法,若出现 GD32F10X 的算法,即说明安装成功。根据对应芯片选择合适的算法,即可下载仿真。
5)只要能看到该算法,就说明配置完成。
#### 二、外设移植 -
HSE 注意事项

描述是这样的但是一般都的 只需要改成 这样就行
c
Core\Inc\stm32f1xx_hal_conf.h(91) 这是地址
#define HSE_STARTUP_TIMEOUT 2000U
以及这个超时时间 也需要改
c
Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc.h (1209)
#define PLL_TIMEOUT_VALUE 100U /* 2 ms (minimum Tick + 1) */
- 如何通过软件区分 GD32 和 STM32
GD32F10x 在设计阶段,已经预留了相关寄存器,用户只需要软件读取寄存器,即可获取到相
关的型号信息,GD32F10x 每一型号此处值都为固定值。
c
Code_Num=*( uint32_t *)( 0x40022100 );
触发的坑
- 晶振不起振,
刚开始以为是程序问题,让AI写了几个检测的代码,一顿检测下来代码没有问题,确认是硬件问题。
然后开始看接线,用电表测,测过去通断没有问题 ,也没有短路什么的。
后面以为是晶振的问题,换了一个 还是一样,奇了怪了 ,然后用同样的项目加一个电灯程序到程序里面在不同的 板子里面运行 ,惊奇的发现在开发板可以正常运行,在机器板子上就不行。
后面仔细再次检测后 ,给板子洗了一个澡,就好了。猜测是短接和 干扰导致的。电表测不准。