【GD32 MCU 移植教程】6、从GD32F1x0和GD32F3x0移植到GD32E230

发布者:快乐阳光最新更新时间:2024-11-08 来源: elecfans关键字:GD32  MCU  移植  GD32F1x0  GD32E230 手机看文章 扫描二维码
随时随地手机看文章

1.简介

GD32E230 系列是 GD 最新推出的 Cortex_M23 系列产品,该系列资源上与既有的 GD32F1x0以及 GD32F3x0 兼容度非常高。由于 GD32E230 系列主打低功耗和低成本,所以在存量客户中可能会有越来越多的客户会有从 GD32F1x0 和 GD32F3x0 移植到 GD32E230 系列的需求,本文档专门针对既有的 GD32F1x0 和 GD32F3x0 代码如何移植到 GD32E230 做一个详细的介绍;


2.硬件资源对比

wKgaombXtnCASg_qAACdz3XP_Wg500.png?imageView2/2/w/1000

1. TSSOP20 和 QFN28PIN 的封装兼容,但 E230 系列 PA9、PA10 可以映射为 PA11、PA12;

2. LQFP32、QFN32 封装不能完全兼容,QFN32 比 LQFP32 多两个 Pin;

3. LQFP48 在 E230 上面是 VDD,在 GD32F330/130 上是 VBAT,也就是说 E230 不支持掉电运行 RTC;

3.系统资源对比

wKgZombXtouAdSz2AABmKt9kl2Q222.png?imageView2/2/w/1000

4.外设地址对比

wKgaombXtpeADZplAABfWGPTaZ0379.png?imageView2/2/w/1000

1. GD32E230 系列最大封装为 LQFP48,因此 GPIOC 端口不少 GPIO 未 PIN OUT;

2. GD32E230 将 32 位的 TIMER1 裁剪掉,移植时需要特别注意;

3. GD32E230 系列有一路比较器,GD32F130/330 没有该资源;

4. GD32E230 系列新增了 1K 的 OTP 区域;

5.开发工具版本对比

wKgaombXtqeAMomCAAApgMs_9F8784.png?imageView2/2/w/1000

注意:使用 Keil 5.25 有可能会出现在 Debug 下拉选项中找不到 J-LINK/J-TRACE Cortex 的情况。遇到这种情况可以手动打开 keil5 安装目录x:Keil_v5TOOLS.INI 文件,首先查看[ARM]下”CPUDLL3=SARMV8M.DLL(TDRV2,TDRV4,TDRV13,TDRV14,TDRV15,TDRV16)”选项,然后查看[ARMADS]下面“CPUDLL3=SARMV8M.DLL(TDRV2 ,TDRV13,TDRV14,TDRV15,TDRV16)”,两者内容是否一致,如果不一致手动添加相应内容。

wKgaombXtrmAKY83AAAry3g_6Zc261.png?imageView2/2/w/1000

Segger 对 GD32E230 系列支持情况:

1. Segger 的 6.12 及以上版本才支持 Cortex M23 内核;

2. Segger 当前版本没有 GD32E230 型号,若使用 Segger 下载 E230 系列,可以选择 GD32F130 系列或者

GD32F103 系列对应 Flash 容量产品;

3. Segger 6.20 及以上版本才有添加 GD 相关型号,但不支持软件设置读保护,需通过程序自行设定。

6. GD32F1x0_Firmware_Library_V2.0.0 移植步骤

1. 电脑安装 keil 5.25 及以上版本 MDK、GD32E230 插件

2. 原有工程项目可能是 keil 4 建立的,直接在 keil 4 工程后缀名添加 x,即变成 keil 5 项目;

wKgZombXtsyAeGSVAABsube-Nf0540.png?imageView2/2/w/1000

3. 根据实际情况修改使用的芯片型号以及 C 语言语法为 C99;

