教大家如何创建GD32工程模板

Posted lulipro

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了教大家如何创建GD32工程模板相关的知识,希望对你有一定的参考价值。

简介

本文以Keil 5.24a为开发环境为例搭建GD32F130F8P6工程。如果你使用的芯片不是GD32F130F8P6,也没关系,本文介绍的方法比较通用,可以举一反三。

准备工作

一、下载安装Keil 5.24a
二、下载GD32F1x0的标准外设固件库(例如GD32F1x0_Firmware_Library_v3.1.0)
三、下载GD32F130的Keil pack文件(例如GigaDevice.GD32F1x0_DFP.3.1.0.pack),并安装

 

创建工程模板目录

①创建如下目录结构(可以根据个人习惯自己调整)
GD32F1x0_Proj_Template
  |--App              #应用程序代码,以main.c为主
  |--CMSIS            #CMSIS层代码
  |--StdPeriphLib     #标准外设驱动库代码
  |--Hardware         #开发项目中的硬件驱动代码,与实际开发相关
  |--Utilities        #开发项目中使用的工具代码,例如串口驱动代码,I2C驱动代码等

 

②把固件库【GD32F1x0_Firmware_Library_v3.1.0ExamplesGPIORunning_led】下的
  • gd32f1x0_it.c
  • gd32f1x0_it.h
  • gd32f1x0_libopt.h
  • main.c
拷贝到工程模板的App目录下。修改main.c为最简洁状态(如下)。在gd32f1x0_it.c中删除最开始的#include "systick.h",屏蔽SysTick_Handler函数。
#include "gd32f1x0.h"
#include <stdio.h>

int main(void)
{
    while(1)
    {
        
    }//main loop
}

 

③把固件库【GD32F1x0_Firmware_Library_v3.1.0FirmwareCMSIS】下的
  • gd32f1x0.h
  • startup_gd32f1x0.s(ARM目录下的版本,因为用的是Keil编译器而非IAR)
  • system_gd32f1x0.c
  • system_gd32f1x0.h
拷贝到工程模板的CMSIS目录下。还有一个core_cm3.h没有拷贝,因为GD32F1x0的固件库中使用的core_cm3.h版本太旧(2014年编写的),会导致在Keil524a下编译错误(因为缺少相关头文件:core_cmInstr.h等),所以我们到Keil524a的安装目录下去拷。进入到{Keil安装目录}ARMPACKARMCMSIS5.0.1CMSISInclude目录下,拷贝
  • core_cm3.h
  • cmsis_compiler.h
  • cmsis_armcc.h
到工程模板的CMSIS目录下。提示:core_cm3.h依赖cmsis_compiler.h文件,而cmsis_compiler.h文件又依赖cmsis_armcc.h文件,所以需要拷这3个文件。
 
④把固件库【GD32F1x0_Firmware_Library_v3.1.0FirmwareGD32F1x0_standard_peripheral】下的Include和Source文件拷贝到工程模板的StdPeriphLib目录下。
 
⑤由于Hardware和Utilities与实际开发相关,所以构建模版的时候不需要放文件进去。

根据已有的模板创建Keil工程

上面创建好的工程模板GD32F1x0_Proj_Template是可以重复使用的,这样就可以大大提高开发效率。
①将上面创建好的工程模板GD32F1x0_Proj_Template拷贝到自己的工作目录下,例如 【D:GD32workspace】,重命名为自己想要的名称,例如led_test。
技术图片

 

②打开Keil524a,【New uVision Project】,选择上面的led_test目录,将工程命名为led_test,保存。
接下来选择芯片型号,以GD32F130F8P6为例:
技术图片

 ③点击Cancel

 技术图片

 
 ④创建分组,然后添加代码源文件到分组中

注意:添加到分组中的为源文件,例如c文件,cpp文件,.s汇编文件等。不添加的文件不会参与编译。

技术图片

 

⑤指定编译工程所需头文件的目录(include path)
所有需要用到的头文件必须指定其目录,这样编译器才能知道去哪里找到这些头文件。如果没指定就会编译报错。
技术图片

 

 

⑥最后,勾选Create HEX,编译。
技术图片

 

 需要定义这些宏吗?

比较老的教程说要手动定义宏:GD32F1x0、 GD32F130_150、 USE_STDPERIPH_DRIVER等。实际上对于新版的Keil5来说这是没必要的。
我们可以发Keil自动在编译器的命令参数上添加了对这些宏的定义,这正是GD32提供的芯片的pack文件起到的效果,pack文件里面对每个芯片需要定义哪些基本的宏都做了默认的处理。
技术图片

 

 

 

 

 

以上是关于教大家如何创建GD32工程模板的主要内容,如果未能解决你的问题,请参考以下文章

快速开发GD32和涂鸦CBU模组通信

IDEA的初级使用优化

GD32F103学习笔记——新建工程

GD32F103学习笔记——新建工程

VS Code一键创建Vue代码模板

手把手教你使用RT-Thread制作GD32系列BSP