【GD32】从0开始学GD32单片机(2)—— 固件库移植

本文介绍了如何在Keil5中移植GD32F10x系列单片机固件库,包括文件结构管理、项目新建、文件配置、Keil内编译设置、调试器配置及程序下载的详细步骤,适合初学者快速上手官方库开发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

固件库文件结构

上一节我们安装部署了Keil5,也安装了GD32F10x系列的板极主持包,那么这一篇就可以开始对官方的固件库进行移植了,移植完我们才能很好的玩耍GD32的单片机。

打开我们之前解压好的固件库
里面有4个文件夹
在这里插入图片描述
“Example”文件夹里面存放的是每个外设的参考程序;“Firmware”文件夹里面存放的是固件库核心文件;“Template”文件夹里面存放的是官方的固件库移植示例;“Utilities”文件夹里面存放的是一些第三方固件驱动。
我们只需要使用“Firmware”和“Template”文件夹里面的文件即可。

新建项目

打开Keil5,点击上方“Project”,选择新建项目。
在这里插入图片描述
接着选择自己的单片机型号。
在这里插入图片描述

固件库文件移植

进入到项目的根目录,新建一个“Firmware”文件夹,将固件库“Firmware”文件夹内“CMSIS”和“GD32F10x_standard_peripheral”文件夹复制到里面。
在这里插入图片描述

将固件库“Template”文件夹内的“gd32f10x_it.c”、“gd32f10x_it.h”、“gd32f10x_libopt.h”文件复制到项目根目录的“Firmware”文件夹内。
在这里插入图片描述

移植好后的文件夹内容是这样的。
在这里插入图片描述

在根目录新建“User”文件夹,将固件库“Template”文件夹下的“main.c”、“main.h”文件复制到里面。
在这里插入图片描述

移植好后的文件夹内容是这样的。
在这里插入图片描述

Keil内配置

文件移植好后要进入到IDE内进行其他的配置。
首先把所有需要的文件导入到项目中。点击红框中的按钮,进入项目文件管理器;根据自己的需要新建并命名文件夹,可以参考我的项目文件结构。
“FW”文件夹放的是所有外设的驱动,将路径“.\Firmware\GD32F10x_standard_peripheral\Source”所有的文件添加进去;“CMSIS”文件夹放的是跟CMSIS规范相关的文件,将路径“.\Firmware\CMSIS\GD\GD32F10x\Source”下的“system_gd32f10x.c”文件添加进去;“StartUp”文件夹放的是单片机的启动文件,将路径“.\Firmware\CMSIS\GD\GD32F10x\Source\ARM”下的“startup_gd32f10x_md.s”文件添加进去;“User”文件夹放的是用户的文件,一般这里面的文件都是用户可修改的文件,将路径“.\Firmware”下的"gd32f10x_it.c"和路径“.\User”下的“main.c”、“main.h”文件复制进去。
在这里插入图片描述
导入好后的项目文件结构是这样的。
在这里插入图片描述

需要注意的是,启动文件并不是每个型号的单片机都添加“startup_gd32f10x_md.s”这个文件,需要根据自己使用的单片机型号所决定,我在官方的固件库中找不到说明,但是我们可以对比ST官方的说明。
在这里插入图片描述
简单翻译就是,如果使用的是低密度的单片机,闪存在64-128KB的用md后缀的启动文件;使用高密度的单片机,闪存在256-512KB的用hd后缀的启动文件;使用超高密度的单片机,闪存在512-1024KB的用xd后缀的启动文件;使用互联型单片机的用cl后缀的启动文件。

点击红框内按钮,进入项目设置。
“Target”标签页,右边选择对应的编译器,下面“Use MicroLIB”选项勾上,这样我们就能使用像stdio.h、stdlib.h这样的c语言库。
在这里插入图片描述
“C/C++”标签页,“Define”栏写上全局宏定义,下方“C99 Mode”打勾,“Include Paths”填写项目所用到的所有头文件的路径。
在这里插入图片描述
头文件路径参考
在这里插入图片描述

编译项目

接下来就可以对项目进行编译了,点击下方红色框内的按钮进行编译。
在这里插入图片描述
如果你看到下面的提示,说明成功编译了!
在这里插入图片描述

调试器配置

编译好项目后,我们需要配置调试器,这样我们才能把代码烧录进单片机中。点击下方红框内按钮,进入“Debug”标签页。
在这里插入图片描述
选择自己对应的调试器型号,点击“Settings”按钮。在“Debug”标签页选择时钟频率,一般肯定越高越好。如果你插入了调试器并接上开发板,这个页面会显示调试器和开发板的信息,因为我没插所以这里没有显示
在这里插入图片描述
“Flash Download”标签页,勾选“Reset and Run”,这样程序下载后调试器会自动复位。
在这里插入图片描述

程序下载

配置好调试器后,点击红框内的按钮即可下载程序到单片机中。
在这里插入图片描述

### 解决方案 当遇到 **Target 'GD32F10X_CL' uses ARM-Compiler 'Version 5' which is not available** 的错误时,这通常是因为当前使用的 Keil MDK 版本未附带默认的 ARM Compiler Version 5 (AC5),而该编译器对于构建基于 GD32F10x 系列的目标是必需的。 以下是详细的解决方案: #### 1. 安装独立的 AC5 编译器 从 MDK v5.37 开始,ARM Compiler Version 5 不再作为默认组件随软件一起提供。因此需要手动下载并安装此编译器。 可以访问 [Arm Developer](https://developer.arm.com/tools-and-software/embedded/keil-mdk/arm-compiler-5/downloads) 下载页面获取最新的 `ARMCompiler_5xx` 软件包[^2]。 完成下载后按照以下步骤操作: - 双击 `.zip` 文件解压到指定目录。 - 打开 Keil uVision IDE 并通过菜单路径 **Project → Manage Project Items → Add Folder or Extension** 将新安装的编译器路径添加至项目配置中[^4]。 #### 2. 配置目标项目的编译器版本 即使成功安装了 AC5,仍需确保所选目标已切换回支持的编译器版本。具体设置方式如下: - 进入 **Options for Target** 对话框(右键点击项目名称 -> Options for Target)。 - 切换到 **Toolchain** 或者 **Arm Compiler** 标签页。 - 在下拉列表中选择刚安装好的 **ARM Compiler V5.x** 版本[^3]。 #### 3. 更新固件库模板工程中的工具链定义 某些旧版 GD32F10x Firmware Library 工程可能硬编码指定了特定版本号的工具链。如果发现即便调整了全局选项仍然无法正常工作,则应检查是否存在类似以下语句的地方,并将其更新为兼容形式: ```c #pragma arm section rodata="CODE" #pragma arm section zidata=".bss" ``` 或者直接修改 scatter file (.sct) 中链接脚本部分的内容来适配新的编译环境。 --- ### 示例代码片段 假设我们正在调试一个简单的 blinky 应用程序,在 main.c 文件中有这样的初始化函数调用: ```c void GPIO_Configuration(void){ /* Enable the LED clock */ rcu_periph_clock_enable(RCU_GPIOA); /* Configure the GPIO_LED pin */ gpio_init(GPIOA, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_8); } ``` 以上代码依赖于正确的硬件抽象层(HAL)实现以及匹配的编译参数才能顺利运行[^1]。 --- ### 注意事项 尽管重新启用 AC5 是一种可行的办法,但从长远来看建议逐步迁移到更现代的编译体系比如 GNU Arm Embedded Toolchain 或者 AC6(ARM Compiler 6),因为它们提供了更好的性能优化和支持未来标准的能力。 ---
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马浩同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值