【开坑国产单片机GD32系列,带你零死角玩转GD32】
第二章 GD32开发环境的搭建,常用资料的获取!
(一)前言
世上最远的距离,不是天涯海角之间,而是知道和做到;
==第一章 GD32基本资料介绍==初步地描述了兆易创新的GD32系列MCU的基本特征,但光是了解总是不够的,所以在这一章会讲解在Keil5平台上,如何进行GD32的开发环境的搭建,工程模板的创建,以及一些必要技术资料的获取方式(假期反向摸鱼了属于是)!(梦开始的地方!)
(二)GD32相关资料的获取
当我接触一款新的MCU时,第一反应,便是前往该MCU的官网,试图寻找到这款MCU的数据手册和用户手册,以及相应的固件库,好让我不用从零摸瞎开始敲代码。 对于GD32也是如此,当我们把它捧在手心时,要想到的是:
- GD32的引脚是怎样排列的?有可以参考的最小系统原理图么?
- 如何能查阅到GD32各功能的具体资料和详细的使用说明?
- 在Keil上,如何开发它?GD32有库么?怎么使用这个库?
- 如何搭建一个GD32的工程模板?
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
诸如以上的种种问题,都考验着你对搜索引擎使用的熟悉程度,要知道,百度也是有技巧的,有人百度一小时,连资料的影子都没看到,有人百度5分钟,就能找到好康的学习资料,为了让大家能够方便地找到GD32相关的资料,我已经把GD32常用资料整理好的,放在下面的链接里分享给大家:
-
GD32系列数据手册,数据手册会对IC的基本情况,比如内存的容量,运行主频,携带的外设等参数,做一个简单介绍,但是不会详细去介绍,详细的介绍会包含在用户手册中,以下是数据手册的下载链接: ==(链接:pan.baidu.com/s/17XAI9GyP…) 提取码:emm4==
-
GD32系列芯片包,是GD32开发的重要工具,以Keil为例,简单来说,芯片包决定了你创建工程时,能不能找到对应的GD32型号,以下是GD32系列大部分型号的芯片包下载链接: ==(链接:pan.baidu.com/s/1l4qgmI7E…) 提取码:9yqc==
-
GD32系列官方例程,包含了GD32各个外设的示例代码,以及GD32的固件库,而固件库提供了一系列完整的API,用以减轻使用者的开发难度,避免使用者陷入到操作寄存器的悲惨境遇中: ==(链接:pan.baidu.com/s/1o19-i4OE…) 提取码:0y4l==
-
GD32系列用户手册,该手册详细地说明了GD32各个功能部件的信息以及使用方法,如果你想查询硬件SPI的配置寄存器,或者想要知道GD32时钟系统的构成,查用户手册就对了: ==(链接:pan.baidu.com/s/19svrZiPR…) 提取码:1sld==
-
GD32系列应用笔记,这里就是官方提供的一些在项目中可能会遇到的问题的解决方法,比如总线死锁之类的解决方法,或者像GD32进行数字滤波的方法等,有一定参考价值,可以瞅瞅: ==(链接:pan.baidu.com/s/1qMNwEbS1…) 提取码: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的呦!后续我还会把其他型号的工程模板上传,所以没事多进来看看。(暗示)) ==(链接:pan.baidu.com/s/1KPGBCewA… 提取码: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设置界面的魔术棒,选择 ==Listing== ,==Output== 选项,在红圈内编译过程中生成的链接文件和Hex文件的存放地址。
(五)编译
如果看到上图,就说明,这个模板,已经莫得问题了!
结语
下一章:(1)GD32的时钟系统设置以及代码解析。 (2)在Hal库和标准库下对GD32进行编程。
2022年5月5日 于深圳