wKgZombXttSAAwQtAAB7u83DRW4859.png?imageView2/2/w/1000wKgaombXttSAWtsPAACogb8E3o0442.png?imageView2/2/w/1000


4. 拷贝 Cortex M23 内核支持文件至 x: GD32F1x0_Firmware_Library_V2.0.0FirmwareCMSIS

wKgZombXtu2AJPxVAACws8mhpb8249.png?imageView2/2/w/1000

5. 修改“gd32f1x0.h”头文件内容

wKgZombXtvuAchKhAAB7I2mJps0682.png?imageView2/2/w/1000

gd32f1x0.h头文件修改内容

wKgaombXtwGACyioAACKgnOYS0A527.png?imageView2/2/w/1000

6. gd32f1x0_misc.c 文件调整内容

wKgZombXtw6AZD5vAAEs0YKvSy0574.png?imageView2/2/w/1000wKgZombXtyqAfqXfAAFzMUwmByo663.png?imageView2/2/w/1000

特别注意事项

E230不支持中断分组,所以固件库中的void NVIC_PRIGroup_Enable(uint32_t NVIC_PRIGroup)不能调用,而且E230仅支持4级抢占优先级,不支持子优先级

7. “system_gd32f1x0.c”文件修改内容

GD32F130/330 的 Flash 是零等待的,GD32E230 系列需要配置 Flash 插入等待周期

0-24M: 插入 0 个等待周期

24-48M: 插入 1 个等待周期

48-72M: 插入 2 个等待周期

因此配置代码时需要根据主频来调整等待周期,相关做法如下:

wKgZombXt0OAcFUbAAHHmhSIXrs568.png?imageView2/2/w/1000

8. ”gd32f1x0_fmc.c”文件修改内容

GD32E230 因为 Flash 只支持 32 位和 64 位编程,所以原有固件库中的选项字节操作需要调整,原有的

半字编程不支持,考虑到实用性,只修改和验证如下有提及的 FMC,其他选项字节函数不做支持;

wKgZombXt1mARXtmAAEhejdfh3M299.png?imageView2/2/w/1000wKgaombXt1mAf9AZAADlN3KYmao425.png?imageView2/2/w/1000wKgZombXt1mAK44wAAEaF-WB-HA749.png?imageView2/2/w/1000wKgaombXt1mAdbdqAADPThou43M268.png?imageView2/2/w/1000wKgZombXt1mACjMOAACjQzaumYc413.png?imageView2/2/w/1000

7. GD32F1x0_Firmware_Library_V3.0.0 移植步骤

1. 电脑安装 keil 5.25 及以上版本 MDK 及 GD32E230 插件

2. 原有工程项目可能是 keil 4 建立的,直接在 keil 4 工程后缀名添加 x,即变成 keil 5 项目;

wKgZombXtsyAeGSVAABsube-Nf0540.png?imageView2/2/w/1000

3 根据实际情况修改使用的芯片型号以及 C 语言语法为 C99;

wKgZombXttSAAwQtAAB7u83DRW4859.png?imageView2/2/w/1000wKgaombXttSAWtsPAACogb8E3o0442.png?imageView2/2/w/1000

4 拷贝 Cortex M23 内核支持文件至 x: GD32F1x0_Firmware_Library_V2.0.0FirmwareCMSIS

wKgZombXtu2AJPxVAACws8mhpb8249.png?imageView2/2/w/1000

5 修改“gd32f1x0.h”头文件内容

wKgZombXtvuAchKhAAB7I2mJps0682.png?imageView2/2/w/1000


wKgZombXt7WAEAljAACKhY51wEQ729.png?imageView2/2/w/1000

6 gd32f1x0_misc.c 文件调整内容

wKgaombXuFyAZQnuAADKOAtVYvk686.png?imageView2/2/w/1000wKgZombXuG6Acht9AADV1X5ErPQ313.png?imageView2/2/w/1000

特别注意事项

