0
收藏
微博
微信
复制链接

从ST转向GD32,代码如何修改?

2026-04-01 15:32
116

随着国产MCU的崛起,GD32因其高性价比和与STM32的高度兼容性,成为许多项目的替代选择。但硬件替换后,代码仍需针对性调整。本文基于实际移植经验,总结关键修改点。

1. 时钟系统配置

GD32主频支持108MHz(STM32通常为72MHz),需同步调整时钟树配置:启动超时宏:修改HSE_STARTUP_TIMEOUT值,STM32默认0x0500(2ms),GD32需改为0xFFFF以适应更长起振时间。

PLL倍频系数:GD32通过RCC_CFGR寄存器的PLLMUL[4:0]位域配置PLL,需确保输出频率不超过108MHz。

2. 外设初始化差异

GPIO配置

STM32:GPIO_Init(GPIOA, &GPIO_InitStruct)仅需端口参数。

GD32:需额外指定引脚数量,如gpio_mode_set(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, PIN_0 | PIN_1)。

SPI配置

时钟分频:GD32的SPI时钟分频系数实际频率更高(如SPI_BaudRatePrescaler_2对应36MHz,STM32为18MHz),需根据外设时序要求调整。

引脚复用:GD32的PB3/PB4默认复用JTAG功能,需禁用JTAG:

GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST, ENABLE);

3. Flash操作优化

GD32的Flash专利技术导致读写时序差异:

延时等待:在FLASH_EraseOptionBytes等函数中插入等待循环:

while (!(FLASH->CR & 0x200)); // 等待OPTWRE位生效

超时宏定义:修改擦除/编程超时时间:

1.png

4. 中断处理修正

标志位清除:GD32需手动清除中断标志位,如定时器输入捕获模式:

2.png

EXTI沿检测:关闭中断前需禁用沿检测寄存器:

3.png

5. 延时函数调整

GD32代码执行速度更快,软件延时需重新校准:

循环延时:通过示波器实测调整循环次数,例如:

4.png

推荐方案:使用硬件定时器替代软件延时。

6. 特殊功能适配

低功耗模式:GD32的PA8引脚在待机模式下需悬空(避免复用为内部时钟输出)。

USB配置:主频限制为48/72/96MHz(或超频至120MHz),且APB1时钟不得低于24MHz。


本文凡亿教育原创文章,转载请注明来源!

登录后查看更多
0
评论 0
收藏
侵权举报
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表凡亿课堂立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。

热门评论0

相关文章

电路之家

专注电子、科技分享,对电子领域深入剖解

开班信息