【二】工程模板创建
1.1.器件包安装
1.1.1.前提条件
本Pack包适用于Keil V5.27及以上版本。
1.1.2.在线安装
打开keil5,点击Pack Installer,如图1-2-1所示

点击Pack Installer按钮之后弹出界面,点击ok,如图1-2-2所示

在Devices选项卡里找到GigaDevice选项,然后选中点开,如图1-2-3所示

选择我们使用的芯片型号系列,因为我们使用的是GD32F450ZG,所以我们选择GD32F4xx Series,如图1-2-4所示

选中之后,在右边一栏中Device Specific下拉菜单下可见 GigaDevice::GD32F4xx_DFP,点击右侧的Install按钮,即可在线下载GD32F4xx系列产品的Pack包,如图1-2-5所示

在窗口最下面可见下载安装进度条,如图1-2-6所示
此时Pack会在线下载到Keil5安装目录下(..\Keil_v5\GigaDevice),并完成安装。我们可以查看其目录,如图1-2-7所示

1.1.3.离线安装
直接从官网下载器件包
下载链接: http://www.gd32mcu.com/cn/download/7?kw=GD32F4
选择GD32F4XX AddOn,如图1-3-1所示

下载完成之后进行解压,在GD32F4xx_AddOn_V2.2.0\Keil\Keil5目录下,有一个器件包,如图1-3-2所示

双击这个进行安装,安装完成之后如图1-3-3所示

1.2.标准固件库获取
标准固件库获取我们可以从官网进行下载
下载链接:http://www.gd32mcu.com/cn/download/7?kw=GD32F4
找到GD32F4xx Firmware Library这个压缩包,如图2-1-1所示

下载完成后,进行解压,解压后目录如图2-1-2所示

1.3.标准固件库目录介绍
1.3.1.文件夹介绍
打开下载的GD32F4xx标准固件库,里面的目录如图3-1-1所示

Examples:此文件夹包含的是官方编写的示例代码,涉及芯片的大部分功能Firmware:此文件夹里面有3个文件夹,包含CMSIS,标准外设库和USB库,存放官方封装的一些库函数,方便用户开发使用Template:此文件夹是工程模板文件夹,里面包含IAR和Keil的工程示例Utilities:此文件夹包含一些第三方组件和GD32配套的开发板文件
1.3.2.Examples
打开Examples文件夹之后,内容如图3-2-1所示

从上图中可以看出,这个文件夹里是各种外设资源的例程,每个文件夹里面还有更为详细的功能示例,对我们开发GD32芯片功能具有很高的参考价值。我们一定要多看,多读,多用
1.3.3.Firmware
打开Firmware文件夹之后,内容如图3-3-1所示

-
CMSIS:微控制器软件接口标准(CMSIS:Cortex Microcontroller Software Interface Standard) 是Cortex-M处理器系列的与供应商无关的硬件抽象层 -
GD32F4xx_standard_peripheral: 从名称也可以看出,这个是GD32F4系列的标准外设库,存放一些封装了寄存器的库函数,我们后面编程也是依赖于这个库进行开发 -
GD32F4xx_usb_library: 这个是GD32F4系列的USB库函数,可以帮助我们开发一些关于USB的应用,如鼠标,键盘,CDC串口,模拟U盘等等
下面再分别对以上几个文件夹进行介绍:
各个文件的相关介绍如图3-3-2所示

GD32F4xx_standard_peripheral目录结构: 这个里面都是一些外设库文件,覆盖GD32F4芯片的绝大部分功能,包含ADC,CAN,SDIO,SPI等等。
GD32F4xx_usb_library目录结构: 这里面的内容很多,有音频类,CDC类,DFU类,HID类等,我们暂时是用不到这些文件的,后面如果我们要开发USB设备,我们再来研究。
1.3.4.Template
Template目录结构:
各个文件的相关介绍如图3-4-1所示

1.3.5.Utilities
这个是第三方组件文件夹,我们不必太关注
1.4.创建固件库模板
1.4.1.前提条件
- 已经安装好Keil软件
- 已经安装好GD32F4xx的Pack包
- 已经下载好GD32F4xx标准固件库
1.4.2.新建工程目录
新建文件夹,命令为Template,用来保存新创建的工程,如图4-2-1所示

然后在该文件夹下新建6个文件夹,分别命名为:
- Project:放工程文件,编译文件等
- Firmware:放ARM内核文件,标准外设库文件等
- Hardware:放开发板的硬件驱动文件
- App: 放应用层文件
- User:放main函数,gd32f4xx_it文件,systick文件
- Doc: 放readme.txt文件,工程说明文件
文件目录如图4-2-2所示

1.4.3.拷贝工程文件
找到我们的固件库的下载目录,将GD32F4xx_Firmware_Library_V3.0.0
GD32F4xx_Firmware_Library\Firmware文件夹下的内容全部拷贝到新建目录的Firmware下,如图4-3-1所示