E230不支持中断分组,所以固件库中的void nvic_priority_group_set(uint32_t nvic_prigroup)不能调用,而且E230仅支持4级抢占优先级,不支持子优先级

7 “system_gd32f1x0.c”文件修改内容

GD32F130/330 的 Flash 是零等待的,GD32E230 系列需要配置 Flash 插入等待周期

0-24M: 插入 0 个等待周期

24-48M: 插入 1 个等待周期

48-72M: 插入 2 个等待周期

因此配置代码时需要根据主频来调整等待周期,相关做法如下:

wKgZombXuJqAIcn0AAEPxUdkerM154.png?imageView2/2/w/1000

8.”gd32f1x0_fmc.c”文件修改内容

GD32E230 因为 Flash 只支持 32 位和 64 位编程,所以原有固件库中的选项字节操作需要调整,原有的半字编程不支持,考虑到实用性,只修改和验证如下有提及的 FMC,其他选项字节函数不做支持;

wKgZombXt1mARXtmAAEhejdfh3M299.png?imageView2/2/w/1000wKgaombXt1mAf9AZAADlN3KYmao425.png?imageView2/2/w/1000wKgZombXt1mAK44wAAEaF-WB-HA749.png?imageView2/2/w/1000wKgaombXt1mAdbdqAADPThou43M268.png?imageView2/2/w/1000wKgZombXt1mACjMOAACjQzaumYc413.png?imageView2/2/w/1000

8. GD32F3x0_Firmware_Library 移植步骤

1. 电脑安装 keil 5.25 及以上版本 MDK 及 GD32E230 插件

2. 原有工程项目可能是 keil 4 建立的,直接在 keil 4 工程后缀名添加 x,即变成 keil 5 项目;

wKgZombXtsyAeGSVAABsube-Nf0540.png?imageView2/2/w/1000

8 根据实际情况修改使用的芯片型号以及 C 语言语法为 C99;

wKgZombXttSAAwQtAAB7u83DRW4859.png?imageView2/2/w/1000wKgaombXttSAWtsPAACogb8E3o0442.png?imageView2/2/w/1000

9 拷贝 Cortex M23 内核支持文件至 x: GD32F3x0_Firmware_LibraryFirmwareCMSIS

wKgZombXtu2AJPxVAACws8mhpb8249.png?imageView2/2/w/1000

10 修改“gd32f3x0.h”头文件内容

wKgaombXuViAbI0AAACU7_OoPn8468.png?imageView2/2/w/1000

11 gd32f3x0_misc.c 文件调整内容

wKgaombXuWWATeBNAADKwaXxVNo535.png?imageView2/2/w/1000wKgaombXuWyAa6pQAADWM_r9UFM667.png?imageView2/2/w/1000

特别注意事项

E230不支持中断分组,所以固件库中的void nvic_priority_group_set(uint32_t nvic_prigroup)不能调用,而且E230仅支持4级抢占优先级,不支持子优先级

12 “system_gd32f3x0.c”文件修改内容

GD32F130/330 的 Flash 是零等待的,GD32E230 系列需要配置 Flash 插入等待周期

0-24M: 插入 0 个等待周期

24-48M: 插入 1 个等待周期

48-72M: 插入 2 个等待周期

因此配置代码时需要根据主频来调整等待周期,相关做法如下:

wKgaombXuXqAHSqBAAEOhqvUrnc897.png?imageView2/2/w/1000

8.”gd32f3x0_fmc.c”文件修改内容

GD32E230 因为 Flash 只支持 32 位和 64 位编程,所以原有固件库中的选项字节操作需要调整,原有的

半字编程不支持。Flash 读取需要对齐,考虑到实用性,只修改和验证如下有提及的 FMC,其他选项字

节函数不做支持;

wKgZombXuYyAQnBbAADycEsvUDM524.png?imageView2/2/w/1000wKgaombXuZKAd-8bAADB42Ujaz8536.png?imageView2/2/w/1000wKgZombXuZiAAzi7AAISWrjndsU585.png?imageView2/2/w/1000wKgaombXuZyAL4GCAAEdePzTJYI068.png?imageView2/2/w/1000wKgaombXuaGAb7uNAACbPMHG4_E281.png?imageView2/2/w/1000

