百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

1. GD32F103单片机学习笔记之GD32103E-EVAL开发板入门

ztj100 2024-10-27 18:32 13 浏览 0 评论

之前做学习或者做项目一直用的STM32系列的单片机,最近看着STM32单片的价格暴涨,对于我这个“穷苦”老百姓来说,买不起啊、买不起啊、买不起啊。既然给自己“定性”了,那就要“另辟蹊径”啊,总不能老是在同一棵树上挂着啊。另外,看到各种芯片被“漂亮国”制裁,我一腔爱国之心立马熊熊燃烧了起来,当即决定,老外的芯片不用了,找找咱“自己家”的芯片。又考虑到尽量降低学习开发成本,找来找去找到了兆易创新这家。据说,STM32的代码简单改一下就能在对应的芯片上运行起来。这么好的事,不得玩玩啊。

说干就干,学习单片机第一步,那必须得买块开发板啊。又一通找,找到了兆易创新自家的GD32103E-EVAL全功能开发板(还发现了一款GD32VF103的开发板,使用的是RISC-V内核,对这个也很感兴趣,也一块买了,后面再研究),上面的单片机型号是GD32F103ZET6,考虑到这款单片机的外设资源相对来说比较丰富,所以最终选择了它。这家伙是这样的:

有了开发板,那就要进行相应的学习了,后续相关的文章将记录我的学习过程。那么第一步先来验证一下开发板吧,这时候才发现这货除了在官网上有个对应的官方固件库和例程,没有其他资料(也可能是我没发现,也懒得找了,就从这下手吧)。无妨,那就先下载这个官方例程来整整。从这里下载:

http://gd32mcu.com/download/down/document_id/182/path_type/1

下载后解压,里面是这个样子的:

简单来说说里面的每个目录都是用来干啥的:



目录

功能

GD32F10x_AddOn

GD32F10x系列单片机相关的插件,包括IAR和Keil的芯片支持包

GD32F10x_Firmware_Library

GD32F10x系列单片机固件库,类似STM32固件库V3.5.0

GD32103C_EVAL_Demo_Suites

GD32103C-EVAL开发板对应的开发文档、例程等

GD32103E_EVAL_Demo_Suites

GD32103E-EVAL开发板对应的开发文档、例程等

GD32107C_EVAL_Demo_Suites

GD32107C-EVAL开发板对应的开发文档、例程等

搞明白了固件库的目录结构,那就找个例程测试一下板子吧。由于用的是GD32103E-EVAL开发板,因此打开GD32103E_EVAL_Demo_Suites目录,是这么个样式的:

Docs目录中包含开发板的原理图和用户指南;Projects目录中包含各种外设例程,有小灯闪烁啊、按键啊、串口输出啊等等,我将会在这个里面拿出一个最简单的小灯闪烁的例程来对开发板做一个简单的验证;Utilities目录中包含开发板自带的LCD的驱动程序及第三方的文件系统相关的代码,如果后续做这方面的开也可以将这部分进行移植。

这样固件库的大体目录结构就知道得差不多了,下一步找到对应开发板例程中的小灯闪烁的例程对开发板进行个简单的验证。

当然要先安装相应的IDE,我这里安装的是Keil v5,具体的安装及“你懂的”特殊处理步骤这里就不多说了,网络上资源很多。装好Keil之后,为了让Keil可以支持GD32F103系列的单片机,首先要先安装对应的芯片支持包。

打开Keil后如下图所示:

点击红框中的Pack Installer后弹出相应的窗口:

因为Keil的芯片支持包下载的服务器在国外,所以打开后网络更新速度很慢,这样一直在更新的话,无法显示手动安装芯片支持包的进度,因此首先把左上角菜单栏Packs中的启动更新的选项去掉:

然后关闭将Pack Installer关闭后重新打开,这个时候会发现下面的更新提示不再提示更新了:

如果安装其他芯片的支持包,推荐去Keil的网站先下载下来后再手动安装,下载地址为:

https://www.keil.com/dd2/pack/

继续,点击左上角菜单栏File中的导入,在打开的对话框中找到Keil v5对应的芯片支持包打开即可:

等待安装完成后将Pack Installer窗口关闭:

此时提示软件包有改动,点击是即可:

随后点击Keil菜单Project→Open Project...,在打开的对话框中找到要用的小灯闪烁的例程工程文件,点击打开:

打开工程后有如下提示,是因为固件库中的工程是Keil v4版本的,用Keil v5软件打开会有这样的提示:

因此需要先将该工程转换为Keil v5工程,Project→Manage→Migrate to Version 5 Format...:

转换完成后有如下提示,点击确定即可:

