国产GD32单片机开发入门(二)GD32单片机详解

2024-08-21 18:36

本文主要是介绍国产GD32单片机开发入门(二)GD32单片机详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 一.概要
    • 二.单片机型号命名规则
    • 三.GD32F103系统架构
    • 四.GD32F103C8T6单片机启动流程
    • 五.GD32F103C8T6单片机主要外设资源
    • 六.单片机开发过程中查看芯片数据手册的必要性
      • 1.单片机外设资源情况
      • 2.GD32单片机内部框图
      • 3.GD32单片机管脚图
      • 4.GD32单片机每个管脚功能
      • 5.单片机功耗数据
      • 6.FALSH编程时间,擦写次数
      • 7.I/O特性表格
      • 8.外设接口最大速度
      • 9.芯片供电电压范围
    • 七.GD32F103C8T6单片机应用场景
    • 八.总结

一.概要

单片机(MCU)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU内核、随机存储器SRAM、存储器FLASH、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统。

GD32单片机是兆易创新公司基于ARM Cortex-M3内核开发的32位微控制器。
GD32F103C8T6就是其中的一款单片机。

GD32F103C8T6单片机主要特性
内核:ARM Cortex-M3
主频:108MHz,STM32F103主频是72MHz,国产的GD32主频高很多。
RAM:20k(SRAM)
ROM:64k(Flash)
供电:2.0~3.6V(标准3.3V)

芯片实物图如下:
在这里插入图片描述

芯片引脚定义如下:
在这里插入图片描述

二.单片机型号命名规则

根据命名规则,GD32F103C8T6就是通用型的,48脚,64K闪存,LQFP贴片封装,-40~85度的工业级的单片机。
在这里插入图片描述

三.GD32F103系统架构

在这里插入图片描述
如图所示,左上角为内核(ARM Cortex-M3),I-Code和D-Code主要连接Flash闪存。

Cortex‐M3内核:
是一个 32 位处理器内核。内部的数据总线是 32 位的,寄存器是 32 位的,存储器接
口也是 32 位的。Cortex‐M3采用了哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据访问并行不悖。这样一来数据访问不再占用指令总线,从而提升了性能。

FLASH闪存:
我们编写好的程序经过Keil5编译之后都是一条条指令,存放在FLASH中。内核(ARM Cortex-M3)通过I-Code总线来取里边的指令,所以FLASH主要是用来存程序,但也开放一部分空间可以存数据。

SRAM存储器:存放程序运行时的变量数据。

I-Code指令总线:
内核(ARM Cortex-M3)要从FLASH中读取指令来执行程序就必须通过ICode总线,它几乎每时每刻都需要被使用,它是专门用来取指的,所以叫它指令总线。

D-Code数据总线:
我们在写程序的时候,数据有常量也有变量,常量就是固定不变的,用C语言中的const关键字修饰,是放在FLASH,变量是可变的,是放在SRAM,所以内核(ARM Cortex-M3)可以通过D-code总线访问FLASH和SRAM读取数据,所以叫它数据总线。

APB2,APB1系统总线:
用于挂载外设(GPIO、USART、I2C、SPI等这些外设)(APB2一般和AHB同频率最高可以到108MHz,APB1最高只能到54MHz)。

System总线主要是用来访问外设寄存器,我们通常说的寄存器编程,即读写寄存器都是通过System总线来完成的。

DMA总线:可以用来传输数据,这个数据可以是某个外设的数据寄存器,也可以是SRAM或者FLASH中的数据。

EXMC是并口扩展,在GD32F103C8T6中是没有的,会在GD32F103ZET6等引脚比较多的单片机型号中。

四.GD32F103C8T6单片机启动流程

通过单片机BOOT0引脚与BOOT1引脚的电平高低组合,配置单片机启动模式

在这里插入图片描述
我们一般都用下拉电阻配置BOOT0引脚为低电平,单片机的SWD下载口用下载器下载完代码,程序就能直接运行,这是最常用的启动模式。

GD32F103C8T6单片机从FLASH的启动流程:
当芯片上电后采样到 BOOT0 引脚为低电平时,0x00000000 和 0x00000004 地址被映射到内部 FLASH 的首地址 0x08000000 和 0x0800 0004。因此,内核离开复位状态后,读取内部 FLASH 的 0x08000000 地址空间存储的内容,赋值给栈指针 MSP,作为栈顶地址,再读取内部 FLASH 的 0x08000004 地址空间存储的内容,赋值给程序指针 PC,作为将要执行的第一条指令所在的地址。完成这两个操作后,内核就可以开始从 PC 指向的地址中读取指令执行了,0x0800 0004是中断向量表的起始地址,这就是复位程序的入口地址,接着跳转到复位程序入口处,初始向量表,然后设置时钟,设置堆栈,最后跳转到main函数,即进入用户程序。

五.GD32F103C8T6单片机主要外设资源

GD32F103C8T6单片机集成了丰富的外设,比如GPIO,定时器,SPI,USART,CAN,USB,ADC等外设,这些丰富的外设能驱动很多各种接口的传感器,很多时候编程的工作也是对这些外设进行驱动编程。

红色圈出来的就是GD32F103C8T6单片机存储外设资源:
在这里插入图片描述

六.单片机开发过程中查看芯片数据手册的必要性

在编程的过程中,会经常查看一些资料,比如芯片数据手册会经常用到,作用比较大,主要需要查看哪几点,下面做个简单介绍:

1.单片机外设资源情况

编程的时候会了解是否存在这个外设,外设数量是否正确,FLASH的大小,RAM的大小,空间是否会超,需要查看确认。在这里插入图片描述

2.GD32单片机内部框图

有时候需要知道某个外设是挂在哪个总线(APB1还是APB2)下面,最高主频多少,是否存在这个外设等信息,需要查看这个单片机框图。
在这里插入图片描述

3.GD32单片机管脚图

在代码的调试过程中,有时候需要确认硬件是否连接正确,就需要知道单片机相应引脚的定义。
在这里插入图片描述

4.GD32单片机每个管脚功能

在写代码过程中,需要知道这个引脚的基本功能,是否5V容忍(可以输入5V高电平),可以复用配置成哪个外设,是否需要重映射等功能,需要查看这表格。
在这里插入图片描述
在这里插入图片描述

5.单片机功耗数据

在某些低功耗项目场景,需要知道配置成哪个低功耗模式更省电,不同主频功耗能符合功耗要求,需要查看这表格。
在这里插入图片描述

6.FALSH编程时间,擦写次数

在FLASH的存储操作中,需要知道编程时间,保证数据能正确写入,需要知道擦写次数,保证芯片不会因为擦写过多而损坏。
在这里插入图片描述

7.I/O特性表格

在I/O读取操作时,有些电压采集到的不是高电平或者低电平,需要查这表格确认读到的电压符合单片机读到的高低电平电压要求。
单片机的I/O都可以配置内部上拉下拉,上拉电阻,下拉电阻多大,一般都是40K,可以在这表格里查出来。

在这里插入图片描述
在这里插入图片描述

8.外设接口最大速度

还有一些外设的最大速度,比如SPI,IIC口的最快速度也都能在芯片手册中找到。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9.芯片供电电压范围

GD32单片机一般都是3.3V供电,电压是否符合要求,要看芯片手册供电范围。
在这里插入图片描述

七.GD32F103C8T6单片机应用场景

工业自动化:GD32F103C8T6具有丰富的外设接口,如USART、SPI、I2C等,可以方便地与各种传感器和执行器进行通信和控制。在工业自动化领域,它可以用于实现各种控制逻辑、数据采集和通信等功能。

智能家居:GD32F103C8T6具有低功耗、高性能的优点,可以作为智能家居系统的主控制器。通过与传感器、执行器等设备进行通信和控制,可以实现智能照明、智能安防、智能环境监测等功能。

智能交通:GD32F103C8T6可以用于智能交通系统的控制和管理。例如,它可以用于控制交通信号灯、监控道路状况、检测车辆违章等,提高交通效率和安全性。

医疗电子:GD32F103C8T6具有高精度、低功耗的特点,可以用于医疗电子设备的控制和监测。例如,它可以用于实现医疗设备的自动化控制、数据采集和传输等功能。

消费电子:GD32F103C8T6也可以用于消费电子产品的设计和开发。例如,它可以用于实现智能手表、智能音箱、智能玩具等产品的控制逻辑和数据处理等功能。

八.总结

在了解GD32单片机大概的内部信息和特性之后,基于GD32F103C8T6的开发板,配合STLINK下载调试器,在Keil 5软件的加持下就可以进行编程操作了。

这篇关于国产GD32单片机开发入门(二)GD32单片机详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1093953

相关文章

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

MyBatis常用XML语法详解

《MyBatis常用XML语法详解》文章介绍了MyBatis常用XML语法,包括结果映射、查询语句、插入语句、更新语句、删除语句、动态SQL标签以及ehcache.xml文件的使用,感兴趣的朋友跟随小... 目录1、定义结果映射2、查询语句3、插入语句4、更新语句5、删除语句6、动态 SQL 标签7、ehc

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

Redis 基本数据类型和使用详解

《Redis基本数据类型和使用详解》String是Redis最基本的数据类型,一个键对应一个值,它的功能十分强大,可以存储字符串、整数、浮点数等多种数据格式,本文给大家介绍Redis基本数据类型和... 目录一、Redis 入门介绍二、Redis 的五大基本数据类型2.1 String 类型2.2 Hash

Java中的.close()举例详解

《Java中的.close()举例详解》.close()方法只适用于通过window.open()打开的弹出窗口,对于浏览器的主窗口,如果没有得到用户允许是不能关闭的,:本文主要介绍Java中的.... 目录当你遇到以下三种情况时,一定要记得使用 .close():用法作用举例如何判断代码中的 input