关键字:GD32  MCU  移植  GD32F1x0  GD32E230 引用地址:【GD32 MCU 移植教程】6、从GD32F1x0和GD32F3x0移植到GD32E230

上一篇:GD32固件库里时钟配置时的神秘代码?高频切低频时芯片会发生什么
下一篇:GD32 MCU如何使用双ADC内核提高ADC采样率?

推荐阅读最新更新时间:2026-03-24 10:35

GD32 MCU 移植教程】5、GD32E230 系列移植到 GD32F330 系列
1.前言 GD32E230 系列是 GD 的 Cortex_M23 系列产品,GD32F330 系列是 GD 的 Cortex_M4 系列产品,这两个系列的兼容度非常高。客户会有从 GD32E230 系列移植到 GD32F330 系列的需求,本文档专门针对既有的 GD32E230 代码如何移植到 GD32F330 做一个详细的介绍; 2.硬件差异 GD32E230 系列的封装类型有:TSSOP20、LGA20、QFN28、QFN32、LQFP32、LQFP48,GD32F330系列的封装类型有:TSSOP20、QFN28、QFN32、LQFP48、LQFP64,两个系列相同封装的芯片引脚是兼容的。 注意: 1. TSSOP20
[单片机]
【<font color='red'>GD32</font> <font color='red'>MCU</font> <font color='red'>移植</font>教程】5、<font color='red'>GD32E230</font> 系列<font color='red'>移植</font>到 GD32F330 系列
GD32 MCU 移植教程】8、从 STM32F4xx 系列移植到 GD32F4xx 系列
1.本文简介 GD32F4xx 系列 MCU 是基于 Arm® Cortex®-M4 处理器的 32 位通用微控制器,与 STM32F4xx系列 MCU 保持高度兼容。本文主要从以下三个方面进行介绍:硬件资源对比、外设及性能对比以及从 STM32F4xx 移植到 GD32F4xx 的移植步骤,旨在让开发者能够快速从 STM32F4xx移植到 GD32F4xx,缩短研发周期,加快产品开发进度。 2.GD32F4xx vs STM32F4xx 硬件资源对比 GD32F4xx 和 STM32F4xx 硬件引脚对比如表 2-1. GD32F4xx 和 STM32F4xx pin 对比所示,由该表可知,GD32F4xx 与 STM32F
[单片机]
【<font color='red'>GD32</font> <font color='red'>MCU</font> <font color='red'>移植</font>教程】8、从 STM32F4xx 系列<font color='red'>移植</font>到 GD32F4xx 系列
GD32 MCU 移植教程】2、从 GD32F303 移植到 GD32F503
1. 前言 GD32E503 系列是 GD 推出的 Cortex_M33 系列产品,该系列资源上与 GD32F303 兼容度非常高,本应用笔记旨在帮助您快速将应用程序从 GD32F303 系列微控制器移植到 GD32E503 系列微控制器。 2. 引脚兼容性 GD32F303 与 GD32E503 在相同封装下是 Pin To Pin 兼容的。但由于 GD32E503 较 GD32F303多了 SHRTIMER、SQPI 功能,所以两者引脚定义有细微差别,如下表所示: 表 1 GD32F303 系列和 GD32E503 系列引脚区别 3. 内部资源兼容性 下表给出了 GD32F303 与 GD32F503 的资源对比总览(
[单片机]
【<font color='red'>GD32</font> <font color='red'>MCU</font> <font color='red'>移植</font>教程】2、从 GD32F303 <font color='red'>移植</font>到 GD32F503
GD32 MCU 移植教程】1、从 GD32F10x 移植到 GD32F30x
1. 前言 对于使用 GD32 系列微控制器进行产品开发的设计人员来说,因产品及功能升级,往往需要将一种微控制器替换成另一种微控制器,在保留既有功能的情况下增加新功能。为了更快地推出新产品,设计人员经常要将应用程序移植到新的微控制器。本应用笔记旨在帮助您快速将应用程序从 GD32F10x 系列微控制器移植到 GD32F30x 系列微控制器。 为了更好的利用本应用笔记中的信息,您需要对 GD32 系列微控制器有比较深刻的了解。 2. 引脚兼容性 GD32F10x 与 GD32F30x 在相同封装下是 Pin To Pin 兼容的。但由于 GD32F30x 较 GD32F10x 增加了内部 48MHz RC 振荡器给 USBD
[单片机]
【<font color='red'>GD32</font> <font color='red'>MCU</font> <font color='red'>移植</font>教程】1、从 GD32F10x <font color='red'>移植</font>到 GD32F30x
单片机GD32F3X0 STM32的中断总开关汇编代码
__asm void disableAllInt(void) { CPSID I BX LR } __asm void enableAllInt(void) { CPSIE I BX LR } __asm void MSR_MSP(uint32_t addr) { MSR MSP, r0 //set Main Stack value BX r14 } void iap_boot_loader(unsigned int addr) { if(((*(volatile uint32_t *)addr) & 0x2ff00000) == 0x20000000) {
[单片机]
stm32f103移植GD32修改内容及注意事项
  在国内 芯片 紧张的情况下,目前如果项目没有成型可以安装官方提供的 GD32 的pack,选择相关的pack即可正常编程。若程序已经成型,需要移植,首先就要考虑芯片类型( stm32 系列)的选择。   选择过程中首先要根据已用stm32 单片机 的封装和引脚定义去对应相关的gd32芯片类型。   这里我选用的是GD32f305芯片替换stm32f103rc,所作设置如下:   1.点击魔术棒选择stm32f103芯片   2.根据晶振设置晶振,这里设置72MHz   3.根据芯片flash大小设置STM32F10X_LD、STM32F10X_MD、STM32F10X_HD,不知道的可以查手册,实在不行就一个一个去试。  
[单片机]
stm32f103<font color='red'>移植</font>到<font color='red'>GD32</font>修改内容及注意事项
STM32到GD32移植攻略
使用STM32的芯片的朋友,可以很方便的将移植到GD32上面,下面就具体移植过程分享一下: 整个移植过程可以分为硬件和软件两个方面。 硬件方面: 首先要确定先前所使用ST芯片的flash大小和管脚数量,然后替换成GD相同大小Flash和管脚数量的芯片。 简单来说就是STM32F103xxxx替换成GD32F103xxxx。 GD和ST的命名规则相同。 软件方面: 以Keil开发环境为例,打开头文件“stm32f10x.h” 找到定义 #define HSE_STARTUP_TIMEOUT ((uint16_t)0x0500) 替换为 #define HSE_STARTUP_TIMEOUT ((uint16_t)0xFFFF) 重新
[单片机]
GD32 MCU上电跌落导致启动异常如何解决
大家是否碰到过MCU上电过程中存在电源波动或者电压跌落导致MCU启动异常的问题?本视频将会为大家讲解可能的原因以及解决方法: GD32 MCU上下电复位波形如下图所示,上电过程中如果存在吃电的模块,比如wifi模块/4G模块/开启某块电路等,可能存在电源电压跌落的情况,此时若MCU在启动过程中可能会造成MCU加载代码异常,进而导致启动异常。电压跌落到POR和PDR之间会有可能出现启动异常,因为该段电压区间为非正常工作电压且不会发生PDR复位。 解决方法上可以有以下两种:1、硬件整改上电波形,在VDD端增加电容,提升VDD的供电能力,进而降低电源波动;2、修改NRST引脚对应的RC阻容,调整MCU启动时间,避开电源电压跌落的
[单片机]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved