• 兆易创新GD32 (二)官方工程 Template 和 创建工程


    官方例程位于标准库的目录下,详细路径如下
    GD32F4xx_Firmware_Library_V3.0.0\GD32F4xx_Firmware_Library_V3.0.0\GD32F4xx_Firmware_Library\Template
    在这里插入图片描述
    文件目录清晰简单。值得注意的是system_gd32f4xx.c 位于CMSIS目录下
    CMSIS简单理解ARM公司的统一软件命名规则Cortex Microcontroller Software Interface Standard。
    其中SystemInit 函数是CMSIS规定的接口,在今后的开发中,CMSIS出现频率会越来越高,迟早是要学的。
    在这里插入图片描述gd32f4xx_libopt.h 后面会提到

    systick.c
    配置了系统定时器模块,并且开启了定时器中断

    oid systick_config(void)
    {
        /* setup systick timer for 1000Hz interrupts */
        if(SysTick_Config(SystemCoreClock / 1000U)) {
            /* capture error */
            while(1) {
            }
        }
        /* configure the systick handler priority */
        NVIC_SetPriority(SysTick_IRQn, 0x00U);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在gd32f4xx_it.c中定义了中断服务函数,和本系列(一)中中断向量表对应

    void SysTick_Handler(void)
    {
        led_spark();
        delay_decrement();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在main.c中 引用了5个头文件。

    #include "gd32f4xx.h"
    #include "systick.h"
    #include 
    #include "main.h"
    #include "gd32f450i_eval.h"
    
    • 1
    • 2
    • 3
    • 4
    • 5

    gd32f4xx.h
    在这里插入图片描述
    定义MCU使用的型号,配置时钟所用参数的设定。
    全局外设的基础地址。对于CPU来说一切都是地址。

    #if !defined  USE_STDPERIPH_DRIVER
    #define USE_STDPERIPH_DRIVER
    #endif 
    #ifdef USE_STDPERIPH_DRIVER
    #include "gd32f4xx_libopt.h"
    #endif /* USE_STDPERIPH_DRIVER */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    最后通过gd32f4xx_libopt.h
    加入各个外设的头文件
    在这里插入图片描述
    所以gd32f4xx.h 即可包含所有外设的头文件引用。
    USE_STDPERIPH_DRIVER 定不定义都无所谓。

    二 建立工程

    1.建立一个新的工程,器件选择自己对应的MCU型号
    2.建立文件目录,按照自己喜好
    在这里插入图片描述

    3.拷贝文件
    在这里插入图片描述
    拷贝标准库到项目文件夹
    在这里插入图片描述
    添加启动文件startup_gd32f450_470.s 选择MCU对应的型号
    在这里插入图片描述
    加入 system_gd32f4xx.c 因为这文件是systemInit函数所在的C文件
    在这里插入图片描述
    然后添加标准库GD32F4xx_standard_peripheral\Source,都加进去
    在这里插入图片描述
    加入对应的C文件路径
    在这里插入图片描述
    在这里插入图片描述

    创建一个空的main.c
    写入一下内容
    加入到工程目录中

    #include "gd32f4xx.h"
    int main(void)
    {
    
    }
    
    启动文件,和systemInit,加上空的main函数,就是标准库最小代码系统。
    
    
    
    编译报错
    F:\Program Files\keil\Packs\GigaDevice\GD32F4xx_DFP\3.0.3\Device\F4XX\Include\gd32f4xx_libopt.h(11): error:  #5: cannot open source input file "RTE_Components.h": No such file or directory
    
    缺少 RTE_Components.h
    
    什么情况怎么冒出这个玩意,把标准库中的gd32f4xx_libopt.h拷贝到当前工程目录下。
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/e458a4c6f54749beb3e300973c91fc97.png)
    编译成功
    创建工程 关键的地方在意gd32f4xx_libopt.h 这个幺蛾子,适当参考官方例程。
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/4c05d7e909af41d597f32df5cd2bcebd.png)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
  • 相关阅读:
    Nginx 配置错误导致漏洞
    随着云计算和容器技术的广泛应用,如何在这些环境中有效地运用 Shell 进行自动化部署和管理?
    Cy5.5-PEG-DSPE,Cy5.5-聚乙二醇-二硬脂酰基磷脂酰乙醇胺,DSPE/MAL/NHS-PEG-Cy5.5
    基于FPGA的图像二值化处理,包括tb测试文件和MATLAB辅助验证
    RegNet架构复现--CVPR2020
    jenkins+allure+邮件发送配置
    按钮倒计时提醒
    OpenHarmony 4.1 Release版本正式发布,邀您体验
    linux安装jdk以及单独安装jre
    ps 让图片附着在文字上
  • 原文地址:https://blog.csdn.net/denghuajing/article/details/128046178