搭建 GD32F4xx 项目模板

前期准备

工程目录创建

将 GD32F4xx 标准固件库中的Firmware文件夹复制到工程的总目录下
111

根据项目架构创建其他目录,我的项目模板架构如下:

  • Hardware:硬件元器件相关驱动
  • User:存放main.c、滴答定时器、中断服务等相关文件
  • Project:存放 Keil 的工程文件、编译文件目录
    222

接着将 GD32F4xx 标准固件库中的Template目录下的main.c/.hgd32f4xx_it.c/.hsystick.c/.hgd32f4xx_libopt.h复制到工程的总目录下的User目录下
333

Keil工程创建

打开 Keil ,点击Project选项卡,选择New μVision Project ,选择工程文件要保存的目录,我这里选择刚才创建的Project目录,给工程文件起一个名字点击保存即可
444

接着在新弹出的对话框中最上面的下拉菜单中选择Software Packs,紧接着搜索自己的芯片型号,如果搜索不到,检查下前期准备步骤中的 GD32F4xx Software Pack是否安装成功,我的芯片是GD32F425RGT6,所以这里选择对应的芯片型号,接着点击OK即可
555

紧接着会弹出下面的对话框,我们直接点击取消或关闭即可
666

接着点击工具栏中的File Extensions, Books and Environment...按钮,打开项目管理对话框,先点击Groups的删除按钮,删掉默认的Source Group 1分组
777

接着点击新建按钮,根据我们的项目架构创建对应的分组并添加分组中对应的文件

我的分组为情况如下:

  • User:包含 main.c、systick.c、gd32f4xx_it.c
    888

  • CMSIS:包含芯片的启动文件(位于工程总目录下的 Firmware\CMSIS\GD\GD32F4xx\Source\ARM 目录下)和系统时钟配置源文件(位于工程总目录下的 Firmware\CMSIS\GD\GD32F4xx\Source 目录下)
    999

  • Firmware:包含Firmware\GD32F4xx_standard_peripheral\Source目录下的所有文件,当然,也可以只添加自己需要的文件
    1010

  • Hardware:创建自己的硬件驱动文件(如果也可以暂时不添加文件,等需要时再添加)

接着我们在点击工具栏上的魔法棒,在弹出的对话框中选择Target选项卡,按需要选择 ARM compiler 为 V5 或 V6 ,并勾选上Use MicroLIB
bbb

然后选择Output选项卡,把Create HEX File勾选上
ccc
如果需要生成bin文件,则需要在User选项卡下的After Build/RebuildRun #1勾选上,并在用户命令栏中添加这条命令:fromelf.exe --bin --output "@L.bin" "#L"

111

然后选择C/C++选项卡,配置以下头文件导入目录:

  • User
  • Firmware\CMSIS\GD\GD32F4xx\Include
  • Firmware\CMSIS
  • Firmware\GD32F4xx_standard_peripheral\Include
  • Hardware
    ddd

程序代码修改

打开main.c,删掉多余的内容,只留下以下内容:

#include "gd32f4xx.h"
#include "systick.h"
#include "main.h"

/*!
    \brief    main function
    \param[in]  none
    \param[out] none
    \retval     none
*/
int main(void)
{
    systick_config();

    while(1) {
    }
}

接着打开 gd32f4xx_it.c,来到文件末尾,删掉 Systick_Handler() 里的led_spark()函数调用
eee

然后打开systick.c,将systick_config()函数的频率从1K(即1000)改为1M(即1000000)
mmm
nnn

接着修改delay_1ms()函数,因为滴答定时器的频率从1K改为了1M,所以delay_1ms()函数的delay的值也要同步增大1000倍。

我们先将原来的delay_1ms()函数复制一份,并将函数名改为delay_1us(),之后再将delay_1ms()函数的delay的值乘1000
ooo

接着我们打开systick.h文件,为delay_1us()添加函数声明
ppp

修改系统时钟配置源文件

首先打开gd32f4xx.h,根据自己的芯片型号和晶振频率打开对应的宏定义,我的芯片型号是GD32F425RGT6,12M晶振频率,所以我这里打开GD32F425的宏定义,并将HXTAL_VALUE的值改为12000000
fff

之后来到system_gd32f4xx.c,在大约53行~70行左右的位置根据自己的芯片型号和晶振频率打开或添加对应的宏定义
ggg

还是在system_gd32f4xx.c中,在120行~165行左右,如果上一步没有添加新的宏定义,而是使用的预定义好的宏定义,那么对于文件system_gd32f4xx.c的相关修改就已经完成。可以直接移步到下面的编译验证环节。

但如果上一步并没有合适的预定义好的宏定义,而是自己添加的宏定义,那么就需要在这些条件判断的后面新增符合自己的条件的函数声明
hhh

接着来到240行~270行左右,调用自己增加的条件和声明的函数
iii

接着我们找到和自己配置最相近的条件所对应的函数声明,使用快捷键Ctil + F搜索函数声明对应的函数定义,比如我的配置是200M主频12M晶振,跟我配置最相近的条件是200M主频8M晶振,所以我这里搜索200M主频8M晶振对应的函数声明的函数定义
jjj

找到后复制一份,并根据自己的晶振频率修改函数名和RCU_PLL参数的PSC(预分频器)的值
kkk
lll

编译验证

完成上面的步骤之后,我们点击工具栏上的编译按钮,等待片刻后我们就可以看到编译结果,如果没有错误就说明我们的模板搭建成功。
qqq

至此,GD32F4的项目模板正式搭建完毕,希望对大家有所帮助。

posted @ 2026-04-29 18:46  劣技砖猿  阅读(80)  评论(0)    收藏  举报