【零死角玩转GD32:国产单片机GD32系列开坑之旅 第二章】

【开坑国产单片机GD32系列,带你零死角玩转GD32】


第二章 GD32开发环境的搭建,常用资料的获取,以及点亮LED!

目录

  • 【开坑国产单片机GD32系列,带你零死角玩转GD32】
  • 第二章 GD32开发环境的搭建,常用资料的获取,以及点亮LED!
  • (一)前言
  • (二)GD32相关资料的获取
  • (三)GD32开发环境的搭建
  • 第一步 解压下载的芯片包
  • 第二步 安装解压的芯片包
  • 第三步 验证安装效果
  • (四)GD32的工程模板搭建
  • 第一步 解压下载的GD32F10x_Firmware_Library文件
  • 第二步 建立GD32F10xxxx工程模板
  • (五)编译
  • 结语
  • (一)前言

    世上最远的距离,不是天涯海角之间,而是知道和做到;

    第一章 GD32基本资料介绍初步地描述了兆易创新的GD32系列MCU的基本特征,但光是了解总是不够的,所以在这一章会讲解在Keil5平台上,如何进行GD32的开发环境的搭建,工程模板的创建,以及一些必要技术资料的获取方式(假期反向摸鱼了属于是)!(梦开始的地方!)


    (二)GD32相关资料的获取

    当我接触一款新的MCU时,第一反应,便是前往该MCU的官网,试图寻找到这款MCU的数据手册和用户手册,以及相应的固件库,好让我不用从零摸瞎开始敲代码。
    对于GD32也是如此,当我们把它捧在手心时,要想到的是:

  • GD32的引脚是怎样排列的?有可以参考的最小系统原理图么?
  • 如何能查阅到GD32各功能的具体资料和详细的使用说明?
  • 在Keil上,如何开发它?GD32有库么?怎么使用这个库?
  • 如何搭建一个GD32的工程模板?
  • ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • 诸如以上的种种问题,都考验着你对搜索引擎使用的熟悉程度,要知道,百度也是有技巧的,有人百度一小时,连资料的影子都没看到,有人百度5分钟,就能找到好康的学习资料,为了让大家能够方便地找到GD32相关的资料,我已经把GD32常用资料整理好的,放在下面的链接里分享给大家:

  • GD32系列数据手册,数据手册会对IC的基本情况,比如内存的容量,运行主频,携带的外设等参数,做一个简单介绍,但是不会详细去介绍,详细的介绍会包含在用户手册中,以下是数据手册的下载链接:
    (链接:https://pan.baidu.com/s/17XAI9GyP4c7yy7k44kRMbQ) 提取码:emm4

  • GD32系列芯片包,是GD32开发的重要工具,以Keil为例,简单来说,芯片包决定了你创建工程时,能不能找到对应的GD32型号,以下是GD32系列大部分型号的芯片包下载链接:
    (链接:https://pan.baidu.com/s/1l4qgmI7EkxE76lkThbgrQw) 提取码:9yqc

  • GD32系列官方例程,包含了GD32各个外设的示例代码,以及GD32的固件库,而固件库提供了一系列完整的API,用以减轻使用者的开发难度,避免使用者陷入到操作寄存器的悲惨境遇中:
    (链接:https://pan.baidu.com/s/1o19-i4OEL5BVHEjt-hjKnA) 提取码:0y4l

  • GD32系列用户手册,该手册详细地说明了GD32各个功能部件的信息以及使用方法,如果你想查询硬件SPI的配置寄存器,或者想要知道GD32时钟系统的构成,查用户手册就对了:
    (链接:https://pan.baidu.com/s/19svrZiPR-LAHxPcoeLnMgg) 提取码:1sld

  • GD32系列应用笔记,这里就是官方提供的一些在项目中可能会遇到的问题的解决方法,比如总线死锁之类的解决方法,或者像GD32进行数字滤波的方法等,有一定参考价值,可以瞅瞅:
    (链接:https://pan.baidu.com/s/1qMNwEbS1GbUmsvPvD6Bf2A) 提取码:wjyi

  • 另外,由于这里的资料并不是GD32官网的全部资料,如果没能在上述链接中找到所需资料的靓仔,可以进入以下官网,或者私信我,我会尽快给出答复的!
    GD32官网链接.

    (三)GD32开发环境的搭建

    搭建GD32开发环境,首先要具备以下两个工具:

  • Keil5,版本不重要,只要是Keil5就行。
  • 对应GD32型号的芯片包,相关链接已经在上面给出,用于安装GD32的芯片支持包。
  • 好的,我默认看到这里的靓仔已经下载好的上述工具,接下来,就开始进行环境的配置!

    第一步 解压下载的芯片包

    我这里下载的是GD32F4系列的芯片包,其他系列的操作同理,解压它,会得到以下文件:

    第一个文件,是GD32在Keil4下的环境补丁(支持 Keil v4.7x),也就是芯片包,但是有些时候下载下来是 .ex_ 后缀,这个时候把后缀改成 .exe 就可以了,而第二个文件,就是GD32在Keil5下的环境补丁(支持 Keil v5.27 及以上版本),第三个是IAR下的环境补丁,使用IAR的靓仔用的就是这个。

    第二步 安装解压的芯片包

    双击要安装的芯片包,接下来如果不出意外的话,就会弹出以下界面:

    因为我之前已经安装成功了,所以会出现已安装的提示,后续就是不断点next就阔以了。

    第三步 验证安装效果

    只要打开Keil4或Keil5,如果出现了以下界面,就代表芯片包安装成功了:

    如果没能安装成功,可以检查以下是不是Keil的版本号和环境补丁的版本号是否对应,如果还是无法解决,可以在评论区召唤我!

    (四)GD32的工程模板搭建

    在完成了芯片包的安装工作后,如果不建立一个靠谱的工程模板,岂能善罢甘休?所以接下来,就是建立工程模板的环节了,说实话,GD32的工程模板,我就是按照STM32的工程模板的样式建立的,无非就是包含以下几种文件:

  • 汇编启动文件;
  • 各个外设的 .c.h 驱动文件;
  • 相关内核的驱动文件,比如 xxcm4.c之类的文件;
  • 系统时钟配置文件;
  • 主函数以及用户驱动文件;
  • 如果只是想获得一个工程模板,暂时没有自己亲手建立工程模板的欲望的话,我也为你备好了下载链接,就是这么贴心!(不过只有GD32F10xx的呦!后续我还会把其他型号的工程模板上传,所以没事多进来看看。(暗示))
    (链接:https://pan.baidu.com/s/1KPGBCewAP-gml_BWQbZ7xQ 提取码:9xfy

    敲黑板!敲黑板!想要详细了解工程模板的搭建方法的靓仔们看过来,下面我们对GD32F10xxxx的工程模板进行解析,不过前提是你手头已经有GD32F10xxxx的官方例程,没有的去上面链接下载吧!

    第一步 解压下载的GD32F10x_Firmware_Library文件

    解压后,会获得以下文件:

    很明显,凭你们的直觉,肯定能猜到这里面有很多文件暂时是用不上的,事实也确实如此!

  • 第一个文件夹:examples
    该文件夹里所包含的,全部都是外设的示例驱动代码,注意,只是 .c.h文件,没有工程,就像下面这张图
  • 所以在我们搭建工程模板时,暂时用不上它,待后续开始讲解各个外设时,它和用户手册,就是我们最重要的参考资料了!

  • 第二个文件夹:Firmware
    该文件非常关键,它包含了以下内容

  • 分为以上4个文件夹(这个水印后面我会去掉,现在这个去不了了,因为已经放进来了),其中文件夹3和4都是USB开发时会用到,现在我们不管它,文件夹1和2才是我们目前要关注的重点。
    文件1,即CMSIS文件夹,主要包含以下几个文件


    文件2,3,4,即core_cm3.h,core_cmFunc.h及 core_cmInstr.h , core_cmFunc.h是不同编译器下的一些系统级的汇编函数,core_cmInstr.h是不同编译器下的指令,Keil公司这样做是为了兼容不同的编译器。
    这两个头文件在core_cm3.h头文件里是可以注释掉的,即这两个文件不是必须的,而文件夹1中包含的就是我们工程模板搭建的核心,包含了系统头文件,启动文件,以及会在主函数执行之前进行系统设置的系统初始化文件,主要包含以下几个文件夹


    文件夹1存储的是系统头文件gd32f10x.h ,和系统初始化文件system_gd32f10x.h


    文件夹2,即Include存储的是启动文件,以及系统初始化源文件 system_gd32f10x.c ,但是打开启动所在的文件夹时,有些彦祖就会有疑问,为什么启动文件有这么多?

    我们发现,每一个启动文件的文件名的最后几个字符,是有区别的,有cl的,有md的,为啥会有这么多呢?

    其实这些启动文件是和不同容量,不同型号的MCU相对应的,GD32F10x系列有MD(中容量) ,HD(大容量),XD(超大容量), CL(互联型) 等系列,不同的型号在外设资源和内部寄存器结构上有一定的差异,所以在使用官方的固件库(Firmware)时也要作相应的选择和定义:

  • 中密度产品:闪存存储器容量16K到128K字节之间的产品;
  • 高密度产品:闪存存储器容量256K到512K字节之间的产品;
  • 超高密度产品:闪存存储器容量大于512K字节的产品;
  • 彦祖们在使用不同型号的MCU时,对号入座就可以了,讲完了CMSIS文件夹下的内容,我们继续讲它边上的GD32F10x_standard_peripheral文件夹,这里面存放就是各个外设的官方驱动程序了,比如GPIO的设置和读写程序,DAC的初始化和传输设置程序,都搁里面了,待后续开始讲解各个外设时,同样是我们重要的参考资料!

  • 第三个文件夹:Template
    这里面就是一些官方提供的一些简单驱动,比如对LED的驱动,对按键的驱动等等,据说是要结合官方开发板使用的,我们这里暂时不用管他。
  • 第四个文件夹:Utilities
    这里面就是一些第三方组件,比如FAT_FS文件系统啥的,以及一些与开发板配套的源文件,我们暂时也不用管他。
  • 第二步 建立GD32F10xxxx工程模板

    在第一步里面,已经给彦祖们详细介绍了各个文件夹的组成及内容,接下来就是在Keil当中建立工程模板的时候了!

  • Step1:创建工程文件夹
    建立一个如下图所示的文件夹
  • Step2:往上述文件夹中填充文件
    第一个Docs文件夹,一般存放的是一个TXT文件,用于记录开发过程中的细节,思路和问题,不过我一般喜欢用Word文档来记录,花样还多!

    第二个是HardWare文件夹,里面存放的就是一些自定义的文件,比如驱动OLED的文件,驱动液晶屏幕的文件等等,视具体需求而定了。
    第三个是Libraries文件夹,里面存放的,是GD32自有库各个外设的驱动库函数,彦祖们可以下载我在上面提供的模板工程,对照着操作,也没必要一直自己蒙头造车轮嘛。
  • 第四,五个文件夹是程序编译时的链接和输出文件,后面会在Keil中设置。
    第六个文件夹就是存放我们在Keil中建立的工程文件了。
    第七个文件夹存放的是main.c文件,以及一些系统支持文件。

  • Step3:在Keil中建立工程文件
    在Keil中点击Project,新建一个工程,并且存放在Step1中建立的文件中的Project文件夹

  • 正确安装了芯片包的彦祖们就会看到这个界面,选好了MCU的型号后,点击OK,随后会弹出一个固件包下载界面,不用理会,直接关掉即可。

  • Step4:在Keil中建立文件模板
    工程创建好之后,紧接着就是创建Keil工程目录下的文件,如下图所示,文件名字彦祖们自己命名就可以了,只要知道里面该存放什么东西就行了。
  • Step5:往各文件内部加载源文件和头文件
  • 第一个就是STARTUP文件夹,它里面存放是启动文件(也就是我们之前说的那个有好几个可以选择的),根据所用MCU容量大小,我这里选择的是:GD32F10X_HD(记得加上USE_STDPERIPH_DRIVER,中间要有 , 隔开)。

    第二个是CMSIS文件夹,里面存放的是系统头文件,也就是system_gd32f10x.h文件,双击找到这个文件,加入即可。

    第三个是GD32F10x_Phriphel文件夹,里面存放的就是我们在第一步填充在Libraries中Src的内容,在设置好文件路径并成功编译后,与之相对应的Inc的内容也会被自动添加进来。

    第四个就是User文件夹,里面存放的就是main.c以及一些系统设置函数

    第五个是Docs文件夹,存放的是TXT记录文件,这个加不加就看彦祖们自己了。

  • Step6:文件路径设置
    点击Keil设置界面的魔术棒,选择 C/C++ 选项,在红圈内设置会用到的 .c.h 文件路径。
  • Step7:设置链接文件存放文件夹和Hex文件输出文件夹
    同样点击Keil设置界面的魔术棒,选择 ListingOutput 选项,在红圈内编译过程中生成的链接文件和Hex文件的存放地址。
  • (五)编译


    如果看到上图,就说明,这个模板,已经莫得问题了!

    结语

    下一章:(1)GD32的时钟系统设置以及代码解析 (2)在Hal库和标准库下对GD32进行编程

    2022年5月5日 于深圳

    物联沃分享整理
    物联沃-IOTWORD物联网 » 【零死角玩转GD32:国产单片机GD32系列开坑之旅 第二章】

    发表评论