在Hardware下新建LED文件夹,为我们以后点灯做准备,如图4-3-2所示

将\GD32F4xx_Firmware_Library_V3.0.0\GD32F4xx_Firmware_Library
Template文件夹的除工程文件夹、readme.txt文件不拷贝之外全拷贝到新建的User文件夹下,如图4-3-3所示

在Doc文件夹下新建一个readme.txt文件,如图4-3-4所示

1.4.4.新建Keil工程
打开keil,点击最上面的 Project 选项卡,选择 New uVision Project 选项新建一个工程,如图4-4-1所示

选择保存路径为我们刚才创建的文件夹下的 Project,文件名为 GD32F450,然后点击保存,如图4-4-2所示

1.4.5.器件选择
点击保存之后,弹出工程配置窗口,选择所需芯片,这里依次选择 GigaDevice -> GD32F4xx Series -> GD32F450 -> GD32F450ZG ,然后点击 ok,如图4-5-1所示

1.4.6.组件选择
确定所需芯片之后,弹出RTE的环境配置对话框,选择工程所需的组件,不用配置点击取消,如图4-6-1所示

1.4.7.创建分组并添加源文件
这时我们的工程已经创建完成,但是可以看到工程里面还没有文件,我们可以创建一些分组和添加一些文件。我们打开管理工程项去创建分组和添加文件,如图4-7-1所示

新建分组,点击新建按钮,然后输入要新建的分组名,如图4-7-2所示

创建User分组之后点击Add Files就可以添加文件,如图4-7-3所示

再添加以下文件(在新建工程的User目录下):
- gd32f4xx_it.c
- main.c
- systick.c
创建分组和添加文件如图4-7-4所示

创建Firmware分组,然后添加标准外设库文件,需要用到的时候再添加,也可以全部添加(编译速度慢)。必须添加的是rcu这个外设库,这个是和时钟相关的,另外这里还演示添加一个gpio的外设库文件(在新建工程的Firmware/GD32F4xx_standard_peripheral/Source/目录下),如图4-7-5所示

新建CMSIS分组,添加startup_gd32f450_470.s启动文件(新建工程的Firmware/CMSIS/GD/GD32F4xx/Source/ARM/),和system_gd32f4xx.c文件(新建工程的Firmware/CMSIS/GD/GD32F4xx/Source/),注意,添加启动文件需要勾选文件类型为All files(*.),因为启动文件是以.s结尾。如图4-7-6所示

新建Doc分组,然后添加readme.txt文件(新建工程的Doc/),文件类型要选择All files,不然会不显示,如图4-7-7所示

新建Hardware分组,暂时先不添加任何文件
新建App分组,暂时不添加任何文件
全部新建分组完成,如图4-7-8所示

新建完成点击ok之后,工程目录如图4-7-9所示

1.4.8.修改工程代码
打开main.c文件,删除一些不必要的代码,剩余部分如图4-8-1所示

打开gd32f4xx_it.c文件,拉到最后面,然后删掉Systick_Handler下面的代码。剩余部分如图4-8-2所示

1.4.9.添加宏和头文件路径
添加宏是为了去使能这个芯片的头文件,这个宏在GD32f4xx.h中有定义,添加头文件路径是为了使编译器能够去寻找到对应的头文件
添加宏:
点击Options for target,如图4-9-1所示

选择c/c++选项卡,如图4-9-2所示

在Define下填写 USE_STDPERIPH_DRIVER,GD32F450 如图4-9-3所示

添加头文件路径:
还是刚才那个选项卡,点击Include Paths后面的三个小点,如图4-9-4所示

点击New按钮进行添加一条路径,如图4-9-5所示

点击后面三个小点进行路径选择,如图4-9-6所示

依次选择:
- 新建工程的
User目录 - 新建工程的
Firmware/CMSIS目录 - 新建工程的
Firmware\CMSIS\GD\GD32F4xx\Include目录 - 新建工程的
Firmware\GD32F4xx_standard_peripheral\Include目录
添加完成之后,如图4-9-7所示

1.4.10.配置工程
勾选使用Use MicroLIB
这是一个Keil自带的简易的库,一般在串口进行重定向的时候使用
点击Options for target,在target选项卡下,然后勾选Use MicroLIB,如图4-10-1所示

勾选生成hex文件
Hex文件是编译的十六进制的文件,可以通过串口或者DFU直接下载到开发板中
点击 Options for target ,在Output选项卡下,勾选Create HEX File,如图4-10-2所示

修改ARM Compiler版本
编辑器版本选择5,默认使用6,如果用6的话编译可能会有警告,可能是支持问题
点击 Options for target ,在 Target 选项卡下,修改 ARM Compiler 为 User default compiler version 5,如图4-10-3所示

1.4.11.编译
一切配置好之后,就可以进行编译了
点击编译按钮进行编译。如图4-11-1所示

编译结果如图4-11-2所示

可以看到0个错误,0个警告,至此,工程模板创建完成