一、开启 GD32 单片机的学习之门
文章目录
- 一、开启GD32单片机的学习之门
- 二、筑牢根基:GD32单片机基础知识全解析
- (一)单片机概述
- 三、开发环境搭建
- (一)软件下载与安装
- (二)安装GD32F450设备支持包
- (三)编译器配置
- 1、新建工程目录
- 2、拷贝工程文件
- 3、新建Keil工程
一、开启GD32单片机的学习之门
在当今科技飞速发展的时代,嵌入式系统在各个领域都发挥着极为重要的作用。我最初接触GD32单片机,是源于对物联网项目开发的浓厚兴趣。在探索如何构建高效、智能的物联网设备时,发现GD32单片机以其出色的性能、丰富的外设资源以及良好的性价比脱颖而出。它能够满足从简单的传感器数据采集到复杂的无线通信控制等多种任务需求,为实现创新的物联网应用提供了坚实的硬件基础。
我的学习历程犹如一场充满挑战与惊喜的冒险。起初,面对全新的单片机体系,我感到既兴奋又有些迷茫。从最基础的概念学习开始,一点点摸索它的工作原理和编程方式。在学习过程中,遇到了各种各样的问题,比如硬件连接的错误导致电路无法正常工作,代码中的逻辑漏洞使得程序运行异常等。但正是这些问题促使我不断深入研究,查阅大量的资料,参考官方文档和技术论坛上的经验分享,逐步积累知识和技能。通过不断地实践项目,从简单的LED灯控制到复杂的多模块协同工作,我逐渐掌握了GD32单片机的开发技巧,也深刻体会到了嵌入式开发的魅力与乐趣。
本次将以嘉立创的梁山派学习板作为学习工具进行学习,从学习到总结、从总结到应用,一步一步将学到的知识应用起来。
二、筑牢根基:GD32单片机基础知识全解析
(一)单片机概述
GD32单片机基于先进的ARM Cortex-M内核架构构建,这一架构赋予了它强大的运算能力和高效的指令执行效率。其内核采用哈佛结构,数据总线和指令总线相互独立,使得数据读取和指令执行能够同时进行,大大提高了运行速度。
在特点方面,GD32具有丰富的外设资源。例如,它配备了多个通用定时器,可用于精确的定时任务、PWM信号生成等;拥有多种通信接口,如USART、SPI、I2C等,方便与各类传感器、通信模块进行连接。同时,它还具备较高的工作频率,能够快速响应各种任务需求,并且在低功耗模式下也有出色的表现,适用于电池供电的便携式设备。
在应用领域,GD32单片机广泛应用于智能家居、工业自动化、智能穿戴设备、医疗设备等众多领域。在智能家居中,它可以作为智能家电的控制核心,实现远程控制、智能监测等功能;在工业自动化领域,用于数据采集、电机控制等任务;在智能穿戴设备里,负责处理传感器数据、驱动显示屏等工作;在医疗设备方面,能够对生理信号进行采集和处理,保障医疗设备的精准运行。
三、开发环境搭建
(一)软件下载与安装
- 下载Keil MDK
- 访问Keil官方网站(https://www.keil.com/)。
- 在官网找到“Products”菜单,选择“MDK - Arm”产品页面。
- 根据自己的操作系统(如Windows、Linux等)下载相应的安装包。例如,对于Windows系统,下载.exe安装文件。
- 安装Keil MDK
- 双击下载的安装包,启动安装程序。
- 在安装向导中,按照提示逐步进行操作。首先选择安装路径,建议选择一个空间充足且易于记忆的文件夹,如“C:\Keil”。
- 在安装组件选择步骤中,确保勾选“MDK - Arm”核心组件,这是开发ARM架构单片机(包括GD32F450)所必需的。同时,可以根据需要选择是否安装其他组件,如示例代码、设备支持包等。
- 完成安装后,可能需要注册软件。可以通过购买正版许可证或使用评估版(有一定的时间限制)来激活Keil MDK。
(二)安装GD32F450设备支持包
- 获取设备支持包
- 器件包
- 能够使keil在运行过程中,识别芯片的文件;
- 官方网站:https://www.gd32mcu.com/cn/download/7?kw=GD32F4
- 固件库
- 芯片厂家提供的各种历程、标准外设库、驱动文件、开发板板载文件等等(学习中多学习该内容);
- 安装设备支持包
- 在Keil MDK中,打开“Pack Installer”工具。可以通过在Keil主菜单中选择“Pack Installer”选项来打开。
- 在“Pack Installer”界面中,点击“File” - “Import”,然后选择下载好的GD32F450设备支持包文件。
- 安装完成后,在“Pack Installer”的设备列表中应该能够看到GD32F450系列芯片被正确添加,这表示设备支持包安装成功,现在Keil MDK已经能够识别和支持GD32F450单片机的开发。
(三)编译器配置
- 工程模板创建
- 总体分为三个大部分
1、新建工程目录
Project(项目):存放工程文件,编译文件等。
Firmware(固件):存放ARM内核文件,标准外设库文件等。
Hardware(硬件):存放开发板的硬件驱动文件。
App(应用程序): 存放应用层文件。
User(用户):存放main函数,gd32f4xx_it文件,systick文件。
Doc:对工程进行说明, 存放readme.txt文件,工程说明文件。
2、拷贝工程文件
从标准固件库中拷贝需要的文件到新建的工程模板目录下
创建工程文件夹,起个工程名;
在文件夹内创建六个文件夹,分别存放六类文件;
打开GD32F4的标准固件库,将其中“Firmware"文件夹中的内容复制到工程文件夹中的”Firmware“中;
“Project”文件夹,在使用Keil创建工程的时候将工程创建至此文件夹;
复制标准固件库文件夹中“Template”除了工程外的文件,将其粘贴到“User”文件夹中;
将复制好的文件中的readme文件,移动至“Doc”文件夹中;
3、新建Keil工程
- 新建工程
- 打开Keil,创建工程“Project”,找到刚才创建的文件夹中的“Project”文件夹,并创建工程名;
- 器件选择
- 选择器件,选择“GD32F450ZG”型号,点击“OK”;
- 组件选择
-
目前不需要安装组件,故直接将组件选择界面关闭即可;
-
创建分组并添加源文件
-
点击此处可以添加分组
-
在“User”文件夹中,添加“gd32f4xx_it.c”、“main.c”、“systick.c”文件;
-
在“CMSIS”中,添加系统文件和启动文件,将两个启动文件放到该文件夹内
-
“Firmware”文件夹中可暂时先不添加文件,根据具体使用再行添加;
修改工程代码
删除一些main函数中自带的一些不需要的代码;
添加宏和头文件路径
-
- 配置工程
- 勾选Use MicroLIB
- 勾选生成HEX文件
- 修改ARM Compiler
- 编译
- 一切配置好之后,就可以进行编译了。
- 点击编译按钮进行编译。
- 可以看到 0 个错误,0 个警告,至此,工程模板创建完成。
相关文章:
一、开启 GD32 单片机的学习之门
文章目录 一、开启GD32单片机的学习之门二、筑牢根基:GD32单片机基础知识全解析(一)单片机概述 三、开发环境搭建(一)软件下载与安装(二)安装GD32F450设备支持包(三)编译…...
计算生成报价单小程序系统开发方案
计算生成报价单小程序报价系统,是根据商品品牌、类型、型号、规格、芯数、特性、颜色、分类进行选择不同的参数进行生成报价单,要求报价单支持生成图片、pdf、excel表格。 计算生成报价单小程序系统的主要功能模块有: 1、在线生成报价单&…...
高效整合聚水潭库存数据至MySQL的实现
聚水潭数据集成到MySQL:商品库存查询案例分享 在本次技术案例中,我们将详细探讨如何通过轻易云数据集成平台,将聚水潭的商品库存数据高效、可靠地集成到MySQL数据库中。具体方案为“聚水潭-商品库存查询-->BI彩度-商品库存表”࿰…...
深入理解 JVM 的栈帧结构
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…...
爬虫基础之HTTP基本原理
URL和URI 我们先了解一下 URI和 URL。URI的全称为 Uniform Resource ldentifer,即统一资源标志符;URL的全称为 Universal Resource Locator,即统一资源定位符。它们是什么意思呢?举例来说,https:/github.com/favicon.ico 既是一个 URI,也是…...
PyQt5:一个逗号引发的闪退血案
【日常小计】 在开发PyQt5程序时,调用了一个写入excel表格的后端方法,但是每次打开页面点击对应的动作,窗口就会闪退,而且Python后台也没有提示出任何的异常堆栈,后来经过在后端一点一点的单点测试,终于发…...
python学opencv|读取图像(五)读取灰度图像像素
【1】引言 前序学习了图像的基本读取,掌握了imread()、imshow()和imwrite()函数的基本功能和使用技巧,参考文章链接为: python学opencv|读取图像-CSDN博客 然后陆续掌握了彩色图像保存、图像放大和缩小以及对imshow()函数的大胆尝试技巧&a…...
LiDAR点云 反射强度 常见物体反射强度
1.激光点云发射的点无法全部被反射回来的原因 激光点云发射的点无法全部被反射回来的原因主要包括以下几点: 目标物表面特性:某些物体表面具有高反射率,导致激光雷达接收到的反射能量过强,从而产生噪点,影响点云数据的…...
零基础微信小程序开发——WXML 模板语法之事件绑定(保姆级教程+超详细)
🎥 作者简介: CSDN\阿里云\腾讯云\华为云开发社区优质创作者,专注分享大数据、Python、数据库、人工智能等领域的优质内容 🌸个人主页: 长风清留杨的博客 🍃形式准则: 无论成就大小,…...
qt QNetworkAccessManager详解
1、概述 QNetworkAccessManager是QtNetwork模块中的一个核心类,它允许应用程序发送网络请求并接收响应。该类是网络通信的基石,提供了一种方便的方式来处理常见的网络协议,如HTTP、HTTPS等。QNetworkAccessManager对象持有其发送的请求的通用…...
在2023idea中如何创建SpringBoot
目录 一.下载和安装 Maven 1.前往 https://maven.apache.org/download.cgi 下载最新版的 Maven 程序 2.将文件解压到D:Program FilesApachemaven目录 3.新建环境变量MAVEN_HOME,赋值D:Program FilesApachemaven 4.编辑环境变量Path,追加%MAVEN_HOME…...
R语言医学数据分析实践-R语言的数据结构
【图书推荐】《R语言医学数据分析实践》-CSDN博客 《R语言医学数据分析实践 李丹 宋立桓 蔡伟祺 清华大学出版社9787302673484》【摘要 书评 试读】- 京东图书 (jd.com) R语言编程_夏天又到了的博客-CSDN博客 在R语言中,数据结构是非常关键的部分,它提…...
PID算法
PID算法是闭环控制中的核心算法之一,它结合了比例(P)、积分(I)和微分(D)三种控制策略,能够实现对被控对象的精确控制。以下将详细介绍PID算法,并针对P、I、D分别举出三个…...
C++day2
1.利用函数重载,实现对整形数组的冒泡排序,对浮点型数组的冒泡排序 #include <iostream>using namespace std;int bubblesort(int a[]) {int i,j,temp;for(i1;i<5;i){for(j0;j<5-i;j){if(a[j]>a[j1]){temp a[j];a[j] a[j1];a[j1] tem…...
RFdiffusion ContigMap类初始化方法解读
功能概述 __init__ 方法是 ContigMap 类的初始化函数,其核心任务是构建和管理一个蛋白质序列和结构的映射系统,处理用户提供的输入数据(如片段信息、参考序列、掩码等),并生成内部所需的各种索引和映射,以便在蛋白质设计中有效地定义、解析和操作不同区域的结构和序列。…...
LeetCode 每日一题 2024/12/2-2024/12/8
记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步 目录 12/2 52. N 皇后 II12/3 3274. 检查棋盘方格颜色是否相同12/4 2056. 棋盘上有效移动组合的数目12/5 3001. 捕获黑皇后需要的最少移动次数12/6 999. 可以被一步捕获的棋子数…...
5G模组AT命令脚本-关闭模组的IP过滤功能
关闭模组的IP过滤功能 关闭模组的IP过滤功能 5G 模组通常使用nat方式为 下挂设备或上位机提供上网服务,默认情况,不做NAt的包无法经由 模组转发,如果禁掉这个限制 ,可使用本文中的配置命令本脚本用于关闭模组的IP过滤功能…...
得力DL-720C(new)标签热敏打印机
特点 适配标签宽度20-90mm的热敏标签纸,无需碳带。不适用于使用碳带上色的热转印纸(如铜版纸)。标签纸类型支持: 间隙纸(靠间隙定位)。得力自配的纸就是间隙纸,不透明。黑标纸(靠背…...
openjdk17 jvm加载class文件,解析字段和方法,C++源码展示
##构造方法ClassFileParser,parse_stream解析文件流 ClassFileParser::ClassFileParser(ClassFileStream* stream,Symbol* name,ClassLoaderData* loader_data,const ClassLoadInfo* cl_info,Publicity pub_level,TRAPS) :_stream(stream),_class_name(NULL),_load…...
基于 AutoFlow 快速搭建基于 TiDB 向量搜索的本地知识库问答机器人
导读 本文将详细介绍如何通过 PingCAP 开源项目 AutoFlow 实现快速搭建基于 TiDB 的本地知识库问答机器人。如果提前准备好 Docker、TiDB 环境,整个搭建过程估计在 10 分钟左右即可完成,无须开发任何代码。 文中使用一篇 TiDB 文档作为本地数据源作为示…...
Vue项目实战-新能源汽车可视化(二)(持续更新中)
一.项目代码 1.DataSceen <template><div id"app-content"><div class"containerBox"><!-- 左边区域 --><div classleft><!-- 车辆情况 --><div class"item"></div><!-- 历史数据 -->&…...
CSS border 0.5px 虚线
border 0.5px 存在很多兼容问题,很多设备都会默认展示 1px 如果是实线可以用 background 和 height 1px 然后transform scaleY(0.5) 去实现。 但是虚线怎么办呢。 .ticket-line::before {content: ;position: absolute;top: 0;left: 0;right: 0;bottom: 0;width: …...
利用最大流算法解决Adam教授的双路径问题
利用最大流算法解决Adam教授的双路径问题 Adam教授的烦恼问题描述与转换转换步骤伪代码C代码示例解释Adam教授的烦恼 Adam教授有两个儿子,可不幸的是,他们互相讨厌对方。随着时间的推移,问题变得如此严重,他们之间不仅不愿意一起走到学校,而且每个人都拒绝走另一个人当天…...
c#如何开发后端
1选择开发框架 在 C# 中,用于后端开发最常用的框架是ASP.NET。它提供了构建 Web 应用程序、Web API 和微服务等多种后端服务所需的功能。ASP.NET有不同的模式,如ASP.NET MVC(Model - View - Controller)和ASP.NET Web API。ASP.NE…...
05_掌握Python3.11新特性-模式匹配
学习完本篇内容,你将掌握以下技能: 了解 Python 3.11 中的模式匹配新特性掌握如何使用模式匹配来简化代码和提高代码的可读性熟练掌握并应用到实际编程中python3.11新特性-模式匹配 在 Python 3.11 中,引入了模式匹配(pattern match...
【AI日记】24.12.09 kaggle 比赛 Titanic-12
【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】 工作 内容: 学习 kaggle 入门比赛 Titanic - Machine Learning from Disaster学习机器学习(pandas,numpy,sklearn),数据可视化ÿ…...
Linux,如何要定位并删除占用磁盘空间的大文件?
Linux,如何要定位并删除占用磁盘空间的大文件? 要定位并删除占用磁盘空间的大文件主要有以下这些步骤: 1. 使用 du 命令查找大文件或目录 du(Disk Usage)命令可以帮助你查找占用空间较大的文件或目录。 du -ah --…...
【Java】—— 图书管理系统
基于往期学习的类和对象、继承、多态、抽象类和接口来完成一个控制台版本的 “图书管理系统” 在控制台界面中实现用户与程序交互 任务目标: 1、系统中能够表示多本图书的信息 2、提供两种用户(普通用户,管理员) 3、普通用户…...
初识Linux · 线程同步
目录 前言: 认识条件变量 认识接口 快速使用接口 生产消费模型 前言: 前文我们介绍了线程互斥,线程互斥是为了防止多个线程对临界资源访问的时候出现了对一个变量同时操作的情况,对于线程互斥来说,我们使用到了锁…...
游戏引擎学习第40天
仓库 : https://gitee.com/mrxiao_com/2d_game 整理了一些需要完成的任务,确保所有内容都已清理完成,因为需要为后续的数学部分打好基础。下一步将认真开始处理数学相关内容,因此在此之前,需要彻底梳理未完成的事项,清…...
概率论——假设检验
解题步骤: 1、提出假设H0和H1 2、定类型,摆公式 3、计算统计量和拒绝域 4、定论、总结 Z检验 条件: 对μ进行检验,并且总体方差已知道 例题: 1、假设H0为可以认为是570N,H1为不可以认为是570N 2、Z…...
【Pandas】pandas isnull
Pandas2.2 General Top-level missing data 方法描述isna(obj)用于检测数据中的缺失值isnull(obj)用于检测数据中的缺失值notna(obj)用于检测数据中的非缺失值notnull(obj)用于检测数据中的非缺失值 pandas.isnull() pandas.isnull() 是 Pandas 库中的一个函数,…...
Rust HashMap使用
Rust 的 HashMap 是一个功能强大的数据结构,它结合了哈希表的高效性和 Rust 编程语言的内存安全特性。通过提供常数时间复杂度的查找、插入和删除操作,以及丰富的 API,它在许多实际应用中都非常有用。 示例代码: use std::colle…...
Spring Boot如何实现防盗链
一、什么是盗链 盗链是个什么操作,看一下百度给出的解释:盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其它服务提供商的…...
TIM输入捕获---STM
一、简介 IC输入捕获 输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存在CCR中,可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数 每个高级定时器和通用定时器都拥有4个输入捕获通道 可配置为PWMI模…...
核密度估计——从直方图到核密度(核函数)估计_带宽选择
参考 核密度估计(KDE)原理及实现-CSDN博客 机器学习算法(二十一):核密度估计 Kernel Density Estimation(KDE)_算法_意念回复-GitCode 开源社区 引言 在统计学中,概率密度估计是一种重要的方法࿰…...
javaScript Tips
一键去掉鼠标的图标 document.body.style.cursor none; 获取一个随机颜色 const randomHex () >#${Math.floor(Math.random() * 0xffffff).toString(16).padEnd(6, 0)}; 生成随机字符串,各种随机基本都是这个原理 const randomString () > Math.rand…...
【Ubuntu】清理、压缩VirtualBox磁盘空间大小
1、说明 本人为虚拟机创建了两个硬盘:root.vdi 和 hoom.vdi,在创建虚拟机时,分别挂载在/root目录和/home目录下。 下面演示分别清理、压缩两个磁盘的空间。 2、清理空间 1)清理 root.vid sudo dd if=/dev/zero of=/EMPTY bs=1M;sudo rm -f /EMPTY输出信息中会提示,如…...
若依 ruoyi VUE el-select 直接获取 选择option 的 label和value
1、最新在研究若依这个项目,我使用的是前后端分离的方案,RuoYi-Vue-fast(后端) RuoYi-Vue-->ruoyi-ui(前端)。RuoYi-Vue-fast是单应用版本没有区分那么多的modules 自己开发起来很方便,这个项目运行起来很方便,但是需要自定义的…...
C++小小复习一下
类,对象,成员变量,成员函数 特点:面向对象程序设计---因为要创建对象来调用类里面的函数或者成员变量 比如你的对象是一个生物-人:他会有自己的一些属性:身高,体重,性别等…...
JavaWeb学习(4)(四大域、HttpSession原理(面试)、SessionAPI、Session实现验证码功能)
目录 一、web四大域。 (1)基本介绍。 (2)RequestScope。(请求域) (3)SessionScope。(会话域) (4)ApplicationScope。(应用域) (5)PageScope。(页面域) 二、Ht…...
quartz 架构详解
Quartz是一个开源的作业调度框架,完全由Java编写,主要用于定时任务的调度和管理。Quartz的架构主要包括以下几个核心组件: 1.调度器(Scheduler):调度器是Quartz的核心组件,负责管理Qua…...
Redis安装和Python练习(Windows11 + Python3.X + Pycharm社区版)
环境 Windows11 Python3.X Pycharm社区版 思路 1 github下载redis压缩包 ,安装并启动redis服务,在Pycharm中运行python程序,连接redis服务,熟悉redis的使用和巩固python语言。 2 python开发环境的搭建参考 https://mp.csdn.…...
明年 iPhone 将搭载苹果自研 5G 基带芯片
明年 iPhone 将搭载苹果自研 5G 基带芯片 据彭博社记者 Mark Gurman 透露,苹果首款自主研发 5G 基带芯片即将面世。 苹果首款自研 5G 基带芯片将命名为「Sinope」,将应用在 2025 年发布的 iPhone SE、iPhone 17 Slim 版以及低端系列的 iPad 系列。「Si…...
1.1 Beginner Level学习之“编写简单的发布服务器和订阅服务器”(第十二节)
学习大纲: 1. 编写发布服务器节点 在ROS中,**节点(Node)**是与ROS网络通信的基本单位。在这个部分,我们将创建一个简单的发布节点(talker),它会不断向话题(topic&#x…...
C语言 字符串操作函数
strncpy() 用于将一个字符串的一部分拷贝到另一个字符串中。 char* strncpy(char* destination, const char* source, size_t num);参数:destination 是目标字符串的指针,表示将要拷贝到的位置source 是源字符串的指针,表示要拷贝的字符串num…...
论文概览 |《Cities》2024.07 Vol.150(上)
本次给大家整理的是《Cities》杂志2024年07月第150期的论文的题目和摘要,一共包括90篇SCI论文!由于论文过多,我们将通过两篇文章进行介绍,本篇文章介绍第1--第45篇论文! 论文1 Spatiotemporal infection dynamics: Linking indiv…...
查看Windows系统上的Redis服务器是否设置了密码
查看 Redis 配置文件 1.找到 Redis 配置文件: 通常Redis配置文件名为 redis.windows.conf 或 redis.conf,它位于Redis安装目录中。 2.打开配置文件: 使用文本编辑器(如Notepad、VS Code等)打开该文件。 3.查找 re…...
30天学会Go--第6天 GO语言 RESTful API 学习与实践
30天学会Go–第6天 GO语言 RESTful API 学习与实践 文章目录 30天学会Go--第6天 GO语言 RESTful API 学习与实践一、 RESTful API 的设计原则1.1 RESTful API 的核心概念1.2 RESTful API 的 URL 设计1.3 RESTful API 的数据格式 二、 实现 RESTful API2.1 定义数据模型2.2 实现…...
数据分析特征标准化方法及其Python实现
数据分析特征标准化方法及其Python实现 1、概述 在数据分析中,对特征进行标准化主要是: 1、消除量纲影响 不同特征可能具有不同的量纲和数量级。 例如,一个特征可能是以米为单位的长度,而另一个特征可能是以秒为单位的时间。直接使用这些具有不同量纲的原始数据进行分析…...