GD32单片机工程构建及快速上手指南

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

  • 以GD32F350为例
  • 安装开发环境
  • 添加固件
  • 构建keil工程
  • 修改代码
  • 构建结果
  • 以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),本工程需要在每个组下添加的工程文件如下:

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

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

    USE_STDPERIPH_DRIVER,GD32F350
    

    添加全局宏

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

    修改代码

    1. 修改main.c ,代码如下:
    #include "gd32f3x0.h"
    
    int main(void)
    {
    
        while(1)
    	{
    		
        }
    }
    
    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)
    {
    	
    }
    

    构建结果

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

    物联沃分享整理
    物联沃-IOTWORD物联网 » GD32单片机工程构建及快速上手指南

    发表评论