二、工程模板创建
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=
找到 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 个警告,至此,工程模板创建完成。