一、新建本地工程文件夹
为了工程目录更加清晰,我们在本地电脑上新建一个“工程模板”文件夹,在它之下再新建 6 个文件夹,具体如下:
名称 | 作用 |
---|---|
Doc | 用来存放程序说明的文件,由写程序的人添加 |
Libraries | 存放的是库文件 |
Listing | 存放编译器编译时候产生的 C/汇编/链接的列表清单 |
Output | 存放编译产生的调试信息、hex 文件、预览信息、封装库等 |
Project | 用来存放工程 |
User | 用户编写的驱动文件 |
在本地新建好文件夹后,把准备好的库文件添加到相应的文件夹下:
名称 | 作用 |
---|---|
Doc | 工程说明.txt |
Libraries | CMSIS:里面放着跟 CM3 内核有关的库文件 GD32F10x_standard_peripheral:GD32 标准外设库文件 |
Listing | 暂时为空 |
Output | 暂时为空 |
Project | 暂时为空 |
User | gd32f10x_libopt.h:用来配置库的头文件 gd32f10x_it.h gd32f10x_it.c:中断相关的函数都在这个文件编写,暂时为空 main.c:main 函数文件 |
二、新建工程
打开 KEIL5,新建一个工程,工程名根据喜好命名,我这里取 Template(中文是模版
的意思),保存在 Project\RVMDK(uv5)文件夹下。
2.1 选择CPU型号
根据你开发板使用的 CPU 具体的型号来选择。如果这里没有出现你想要的 CPU 型号,或者一个型号都没有,那么肯定是你的 KEIL5 没有添加 device 库,查看 GD32F103学习笔记(1)——搭建环境、编译烧写
2.2 在线添加库文件
等下我们手动添加库文件,这里我们点击关掉。
2.3 添加组文件夹
在新建的工程中添加 5 个组文件夹,用来存放各种不同的文件,文件从本地建好的工程文件夹下获取,双击组文件夹就会出现添加文件的路径,然后选择文件即可。
名称 | 存放文件 |
---|---|
Startup | startup_gd32f10x_hd.s(根据芯片Flash容量选择) |
CMSIS | system_gd32f10x.c |
Peripherals | GD32F10x_standard_peripheral\Source 文件夹下的全部 C 文件,即固件库 |
User | 用户编写的文件: main.c:main 函数文件,暂时为空 gd32f10x_it.c:跟中断有关的函数都放这个文件,暂时为空 |
Doc | 工程说明.txt:程序说明文件,用于说明程序的功能和注意事项等 |
2.4 添加文件
-
CMSIS 中添加从官方下载的固件库中
GD32F10x_Firmware_Library_V2.2.2\Firmware\CMSIS\GD\GD32F10x\Source的system_gd32f10x.c
文件 -
Peripherals 中添加从官方下载的固件库中
GD32F10x_Firmware_Library_V2.2.2\Firmware\GD32F10x_standard_peripheral\Source的全部C文件
-
Startup 中添加从官方下载的固件库中
GD32F10x_Firmware_Library_V2.2.2\Firmware\CMSIS\GD\GD32F10x\Source\ARM的根据芯片容量选择对应的启动文件(这里我用的是GD32F103RCT6选择startup_gd32f10x_hd.s
) -
User 中添加
main.c
和从官方下载的固件库中GD32F10x_Firmware_Library_V2.2.2\Template的gd32f10x_it.c
、gd32f10x_it.h
、gd32f10x_libopt.h
文件
2.5 配置魔术棒选项卡
- Target 中选中微库“Use MicroLib”,为的是在日后编写串口驱动的时候可以使用 printf 函数。
- 在 Output 选项卡中把输出文件夹定位到我们工程目录下的“Output”文件夹,如果想
在编译的过程中生成 hex 文件,那么那 Create HEX File 选项勾上。
- 在 Listing 选项卡中把输出文件夹定位到我们工程目录下的“Listing”文件夹。
-
在 C/C++选项卡中添加处理宏及编译器编译的时候查找的头文件路径。如果头文件路径添加有误,则编译的时候会报错找不到头文件。
在这个选项中添加宏,就相当于我们在文件中使用“#define”语句定义宏一样。在编
译器中添加宏的好处就是,只要用了这个模版,就不用源文件中修改代码。- GD32F10X_HD 宏:为了告诉 GD32 标准库,我们使用的芯片类型是 GD32
型号是大容量的,使 GD32 标准库根据我们选定的芯片型号来配置。 - USE_STDPERIPH_DRIVER 宏:为了让 gd32f10x.h 包含 gd32f10x_libopt.h 这个头文件。
- GD32F10X_HD 宏:为了告诉 GD32 标准库,我们使用的芯片类型是 GD32
2.6 仿真器配置
2.6.1 J-Link烧录
单击 Options for Targe,再选择 Debug 边上是 Use 框是
J-LINK 说明选择正确,再单击 Settings,会跳出有 IDCODE 显示,说明已经找到芯片内核,如果没有显示,排查如图箭头所指的 Port 是否选为 SW,还有 J-LINK 驱动是否正确,一般以上排查都能解决问题,最终有 IDCODE 显示,说明板子硬件连接,工程配置都正确,可以进行下一步下载。
如果用的是JLink V8,很可能会遇到无法正常烧写的问题,参考 解决方法:调试NRF52832工程时JLink提示错误信息read:@0x02000004
2.6.2 ST-Link烧录
- 安装 ST-Link 下载器的驱动
百度网盘:https://pan.baidu.com/s/1ZoXKAqjec9Bc6oN6_MNJyA?pwd=9181 提取码:9181
下载解压后双击 stlink_winusb_install 进行安装。 - 选择 ST-Link 下载
单击 Options for Targe,再选择 Debug 边上是 Use 框是
ST-LINK 说明选择正确,再单击 Settings,会跳出有 IDCODE 显示,说明已经找到芯片内核,板子硬件连接,工程配置都正确,可以进行下载。
2.6.3 CMSIS-DAP烧录
单击 Options for Targe,再选择 Debug 边上是 Use 框是
CMSIS-DAP 说明选择正确,再单击 Settings,会跳出有 IDCODE 显示,说明已经找到芯片内核,箭头所指的 Port 选为 SW,速度选择 5MHz,板子硬件连接,工程配置都正确,可以进行下一步下载。
2.7 选择 CPU 型号
这一步的配置也不是配置一次之后完事,常常会因为各种原因需要重新选择,当你下载的时候,提示说找不到 Device 的时候,请确保该配置是否正确。有时候下载程序之后,不会自动运行,要手动复位的时候,也回来看看这里的“Reset and Run”配置是否失效。GD32F103RCT6 用的 FLASH 大小是 512K,所以这里选择 512K 的容量,如果使用的是其他型号的,要根据实际情况选择。
2.8 修改main.c
#include "gd32f10x.h"
int main(void)
{
while(1)
{
}
}
点击编译,显示如下:
一个新的工程模版新建完毕。
三、工程模板
百度网盘:https://pan.baidu.com/s/1eDirHaScNw6CcRRBf5y7Hg?pwd=fag0
提取码:fag0
• 由 Leung 写于 2022 年 4 月 11 日
网友评论