参看:STM32开发 – 开发环境搭建
参看:STM32F4 HAL库开发 – 新建基于 HAL 库的工程模板
之前已经有创建STM32标准库和HAL库的经验了。这次安装一下GD32F4试一下,有何区别。
一、器件包安装
离线安装:
直接从官网下载器件包。
下载链接:GD32F4xx AddOn
选择 GD32F4XX AddOn
下载完成之后进行解压,有一个器件包,双击这个进行安装。
二、标准固件库获取
标准固件库获取我们可以从官网进行下载。
下载链接:GD32F4xx Firmware Library
找到 GD32F4xx Firmware Library 这个压缩包:
下载完成后,进行解压。
三、标准固件库目录介绍
打开下载的 GD32F4xx 标准固件库,里面的目录如下图:
Examples
:此文件夹包含的是官方编写的示例代码,涉及芯片的大部分功能。
Firmware
:此文件夹里面有 3 个文件夹,包含 CMSIS,标准外设库和 USB 库,存放官方封装的一些库函数,方便用户开发使用。
Template
:此文件夹是工程模板文件夹,里面包含 IAR 和 Keil 的工程示例。
Utilities
:此文件夹包含一些第三方组件和 GD32 配套的开发板文件。
1、Examples
打开 Examples 文件夹之后,内容如图
从上图可以看出,这个文件夹是各种外设资源的例程,每个文件夹里面还有更为详细的功能示例。
2、Firmware
打开 Firmware 文件夹之后,内容如图:
CMSIS
:微控制器软件接口标准(CMSIS:Cortex Microcontroller Software Interface Standard) 是Cortex-M 处理器系列的与供应商无关的硬件抽象层。
GD32F4xx_standard_peripheral
: 从名称也可以看出,这个是 GD32F4 系列的标准外设库,存放一些封装了寄存器的库函数,我们后面编程也是依赖于这个库进行开发。
GD32F4xx_usb_library
: 这个是 GD32F4 系列的 USB 库函数,可以帮助我们开发一些关于 USB 的应用,如鼠标,键盘,CDC 串口,模拟 U 盘等等。
CMSIS 目录:
各个文件的相关介绍如
GD32F4xx_standard_peripheral 目录
这个里面都是一些外设库文件,覆盖 GD32F4 芯片的绝大部分功能,包含 ADC,CAN,SDIO,SPI 等等。
GD32F4xx_usb_library 目录:
这个里面的内容很多,有音频类,CDC 类,DFU 类,HID 类等。
3、Template
各个文件的相关介绍
4、Utilities
这个是第三方组件文件夹,我们不必太关注。
四、创建固件库模板
1、前提条件
- 已经安装好 Keil 软件
- 已经安装好 GD32F4xx 的 Pack 包
- 已经下载好 GD32F4xx 标准固件库
2、新建工程目录
新建文件夹,命令为 GD32F407_OS_Temp,用来保存新创建的工程
然后在该文件夹下新建 6 个文件夹,分别命名为:
APP
: 放应用层文件。
Libraries
:放 ARM 内核文件,标准外设库文件等。
Project
:放工程文件,编译文件等。
BSP
:放开发板的硬件驱动文件。
User
:放 main 函数,gd32f4xx_it 文件,systick 文件。
Doc
: 放 readme.txt 文件,工程说明文件。
3、拷贝工程文件
找到我们的固件库的下载目录,如下将Firmware 文件夹下的内容CMSIS、GD32F4xx_standard_peripheral拷贝到新建工程的Libraries文件夹下,并将GD32F4xx_standard_peripheral重命名为FWLib。
将固件库Template 文件夹的除工程文件夹、readme.txt 文件不拷贝之外全拷贝到新建的
User 文件夹下。
在 Doc 文件夹下新建一个 readme.txt 文件
4、新建 Keil 工程
打开 keil,点击最上面的 Project 选项卡,选择 New uVision Project 选项新建一个工程。
选择保存路径为我们刚才创建的文件夹下的 Project,文件名为 GD32F407demo,然后点击保存。
5、器件选择
点击保存之后,弹出工程配置窗口,选择所需芯片,这里依次选择
GigaDevice->GD32F4xx Series->GD32F407->GD32F407RK,然后点击 ok
6、组件选择
确定所需芯片之后,弹出 RTE 的环境配置对话框,选择工程所需的组件,不用配置点击取消。
7、创建分组并添加源文件
这时我们的工程已经创建完成,但是可以看到工程里面还没有文件,我们可以创建一些分组和添加一些文件。我们打开管理工程项去创建分组和添加文件。
输入Project Targets: GD32F407
新建分组,点击新建按钮,然后输入要新建的分组名
现在需要创建User、FWlib、Doc、CMSIS、APP、BSP 等分组
User
添加以下文件。
文件在新建工程的 User 目录下
FWlib
添加标准外设库文件,需要用到的时候再添加,也可以全部添加(编译速度慢)。必须添加的是 rcu 这个外设库,这个是和时钟相关的,另外这里还需要添加一个 gpio 的外设库文件。
文件在新建工程的 Libraries\FWLib\Source目录下
CMSIS
添加 startup_gd32f450_470.s 启动文件和和 system_gd32f4xx.c 文件。
注意:添加启动文件需要勾选文件类型为All files(*.),因为启动文件是以.s 结尾。
文件在新建工程的 CMSIS\GD\GD32F4xx\Source\ARM和CMSIS\GD\GD32F4xx\Source目录下。
Doc
然后添加 readme.txt 文件。
文件在新建工程的 Doc 目录下。
APP和BSP
暂时不添加任何文件。
新建完成点击 ok 之后,工程目录如下:
8、添加宏和头文件路径
添加宏是为了去使能这个芯片的头文件,这个宏在 GD32f4xx.h 中有定义,添加头文件路径是为了使编译器能够去寻找到对应的头文件。
添加宏:
在 Define 下填写 USE_STDPERIPH_DRIVER,GD32F407
添加头文件路径:
点击 Include Paths 后面的三个小点
点击 New 按钮进行添加一条路径
依次选择:
新建工程的 User 目录
新建工程的 Libraries\FWLib\Include 目录
新建工程的 Libraries\CMSIS 目录
新建工程的 Libraries\CMSIS\GD\GD32F4xx\Include 目录
9、配置工程
勾选使用 Use MicroLIB。
这是一个 Keil 自带的简易的库,一般在串口进行重定向的时候使用。
修改 ARM Compiler 版本
编辑器版本选择 5,默认使用 6,如果用 6 的话编译可能会有警告,可能是支持问题。
查看.elf文件,路径和名字
查看.elf文件,路径和名字
生成bin文件:
选中 Run #1,在后边的文本框中输入fromelf.exe --bin -o …\BIN\GD32F407demo.bin .\Objects\GD32F407demo.axf
注意: - 的中英文 和必须加 .
编译就可以生成bin文件了。
优化选择项
有Level0 - Level3四个选项。
初学者、在线调试建议使用Level0,也就是不优化,这样执行的效果才和代码一样。如果配置成Level3,在线调试可能有些地方优化而不能打断点。
Level0 - Level3四个选项。
10、修改工程代码
打开 main.c 文件,删除一些不必要的代码,剩余部分如下:
打开 gd32f4xx_it.c 文件,拉到最后面,然后删掉 Systick_Handler 下面的代码。
11、编译
点击编译按钮进行编译。
可以看到 0 个错误,0 个警告,至此,工程模板创建完成。
示例工程:
链接:GD32F407_OS_Temp_20240913.rar
提取码:djse