嵌入式入门篇(二):初识STM32F103ZET6

◆博主名称:少司府

欢迎来到少司府的博客☆*: .。. o(≧▽≦)o .。.:*☆

⭐数据结构系列 个人专栏:初阶数据结构 高阶数据结构

⭐C++基础 个人专栏:C++初阶 C++进阶

⭐Linux 个人专栏:Linux系统编程

⭐嵌入式MCU 个人专栏:嵌入式MCU

⭐琢玉成器终有时,笔底生花夺锦归


目录

[1. STM32F103ZET6命名方法](#1. STM32F103ZET6命名方法)

[1.1 STM32](#1.1 STM32)

[1.2 F103](#1.2 F103)

[1.3 ZET6](#1.3 ZET6)

[1.3.1 Z](#1.3.1 Z)

[1.3.2 E](#1.3.2 E)

[1.3.3 T](#1.3.3 T)

[1.3.4 6](#1.3.4 6)

[2. 认识STM32F103ZET6引脚](#2. 认识STM32F103ZET6引脚)

[2.1 引脚布局](#2.1 引脚布局)

[2.2 特殊功能引脚(常见部分)](#2.2 特殊功能引脚(常见部分))

[2.2.1 VDD和VSS](#2.2.1 VDD和VSS)

[2.2.2 NRST复位引脚](#2.2.2 NRST复位引脚)

[2.2.3 VBAT:备用电池](#2.2.3 VBAT:备用电池)

[2.2.4 BOOT0:启动模式选择](#2.2.4 BOOT0:启动模式选择)

[2.2.5 其他](#2.2.5 其他)

[2.3 普通引脚](#2.3 普通引脚)

[3. 仿真器简介](#3. 仿真器简介)

[3.1 ST-Link](#3.1 ST-Link)

[3.2 DAPLink](#3.2 DAPLink)

[3.3 理解仿真器](#3.3 理解仿真器)

[4. 硬件连接](#4. 硬件连接)

[4.1 DAP仿真器和开发板进行连接](#4.1 DAP仿真器和开发板进行连接)

[4.2 连接仿真器和电脑](#4.2 连接仿真器和电脑)

[5. 运行测试程序](#5. 运行测试程序)

[5.1 打开测试工程](#5.1 打开测试工程)

[5.2 编译](#5.2 编译)

[5.3 烧录](#5.3 烧录)

[6. 操作系统与裸机开发](#6. 操作系统与裸机开发)


1. STM32F103ZET6命名方法

1.1 STM32

ST是"意法半导体"公司的缩写,M是"微电子" Microelectronics 的缩写,STM32 表示意法半导体公司设计生产的32位的MCU

1.2 F103

F1归属于"主流"(Mainstream)产品线。并且使⽤ Cortex-M3 的 CPU 内核。03属于STM32F1⼦系列中具体的产品线。

1.3 ZET6

1.3.1 Z

Z:表示这个MCU有144个引脚或针脚。

|----------|-----------|
| 字母标识 | pin数目 |
| T | 36 |
| C | 48 |
| R | 64 |
| V | 100 |
| Z | 144 |

1.3.2 E

E:表示内部Flash容量为512KB

|----------|-------------|
| 数字标识 | Flash容量 |
| 4 | 16KB |
| 6 | 32KB |
| 8 | 64KB |
| B | 128KB |
| C | 256KB |
| D | 384KB |
| E | 512KB |
| F | 768KB |
| G | 1024KB |

1.3.3 T

T:封装类型,采用LQFP封装。

|----------|----------|------------------------------------------------|----------------|
| 字母标识 | 封装类型 | 英文全称 | 中文含义 |
| T | LQFP | Low-profile Quad Flat Package | 低轮廓四边扁平封装 |
| H | BGA | Ball Grid Array | 球珊阵列封装 |
| U | VFQFPN | Very Thin Fine-pitch Quad Flat No-lead Package | 超薄细间距四边扁平无引脚封装 |

1.3.4 6

6:MCU工作温度范围,6表示工作温度范围-40度到+85度。

|----------|----------------|
| 数字标识 | 工作温度范围 |
| 6 | -40°C 到 +85°C |
| 7 | -40°C 到 +105°C |

2. 认识STM32F103ZET6引脚

2.1 引脚布局

引脚布局属于硬件,可在《数据手册》中找到引脚相关内容。

每个引脚都有对应的名字,描述这个引脚的功能,后续编写代码的时候,相当一部分逻辑就是针对这些引脚,通过设置输入/输出的电信号来对某种设备进行控制。

注意,在STM32F103ZET6实物图上,有一个实心的圆点,从圆点最近的引脚开始编号,编号从1开始,逆时针递增。

MCU对外会存在很多引脚,但从分类上分为:

特殊功能引脚

普通引脚

因此,后续编程主要都是与普通引脚相关的设定。

2.2 特殊功能引脚(常见部分)

2.2.1 VDD和VSS

1)、VDD接正极供电

Voltage Drain Drain :指芯⽚内部逻辑电路(通常指MOSFET晶体管的漏极)的⼯作电压,

通俗理解:就是芯⽚的正电源输⼊引脚,在 STM32F103 系列上,通常连接 +3.3V

2)、VSS接地

Voltage Source Source :指芯⽚内部逻辑电路的公共地(源极)电压,就是芯⽚的负极或

0V参考地,在 STM32F103 系列上,连接到电路的 GND (地线)

单片机供电,高电压都是3.3V,是为了适应芯片工艺进步和低功耗需求而历史形成的行业标准。

2.2.2 NRST复位引脚

复位引脚通常会接一个按钮。

复位(Reset):指的是让单片机强制回归初始状态,相当于"重启"。

在计算机圈子里,"重启下试试"通常能解决90%的问题。

绝大多数单片机(如STM32)的复位引脚是低电平有效,即:

引脚为低电平(0V,也就是接地)时,处于复位状态。

引脚为高电平(3.3V)时,正常运行。

未来我们烧录程序到MCU内部,就需要按下这个复位按键来完成启动新程序的效果。

2.2.3 VBAT:备用电池

当VDD异常(掉电)时,VBAT自动为MCU供电(主要是RTC(实时时钟)和备份寄存器),确保时间不丢失、数据不丢失,但MCU整体停止运行。

这提高了系统在"恢复供电后能快速恢复时间上下文"的可靠性,而不是保证核心功能持续运行。

类似电脑关机拔掉电源后,主板上电池仅维持BIOS时钟和设置,电脑本身不能运行,但下次开机时间还是准确的。

2.2.4 BOOT0:启动模式选择

启动模式:描述了单片机复位后,从谁提供的软件指令开始执行。

BOOT1也存在,但是直接被接地(一般做板子都焊死了),也就是永远是低电平0。

|---------|---------------------|---------------------------------------------------|
| BOOT0状态 | 作用 | 通俗理解 |
| 接GND | 运行已烧录的程序 | 正常开机,执行你烧录的程序。 99%场景下,都是这个。 |
| 接3.3V | 进入Bootloader,等待串口下载 | 进入刷机模式,执行意法提供的Bootloader。当未来无法烧录的时候,可以用它来强制烧写 |

在我们未来开发的时候,默认使用的是BOOT0接GND的方式。

NRST复位引脚对比BOOT0:启动模式选择------

1)、NRST复位引脚:不改变启动源,只是从头开始运行指定的软件。

2)、BOOT0启动模式选择:不触发重启,只决定重启后运行谁的问题。

2.2.5 其他

OSC_IN / OSC_OUT :外部高精度时钟输入 / 输出引脚

VREF系列:高精度ADC / DAC 的参考电压

NC:No Connect ,未进行任何连接的引脚

2.3 普通引脚

先通过字母对普通引脚进行分组,再使用数字对每组的引脚进行编号。

A - G = 7 ,0 - 15 = 16 ,一共 7*16 = 112 个普通引脚

注意:

1)、这些引脚在MCU上排列不一定是连续的

2)、"完整引脚组"指的是该组字母(如PA、PB)拥有从 0 到 15 的全部 16 个编号引脚

在后续编程中,我们主要就是控制这些引脚来输入 / 输出电信号。

这样算下来,普通引脚112个,那么特殊引脚就是144 - 112 = 32个了。

3. 仿真器简介

开发STM32程序来说,需要把编好的代码,编译并烧录到STM32开发板中,这时候就需要使用仿真器了。

上图是ST官方生产的ST-Link,其官网:ST-Link/V2

其比较贵,而且是闭源的,性价比不高。

上图是国产的DAP仿真器。

DAP仿真器是开源的,其官方名称叫DAPLink,是由Arm公司主导并维护的开源项目。

其开源体现在两个方面:

1)、软件/固件开源------DAPLink的全部固件源码在GitHub上公开,采用开源许可证(如 Apache-2.0),任何人都可以查看、修改和分发。

2)、硬件开源------官方提供了参考电路设计。

Arm Mbed DAPLink GitHub 仓库:https://github.com/ARMmbed/DAPLink

有网络问题的,可以换个链接:https://gitee.com/flfxt/DAPLink

做MCU开发的,直接使用现成的仿真器就行了。

DAPLink本身自己也是个单片机系统。

3.3 理解仿真器

仿真器是一种硬件调试工具,通过仿真器连接开发板和PC,从而通过PC上的开发工具,对MCU进行烧录、调试。

烧录的本质就是把编译生成的可执行程序,通过仿真器,写入到STM32片上Flash中。

4. 硬件连接

4.1 DAP仿真器和开发板进行连接

如下图是4针SWD(Serial Wire Debug)调试接口的连接:

DAP仿真器有10个针脚,仿真器上有对应针脚的描述:

仿真器上对应引脚和开发板上对应针脚一一连接就好了。

需要注意的就是4号引脚(SWDIO)连接到开发板的DIO引脚,2号引脚(SWCLK)连接到开发板的CLK引脚。

什么是杜邦线?

杜邦线是一种用于电路板直接灵活连接的多芯软导线,两端有标准间距2.54mm的插头和插座。

有公对公,母对母,公对母三种类型:

什么是SWDIO?

SWDIO是串行调试接口的双向数据线,用于在调试器和目标芯片之间传输命令与数据。

什么是CLK?

SWCLK是由调试器提供给目标芯片的时钟信号,用来同步SWDIO上的数据传输。

4.2 连接仿真器和电脑

将仿真器的USB口连接到电脑的USB口即可,此时开发板通过电脑的USB供电,电源指示灯亮,说明已经启动。

5. 运行测试程序

5.1 打开测试工程

编写好测试程序后,使用Keil运行该工程文件:

如图。

5.2 编译

点击工具栏的build按钮,即可触发编译

如果提示 0 Errors,0 Warnings,说明编译成功。

此时会生成二进制可执行程序和一系列的 .o .d 等中间代码文件。

.hex就是未来烧写到MCU内部的二进制程序。

如果有如下报错:

则在魔术棒中修改ARM Compiler 为 version 6.

5.3 烧录

在仿真器连接好电脑和开发板的情况下,打开编译软件Keil,在魔术棒(Options for Traget)选项卡里面进行配置。

1)、在Debug标签页中,右上角选择 CMSIS-DAP Debugger

2)、点击工具栏中的"Download"按钮,烧录程序到MCU的内置的Flash中。

6. 操作系统与裸机开发

对与PC/智能手机/服务器来说,通常是下图结构:

软件即应用程序,而常见的操作系统如下:

1)、操作系统对各种硬件设备进行统一的管理

2)、操作系统给各种软件提供稳定的运行环境

对于单片机来说,开发一个软件,可能是直接运行在硬件裸机上,也可能是运行在操作系统上。

对于MCU来说,由于存储空间和运行速度有限,需要更轻量级的实时操作系统。

FreeRTOS是目前最流行的实时操作系统之一,除此之外,还有 µC/OS,RT-Thread,Zephyr 等

随着MCU算力的提高,高端的MCU上也可以运行Linux和Android这样更重量的操作系统了。

我们初期切入的领域是裸机开发领域:

其比较大的特点是:

形成的⼆进制程序,直接烧写到MCU内部的FLASH中,然后才有ARM CPU(Cortex-M3)执⾏代码的过程。这个过程就是典型的:裸机开发

本期的分享就到这里,如果觉得博主的文章比较对胃口的话,可以点一个小小的关注~

您的三连是我持续更新的动力~

相关推荐
无足鸟ICT1 小时前
【RHCA+】IO调度算法
linux·服务器
shimly1234561 小时前
(done) 嵌入式硬件电路图 (8) 获取芯片手册信息
嵌入式硬件
打工仔折腾 AI1 小时前
Changedetection.io 网页变动监控:Docker 部署、通知配置与公网暴露实践
运维·人工智能·后端·python·docker·容器·性能优化
火云代理1 小时前
Python 使用代理 IP 前,先弄清 Requests 的配置来源与验证方法
网络·python·网络协议·tcp/ip·ip
wacsii1 小时前
【Linux进程(四)】命令行参数与环境变量
linux·服务器
无奈笑天下1 小时前
银河麒麟上lsblk命令教程详解
linux·运维·服务器·数据库
科研邪修法2 小时前
培训PDF保护配置:把需求转换成可验收权限
linux·服务器·网络
2601_967979123 小时前
Python第七十四讲 异常处理完全精通 try-except零基础保姆级教程
python·异常处理·编程教程·错误处理·try-except
Felven3 小时前
中科驭数100G网卡RDMA性能测试
linux·rdma·中科驭数·100g网卡