这时会发现左边的工程显示框中多出了一个CMSIS,这是Cortex-M内核软件接口标准,是Keil v5软件提供给工程使用的,也可以自行添加,要想让工程使用Keil提供的CMSIS库,还需对工程进行设置:

按照下图所示进行操作,将..\..\..\..\GD32F10x_Firmware_Library\CMSIS这一行删掉,如果不删掉这行,工程会默认使用固件库中的core_cm3.h,编译时会出现很多错误,导致编译无法通过:

设置完成后即可点击重新编译对工程进行编译了:

下面的编译输出中有相应信息输出,如果编译完成显示错误0警告0,则代表编译没有错误:

编译完成后就要烧录到开发板中查看现象了,首先将开发板自带的USB线的Micro口插在开发板的GD-Link USB口上,另一端插在电脑USB口上,开发板自带的GD-Link使用的是CMSIS-DAP调试器,在电脑端不需要安装驱动,但需要在烧录之前对工程进行相应设置:

最后点击左上角的烧录按钮即可进行程序的烧录,同时下面的提示框中输出提示信息:

烧录完成后开发板上的四个小灯会出现流水灯的效果,说明程序烧录成功:

最后,贴上小灯闪烁的核心代码,首先对四个小灯进行初始化,然后配置系统滴答,实现ms级别的延时,随后while循环中依次打开每个小灯并延时,实现最终的流水灯效果:

到此为止,算是对开发板做了个小小的入门了,那这次的学习就到这里吧。

相关推荐

如何将数据仓库迁移到阿里云 AnalyticDB for PostgreSQL

阿里云AnalyticDBforPostgreSQL(以下简称ADBPG,即原HybridDBforPostgreSQL)为基于PostgreSQL内核的MPP架构的实时数据仓库服务,可以...

Python数据分析:探索性分析

写在前面如果你忘记了前面的文章,可以看看加深印象:Python数据处理...

CSP-J/S冲奖第21天:插入排序

...

C++基础语法梳理:算法丨十大排序算法(二)

本期是C++基础语法分享的第十六节,今天给大家来梳理一下十大排序算法后五个!归并排序...

C 语言的标准库有哪些

C语言的标准库并不是一个单一的实体,而是由一系列头文件(headerfiles)组成的集合。每个头文件声明了一组相关的函数、宏、类型和常量。程序员通过在代码中使用#include<...

[深度学习] ncnn安装和调用基础教程

1介绍ncnn是腾讯开发的一个为手机端极致优化的高性能神经网络前向计算框架,无第三方依赖,跨平台,但是通常都需要protobuf和opencv。ncnn目前已在腾讯多款应用中使用,如QQ,Qzon...

用rust实现经典的冒泡排序和快速排序

1.假设待排序数组如下letmutarr=[5,3,8,4,2,7,1];...

ncnn+PPYOLOv2首次结合!全网最详细代码解读来了

编辑:好困LRS【新智元导读】今天给大家安利一个宝藏仓库miemiedetection,该仓库集合了PPYOLO、PPYOLOv2、PPYOLOE三个算法pytorch实现三合一,其中的PPYOL...

C++特性使用建议

1.引用参数使用引用替代指针且所有不变的引用参数必须加上const。在C语言中,如果函数需要修改变量的值,参数必须为指针,如...

Qt4/5升级到Qt6吐血经验总结V202308

00:直观总结增加了很多轮子,同时原有模块拆分的也更细致,估计为了方便拓展个管理。把一些过度封装的东西移除了(比如同样的功能有多个函数),保证了只有一个函数执行该功能。把一些Qt5中兼容Qt4的方法废...

到底什么是C++11新特性,请看下文

C++11是一个比较大的更新,引入了很多新特性,以下是对这些特性的详细解释,帮助您快速理解C++11的内容1.自动类型推导(auto和decltype)...

掌握C++11这些特性,代码简洁性、安全性和性能轻松跃升!

C++11(又称C++0x)是C++编程语言的一次重大更新,引入了许多新特性,显著提升了代码简洁性、安全性和性能。以下是主要特性的分类介绍及示例:一、核心语言特性1.自动类型推导(auto)编译器自...

经典算法——凸包算法

凸包算法(ConvexHull)一、概念与问题描述凸包是指在平面上给定一组点,找到包含这些点的最小面积或最小周长的凸多边形。这个多边形没有任何内凹部分,即从一个多边形内的任意一点画一条线到多边形边界...

一起学习c++11——c++11中的新增的容器

c++11新增的容器1:array当时的初衷是希望提供一个在栈上分配的,定长数组,而且可以使用stl中的模板算法。array的用法如下:#include<string>#includ...

C++ 编程中的一些最佳实践

1.遵循代码简洁原则尽量避免冗余代码,通过模块化设计、清晰的命名和良好的结构,让代码更易于阅读和维护...

取消回复欢迎 发表评论: