1.简介
GD32E230 系列是 GD 最新推出的 Cortex_M23 系列产品,该系列资源上与既有的 GD32F1x0以及 GD32F3x0 兼容度非常高。由于 GD32E230 系列主打低功耗和低成本,所以在存量客户中可能会有越来越多的客户会有从 GD32F1x0 和 GD32F3x0 移植到 GD32E230 系列的需求,本文档专门针对既有的 GD32F1x0 和 GD32F3x0 代码如何移植到 GD32E230 做一个详细的介绍;
2.硬件资源对比
![wKgaombXtnCASg_qAACdz3XP_Wg500.png](https://file1.elecfans.com/web2/M00/06/15/wKgaombXtnCASg_qAACdz3XP_Wg500.png)
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](https://file1.elecfans.com/web2/M00/05/2A/wKgZombXtouAdSz2AABmKt9kl2Q222.png)
4.外设地址对比
![wKgaombXtpeADZplAABfWGPTaZ0379.png](https://file1.elecfans.com/web2/M00/06/15/wKgaombXtpeADZplAABfWGPTaZ0379.png)
1. GD32E230 系列最大封装为 LQFP48,因此 GPIOC 端口不少 GPIO 未 PIN OUT;
2. GD32E230 将 32 位的 TIMER1 裁剪掉,移植时需要特别注意;
3. GD32E230 系列有一路比较器,GD32F130/330 没有该资源;
4. GD32E230 系列新增了 1K 的 OTP 区域;
5.开发工具版本对比
![wKgaombXtqeAMomCAAApgMs_9F8784.png](https://file1.elecfans.com/web2/M00/06/15/wKgaombXtqeAMomCAAApgMs_9F8784.png)
注意:使用 Keil 5.25 有可能会出现在 Debug 下拉选项中找不到 J-LINK/J-TRACE Cortex 的情况。遇到这种情况可以手动打开 keil5 安装目录x:\Keil_v5\TOOLS.INI 文件,首先查看[ARM]下”CPUDLL3=SARMV8M.DLL(TDRV2,TDRV4,TDRV13,TDRV14,TDRV15,TDRV16)”选项,然后查看[ARMADS]下面“CPUDLL3=SARMV8M.DLL(TDRV2 ,TDRV13,TDRV14,TDRV15,TDRV16)”,两者内容是否一致,如果不一致手动添加相应内容。
![wKgaombXtrmAKY83AAAry3g_6Zc261.png](https://file1.elecfans.com/web2/M00/06/15/wKgaombXtrmAKY83AAAry3g_6Zc261.png)
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](https://file1.elecfans.com/web2/M00/05/2A/wKgZombXtsyAeGSVAABsube-Nf0540.png)
3. 根据实际情况修改使用的芯片型号以及 C 语言语法为 C99;
![wKgZombXttSAAwQtAAB7u83DRW4859.png](https://file1.elecfans.com/web2/M00/05/2A/wKgZombXttSAAwQtAAB7u83DRW4859.png)
![wKgaombXttSAWtsPAACogb8E3o0442.png](https://file1.elecfans.com/web2/M00/06/15/wKgaombXttSAWtsPAACogb8E3o0442.png)
4. 拷贝 Cortex M23 内核支持文件至 x: \GD32F1x0_Firmware_Library_V2.0.0\Firmware\CMSIS
![wKgZombXtu2AJPxVAACws8mhpb8249.png](https://file1.elecfans.com/web2/M00/05/2A/wKgZombXtu2AJPxVAACws8mhpb8249.png)
5. 修改“gd32f1x0.h”头文件内容
![wKgZombXtvuAchKhAAB7I2mJps0682.png](https://file1.elecfans.com/web2/M00/05/2A/wKgZombXtvuAchKhAAB7I2mJps0682.png)
gd32f1x0.h头文件修改内容
![wKgaombXtwGACyioAACKgnOYS0A527.png](https://file1.elecfans.com/web2/M00/06/15/wKgaombXtwGACyioAACKgnOYS0A527.png)
6. gd32f1x0_misc.c 文件调整内容
![wKgZombXtw6AZD5vAAEs0YKvSy0574.png](https://file1.elecfans.com/web2/M00/05/2A/wKgZombXtw6AZD5vAAEs0YKvSy0574.png)
![wKgZombXtyqAfqXfAAFzMUwmByo663.png](https://file1.elecfans.com/web2/M00/05/2A/wKgZombXtyqAfqXfAAFzMUwmByo663.png)
特别注意事项
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](https://file1.elecfans.com/web2/M00/05/2A/wKgZombXt0OAcFUbAAHHmhSIXrs568.png)
8. ”gd32f1x0_fmc.c”文件修改内容
GD32E230 因为 Flash 只支持 32 位和 64 位编程,所以原有固件库中的选项字节操作需要调整,原有的
半字编程不支持,考虑到实用性,只修改和验证如下有提及的 FMC,其他选项字节函数不做支持;
![wKgZombXt1mARXtmAAEhejdfh3M299.png](https://file1.elecfans.com/web2/M00/05/2A/wKgZombXt1mARXtmAAEhejdfh3M299.png)
![wKgaombXt1mAf9AZAADlN3KYmao425.png](https://file1.elecfans.com/web2/M00/06/15/wKgaombXt1mAf9AZAADlN3KYmao425.png)
![wKgZombXt1mAK44wAAEaF-WB-HA749.png](https://file1.elecfans.com/web2/M00/05/2A/wKgZombXt1mAK44wAAEaF-WB-HA749.png)
![wKgaombXt1mAdbdqAADPThou43M268.png](https://file1.elecfans.com/web2/M00/06/15/wKgaombXt1mAdbdqAADPThou43M268.png)
![wKgZombXt1mACjMOAACjQzaumYc413.png](https://file1.elecfans.com/web2/M00/05/2A/wKgZombXt1mACjMOAACjQzaumYc413.png)
7. GD32F1x0_Firmware_Library_V3.0.0 移植步骤
1. 电脑安装 keil 5.25 及以上版本 MDK 及 GD32E230 插件
2. 原有工程项目可能是 keil 4 建立的,直接在 keil 4 工程后缀名添加 x,即变成 keil 5 项目;
![wKgZombXtsyAeGSVAABsube-Nf0540.png](https://file1.elecfans.com/web2/M00/05/2A/wKgZombXtsyAeGSVAABsube-Nf0540.png)
3 根据实际情况修改使用的芯片型号以及 C 语言语法为 C99;
![wKgZombXttSAAwQtAAB7u83DRW4859.png](https://file1.elecfans.com/web2/M00/05/2A/wKgZombXttSAAwQtAAB7u83DRW4859.png)
![wKgaombXttSAWtsPAACogb8E3o0442.png](https://file1.elecfans.com/web2/M00/06/15/wKgaombXttSAWtsPAACogb8E3o0442.png)
4 拷贝 Cortex M23 内核支持文件至 x: \GD32F1x0_Firmware_Library_V2.0.0\Firmware\CMSIS
![wKgZombXtu2AJPxVAACws8mhpb8249.png](https://file1.elecfans.com/web2/M00/05/2A/wKgZombXtu2AJPxVAACws8mhpb8249.png)
5 修改“gd32f1x0.h”头文件内容
![wKgZombXtvuAchKhAAB7I2mJps0682.png](https://file1.elecfans.com/web2/M00/05/2A/wKgZombXtvuAchKhAAB7I2mJps0682.png)
![wKgZombXt7WAEAljAACKhY51wEQ729.png](https://file1.elecfans.com/web2/M00/05/2A/wKgZombXt7WAEAljAACKhY51wEQ729.png)
6 gd32f1x0_misc.c 文件调整内容
![wKgaombXuFyAZQnuAADKOAtVYvk686.png](https://file1.elecfans.com/web2/M00/06/15/wKgaombXuFyAZQnuAADKOAtVYvk686.png)
![wKgZombXuG6Acht9AADV1X5ErPQ313.png](https://file1.elecfans.com/web2/M00/05/2A/wKgZombXuG6Acht9AADV1X5ErPQ313.png)
特别注意事项
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](https://file1.elecfans.com/web2/M00/05/2A/wKgZombXuJqAIcn0AAEPxUdkerM154.png)
8.”gd32f1x0_fmc.c”文件修改内容
GD32E230 因为 Flash 只支持 32 位和 64 位编程,所以原有固件库中的选项字节操作需要调整,原有的半字编程不支持,考虑到实用性,只修改和验证如下有提及的 FMC,其他选项字节函数不做支持;
![wKgZombXt1mARXtmAAEhejdfh3M299.png](https://file1.elecfans.com/web2/M00/05/2A/wKgZombXt1mARXtmAAEhejdfh3M299.png)
![wKgaombXt1mAf9AZAADlN3KYmao425.png](https://file1.elecfans.com/web2/M00/06/15/wKgaombXt1mAf9AZAADlN3KYmao425.png)
![wKgZombXt1mAK44wAAEaF-WB-HA749.png](https://file1.elecfans.com/web2/M00/05/2A/wKgZombXt1mAK44wAAEaF-WB-HA749.png)
![wKgaombXt1mAdbdqAADPThou43M268.png](https://file1.elecfans.com/web2/M00/06/15/wKgaombXt1mAdbdqAADPThou43M268.png)
![wKgZombXt1mACjMOAACjQzaumYc413.png](https://file1.elecfans.com/web2/M00/05/2A/wKgZombXt1mACjMOAACjQzaumYc413.png)
8. GD32F3x0_Firmware_Library 移植步骤
1. 电脑安装 keil 5.25 及以上版本 MDK 及 GD32E230 插件
2. 原有工程项目可能是 keil 4 建立的,直接在 keil 4 工程后缀名添加 x,即变成 keil 5 项目;
![wKgZombXtsyAeGSVAABsube-Nf0540.png](https://file1.elecfans.com/web2/M00/05/2A/wKgZombXtsyAeGSVAABsube-Nf0540.png)
8 根据实际情况修改使用的芯片型号以及 C 语言语法为 C99;
![wKgZombXttSAAwQtAAB7u83DRW4859.png](https://file1.elecfans.com/web2/M00/05/2A/wKgZombXttSAAwQtAAB7u83DRW4859.png)
![wKgaombXttSAWtsPAACogb8E3o0442.png](https://file1.elecfans.com/web2/M00/06/15/wKgaombXttSAWtsPAACogb8E3o0442.png)
9 拷贝 Cortex M23 内核支持文件至 x: \GD32F3x0_Firmware_Library\Firmware\CMSIS
![wKgZombXtu2AJPxVAACws8mhpb8249.png](https://file1.elecfans.com/web2/M00/05/2A/wKgZombXtu2AJPxVAACws8mhpb8249.png)
10 修改“gd32f3x0.h”头文件内容
![wKgaombXuViAbI0AAACU7_OoPn8468.png](https://file1.elecfans.com/web2/M00/06/16/wKgaombXuViAbI0AAACU7_OoPn8468.png)
11 gd32f3x0_misc.c 文件调整内容
![wKgaombXuWWATeBNAADKwaXxVNo535.png](https://file1.elecfans.com/web2/M00/06/16/wKgaombXuWWATeBNAADKwaXxVNo535.png)
![wKgaombXuWyAa6pQAADWM_r9UFM667.png](https://file1.elecfans.com/web2/M00/06/16/wKgaombXuWyAa6pQAADWM_r9UFM667.png)
特别注意事项
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](https://file1.elecfans.com/web2/M00/06/16/wKgaombXuXqAHSqBAAEOhqvUrnc897.png)
8.”gd32f3x0_fmc.c”文件修改内容
GD32E230 因为 Flash 只支持 32 位和 64 位编程,所以原有固件库中的选项字节操作需要调整,原有的
半字编程不支持。Flash 读取需要对齐,考虑到实用性,只修改和验证如下有提及的 FMC,其他选项字
节函数不做支持;
![wKgZombXuYyAQnBbAADycEsvUDM524.png](https://file1.elecfans.com/web2/M00/05/2B/wKgZombXuYyAQnBbAADycEsvUDM524.png)
![wKgaombXuZKAd-8bAADB42Ujaz8536.png](https://file1.elecfans.com/web2/M00/06/16/wKgaombXuZKAd-8bAADB42Ujaz8536.png)
![wKgZombXuZiAAzi7AAISWrjndsU585.png](https://file1.elecfans.com/web2/M00/05/2B/wKgZombXuZiAAzi7AAISWrjndsU585.png)
![wKgaombXuZyAL4GCAAEdePzTJYI068.png](https://file1.elecfans.com/web2/M00/06/16/wKgaombXuZyAL4GCAAEdePzTJYI068.png)
![wKgaombXuaGAb7uNAACbPMHG4_E281.png](https://file1.elecfans.com/web2/M00/06/16/wKgaombXuaGAb7uNAACbPMHG4_E281.png)
-
单片机
+关注
关注
6044文章
44632浏览量
639434 -
mcu
+关注
关注
146文章
17370浏览量
352999 -
嵌入式
+关注
关注
5096文章
19199浏览量
308315 -
STM32
+关注
关注
2274文章
10929浏览量
358028 -
GD32
+关注
关注
7文章
416浏览量
24533
发布评论请先 登录
相关推荐
GD32F1x0系列固件库
【GD32 MCU 移植教程】7、从 GD32F10x 移植到 GD32E103
![【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>移植</b>教程】7、<b class='flag-5'>从</b> <b class='flag-5'>GD32F10x</b> <b class='flag-5'>移植</b><b class='flag-5'>到</b> <b class='flag-5'>GD32E</b>103](https://file1.elecfans.com/web2/M00/06/3A/wKgaombZC9iADDHsAAAzqJTGQus009.png)
【GD32 MCU 移植教程】10、从STM32F030系列移植到GD32E230系列
![【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>移植</b>教程】10、<b class='flag-5'>从</b>STM32<b class='flag-5'>F</b>030系列<b class='flag-5'>移植</b><b class='flag-5'>到</b><b class='flag-5'>GD32E230</b>系列](https://file1.elecfans.com/web2/M00/06/88/wKgaombbuVSAcAARAABE_onyvsw162.png)
AN169 从GD32E230系列移植到GD32E235系列
![AN169 <b class='flag-5'>从</b><b class='flag-5'>GD32E230</b>系列<b class='flag-5'>移植</b><b class='flag-5'>到</b><b class='flag-5'>GD32E</b>235系列](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
评论