当前位置:   article > 正文

【GD32单片机】GD32工程构建,快速上手GD32

gd32

以GD32F350为例

之前在学校接触最多的是STM32单片机,但出来工作后发现,GD32或MM32单片机却是经常能接触到的,虽然学习资料和生态没有STM32好,但基本芯片内外设资源却差不多,开发起来大同小异。

在开始构建工程之前需要去GD32的官网下载一些资料;

打开官网 https://www.gigadevice.com.cn/

官网

选择【产品中心 】-【MCU】 - 【Arm Cortex-4】,在搜索框输入GD32F350,然后选择产品型号,比如我这里选择GD32F350RBT6,然后下载数据手册和用户手册,除此之外还要下载官网提供关于这款芯片的开发板资料,点击右侧侧栏【MCU资源下载中心】。

打开资料下载中心 https://www.gd32mcu.com/cn/download

进入MCU资源下载中心

进入页面后选中【GD32F3 MCU】,然后下载开发板资料和应用软件(也就是pack包),至此资料下载完成。

开发板资料下载

pack包下载

安装开发环境

本人使用的是keil5的MDK-ARM版本。

  1. 安装pack包 ,构建工程之前需要安装pack包,打开开下载的GD32F3x0_Addon_V3.0.3文件夹,文件夹目录下有IAR和Keil两种安装环境,选择Keil目录下的keil5,可以看到GigaDevice.GD32F3x0_DFP.3.0.2.pack,双击安装即可;
  2. 新建工程文件夹 ,在桌面或其他地方新建一个文件夹,命名为GD32F3x0_Demo(当然你也可以按照你的想法来命名),在新建的文件夹下再建一个名为MDK-ARM的文件夹,用来存储keil工程文件;
  3. 新建keil工程 ,打开keil开发工具,新建工程(Project - New uvision Project…),在弹出串口下选择创建路径,创建路径选择前面创建好的路径C:\Users\xxx\Desktop\GD32F3x0_Demo\MDK-ARM,给工程命名为project(可根据实际情况命名),点击【保存】后会弹出Select Device for Target 'Target 1"…窗口,我的工程芯片是GD32F350RB,然后点击【OK】即可。
    芯片选择

添加固件

前面下载的开发板资料(GD32F3x0_Firmware_Library文件夹)结构需要先了解一下。

资料结构

固件库里面的结构如下:

固件库结构

GD32350R_EVAL_Demo_Suites的结构如下:

例程结构

了解完开发板资料结构后就可以着手构建和完善项目结构了:

  1. 添加固件库 ,将GD32F3x0_Demo_Suites_V2.2.3下的GD32F3x0_Firmware_Library固件库复制到我们新建的项目工程下;
  2. 添加用户目录及文件 ,在我们新建的项目下创建User目录,然后随便打开一个开发板例程项目(如:GD32350R_EVAL_Demo_Suites\Projects\01_GPIO_Running_LED),将gd32f3x0_it.c、gd32f3x0_it.h、gd32f3x0_libopt.h和main.c复制到我们创建的项目下的User目录下;
    移植文件
  3. 添加Driver目录 ,在我们的项目工程(GD32F3x0_Demo)下在创建一个Driver文件夹,里面用来存放自己写的驱动程序。

构建keil工程

做好前面步骤,就可以开始keil了。

Alt

  1. 项目管理 ,打开管理项目项(Manage Project Items),创建各类工程管理组,对工程文件进行分类、划分。
    项目管理

如何向组内添加工程文件呢? 选中需要添加文件的组,然后右键选择将现有文件添加到组(Add Existing Files to Group),本工程需要在每个组下添加的工程文件如下:

Usergd32f3x0_it.c、main.c
Driver根据自己写的驱动程序进行添加,本工程还没写驱动,暂时不需要添加
GD32F3x0_LibGD32F3x0_standard_peripheral\Source下所有*.c文件
STARTUPsystem_gd32f3x0.c、startup_gd32f3x0.s
  1. 工程选项管理 ,点击魔术棒(Options for Target …),Target下的ARM Compiler选择版本5;
    选项管理

在C/C++选项的Define添加一些宏和学习语言和代码块选项:

USE_STDPERIPH_DRIVER,GD32F350
  • 1

添加全局宏

在C/C++选项的Include Paths中添加*.h文件的路径,让编译器能够找到,然后点击【OK】即可。

在这里插入图片描述

修改代码

  1. 修改main.c ,代码如下:
#include "gd32f3x0.h"

int main(void)
{

    while(1)
	{
		
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  1. gd32f3x0_it.h ,代码如下:
#include "gd32f3x0_it.h"

/*!
    \brief      this function handles NMI exception
    \param[in]  none
    \param[out] none
    \retval     none
*/
void NMI_Handler(void)
{
}

/*!
    \brief      this function handles HardFault exception
    \param[in]  none
    \param[out] none
    \retval     none
*/
void HardFault_Handler(void)
{
    /* if Hard Fault exception occurs, go to infinite loop */
    while(1){
    }
}

/*!
    \brief      this function handles MemManage exception
    \param[in]  none
    \param[out] none
    \retval     none
*/
void MemManage_Handler(void)
{
    /* if Memory Manage exception occurs, go to infinite loop */
    while (1){
    }
}

/*!
    \brief      this function handles BusFault exception
    \param[in]  none
    \param[out] none
    \retval     none
*/
void BusFault_Handler(void)
{
    /* if Bus Fault exception occurs, go to infinite loop */
    while (1){
    }
}

/*!
    \brief      this function handles UsageFault exception
    \param[in]  none
    \param[out] none
    \retval     none
*/
void UsageFault_Handler(void)
{
    /* if Usage Fault exception occurs, go to infinite loop */
    while(1){
    }
}

/*!
    \brief      this function handles SVC exception
    \param[in]  none
    \param[out] none
    \retval     none
*/
void SVC_Handler(void)
{
}

/*!
    \brief      this function handles DebugMon exception
    \param[in]  none
    \param[out] none
    \retval     none
*/
void DebugMon_Handler(void)
{
}

/*!
    \brief      this function handles PendSV exception
    \param[in]  none
    \param[out] none
    \retval     none
*/
void PendSV_Handler(void)
{
}

/*!
    \brief      this function handles SysTick exception
    \param[in]  none
    \param[out] none
    \retval     none
*/
void SysTick_Handler(void)
{
	
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104

构建结果

构建结果 0 错误, 0 警告,项目构建完成。
构建结果

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/693644
推荐阅读
相关标签
  

闽ICP备14008679号