介绍

单片机介绍

学习自正点原子 b站课程。

单片机和电脑的类比:内存是 SRAM,硬盘是 FLASH,主板是外设。


STM32单片机系统架构 stm32单片机基于什么架构_学习

单片机拓展也很方便。可做仪器仪表,家用电器,工业控制,汽车电子。

单片机发展由48→51→MCS96 微控制器阶段→ARM, RISC-V 微控制器全面发展阶段。

应用三阶段,SCM 单片阶段(把微电脑集成在一块芯片上)→MCU 完善控制阶段→SoC 嵌入式系统阶段(软硬件协同设计,单片机里有软件)。


STM32单片机系统架构 stm32单片机基于什么架构_stm32_02

STM32单片机系统架构 stm32单片机基于什么架构_引脚_03

8051,X86 属于 CISC;ARM, MIPS, RISC-V 属于 RISC.

冯诺依曼和哈佛结构的主要区别:程序存储器和数据存储器是否分开存储。不分开是冯诺依曼,分开是哈佛。哈佛执行效率更高,冯诺伊曼资源占据更少。

CORTEX-M 系列介绍

ARM 公司(做精简指令集计算机的)只设计内核架构和授权知识产权,不参与设计芯片,给其他合作公司授权设计芯片。半导体厂商再根据架构完善周边电路并制作芯片。现在95%手机、平板都是 ARM 架构的, ARM 公司是真的牛。


STM32单片机系统架构 stm32单片机基于什么架构_引脚_04

其优点在于低功耗低成本高性能,且支持16/32位双指令集。

ARM 有9个版本,从 v6 开始出现 cortex 的命名。


STM32单片机系统架构 stm32单片机基于什么架构_引脚_05

可以看出 M 主要是单片机使用的。正点原子系列主要是以下3类:


STM32单片机系统架构 stm32单片机基于什么架构_单片机_06

DMIPS 是每1MHz执行多少百万条指令。要 * CPU 主频。

CoreMark 是跑分。

STM32 介绍

ST:意法半导体。

M:MCU/MPU。

32: 32位 CPU。

STM32 是 ST 公司基于 ARM CORE-M 芯片(类似 CPU)开发的32位的单片机,相比8位的51单片机性能更强。(也有 STM8)

STM32 有五大类:高性能类,主流类(我们学习的 F1 就属于主流类),超低功耗类,无线类,以及 MPU 类。

STM32单片机系统架构 stm32单片机基于什么架构_stm32_07

命名规则:

STM32单片机系统架构 stm32单片机基于什么架构_单片机_08

开发选型:建议从性能高到低,闪存从大到小,来挑选刚好满足项目要求的。

原理图设计


STM32单片机系统架构 stm32单片机基于什么架构_单片机_09

查看数据手册

https://www.st.com 可以下载英文数据手册。

https://www.stmcu.org.cn/ 在译文一栏里有中文手册。

本课程学习的是 STM32F103ZE 设备,对应 STM32F103xE 手册。

手册主要看引脚定义和电气特性栏。

STM32单片机系统架构 stm32单片机基于什么架构_stm32_10

JTAG 可以仿真调试下载,但是占了5个IO口。

SWD 可以下载仿真,占了2个 IO 口(推荐使用)。

串口只能下载,占了2个 IO 口。

STM32单片机系统架构 stm32单片机基于什么架构_STM32单片机系统架构_11

芯片上有一大一小两个孔。小孔在左下角,大孔在右上角时,小孔上面是144,右边是0,逆时针转。

最小系统

保证 MCU 正常工作的最小电路组成单元。除了芯片,还需要电源电路,晶振电路,下载调试电路,BOOT 启动电路,复位电路。

STM32单片机系统架构 stm32单片机基于什么架构_stm32_12

电源电路:

下图上面的电路是稳压,5V 稳成 3.3V。

下面的电路是方便检修的,当 3.3V 短路时断开这两个0欧电阻,可以判断是 MCU 短路还是其他部分短路。

STM32单片机系统架构 stm32单片机基于什么架构_stm32_13

模拟电源:3.3V 通过低通滤波器调整,过滤掉高频。

STM32单片机系统架构 stm32单片机基于什么架构_学习_14

参考电压借助模拟电压供电。

STM32单片机系统架构 stm32单片机基于什么架构_stm32_15

RTC 和后备区域充电时由电源供电,断电由纽扣电池供电。

STM32单片机系统架构 stm32单片机基于什么架构_学习_16

复位电路:

STM32单片机系统架构 stm32单片机基于什么架构_学习_17

NRST 低电平1~4.5ms即可复位,刚通电时电容充电短路或者按下 reset 接地时都可。

BOOT 启动电路:F1 F4 如图。

STM32单片机系统架构 stm32单片机基于什么架构_学习_18

中间的部分通过跳线帽选择 BOOT 0/1。

F7如图。

STM32单片机系统架构 stm32单片机基于什么架构_学习_19

晶振电路:

STM32单片机系统架构 stm32单片机基于什么架构_单片机_20

下载调试电路:

STM32单片机系统架构 stm32单片机基于什么架构_引脚_21

JTMS 模式选择,JTCK 时钟。JTDI 数据输入,JTDO 数据输出。

串口通信:有外部的 USART 连接:

STM32单片机系统架构 stm32单片机基于什么架构_单片机_22

有内部的 USB TTL 转换,交给 USART 内部的 TXD RXD(右图):

STM32单片机系统架构 stm32单片机基于什么架构_引脚_23

左图是正点原子自己设计的用 reset 和 BOOT0 的串口通信。

IO 分配:优先分配特定外设 IO ,再分配通用 IO,最后微调。

IO介绍

开发板引脚连接起来,相比51单片机,既能加深对硬件电路的理解,也能避免引脚焊死的一些问题。比如我的51板子有个电位器拧坏了。现在估计就要整个重买。还有可以自己布局引脚。

当然连线也会有一些新问题。比如电线坏了使得程序跑不了需要排查。

软件开发使用 Keil MDK,这个和 Keil C51不一样。


STM32单片机系统架构 stm32单片机基于什么架构_引脚_24

F1 系列所有的外设(并不是所有芯片都有。比如我们的芯片就只有一部分):

STM32单片机系统架构 stm32单片机基于什么架构_单片机_25

具体有什么可以查数据文档。

STM32:基于 ARM 核心的32位微控制器。

F:通用类型。

103:增强型。

C:引脚数48脚。

8:64K 字节的闪存存储器。

T:采用 LQFP 封装。

6:工业级温度范围 -40~85。

系统结构:

STM32单片机系统架构 stm32单片机基于什么架构_单片机_26

左上角:内核,引出了三条总线。

ICODE DCODE:连接 FLASH 闪存。闪存中存储程序, ICODE 加载程序,DCODE 加载数据。

系统总线:连接 SRAM (存储程序运行时变量)、AHB 系统总线(先进高能总线,挂载最基本的或者性能较高的外设,如 RESET CLK;并通过级联连接性能较低的 APB,用于连接一些重要外设如 ADC。APB2 性能和频率高于 APB1)等。

DMA 可以处理一些辅助 CPU 的工作,如数据搬运。提高 CPU 工作效率。

STM32单片机系统架构 stm32单片机基于什么架构_单片机_27

小黑点代表一号引脚。

红色:电源相关引脚。

蓝色:最小系统相关引脚。

绿色: IO、功能口。

IO 口电平:IO 口最大能容忍的电压。有 FT (Five Tolerate) 的是5V,没有的是 3.3V。

主功能:基本 IO 口,未连接外设可以直接读取高低电平。

默认复用功能:连接外设驱动的功能。

重定义功能:如果想同时用一个引脚的两个功能,可以通过重定义将一个功能映射到其他引脚上。

  1. VBAT:既能供电,又能作为备用电源。
  2. 可以作为基本的 IO 口或安全保障的侵入检测。比如产品上可以添加一些防拆触点,强行拆开就会触发侵入信号,进而清空数据。或者做 RTC 时钟相关。
  3. 34 做基本 IO 口或接 RTC 晶振。
  4. 34 做基本 IO 口或接 RTC 晶振。
  5. 56 接系统主晶振。一般是 8MHZ,芯片内部的锁相环电路可以使其倍频,最高 72MHZ,作为系统主时钟。
  6. 56 接系统主晶振。
  7. NSRT 系统复位引脚,N 表示低电平复位。
  8. 89 是内部模拟部分的电源,如 ADC RC 振荡器用。VSSA 负极。
  9. VDDA 正极。(3.3V)
  10. 10~19 都是 IO。10号 PA0 还兼具了 WKUP 功能,能唤醒待机状态下的 STM32。
  11. IO 口或 BOOT1 引脚,BOOT 用于配置启动模式。这个是可能需要配置的 IO 口,优先级没有其他 IO 口高。
  12. 21 22 IO 口。
  13. 21 22 IO 口。
  14. VSS 系统主电源口。负极。
  15. VDD 系统主电源口。正极。

STM32 分区供电,有许多 VSS VDD 口。

  1. 25~33 IO 口。
  2. 34,37~40 IO 口(需要配置)或调试端口,用于调试下载程序支持 SWD JTAG 两种调试方式。
  3. 41-43 45-46 IO 口。
  4. BOOT0.

BOOT:程序开始运行的位置。有时需要不在 flash 中开始,以完成某些特殊功能。

STM32单片机系统架构 stm32单片机基于什么架构_STM32单片机系统架构_28

若想通过串口下载程序,需要设置 01。比如 34,37~40 都被占用时。或者没有 STLINK JLINK 时。

11 用于程序调试,本课程中不会用到。

要在第四个上升沿前设置 BOOT,之后就没有影响了。

最小系统电路:

STM32单片机系统架构 stm32单片机基于什么架构_STM32单片机系统架构_29

主电源和模拟电源都连接了电源。

VCC GND 之间加一个滤波电容,保证电源稳定性。

VBAT 接备用电源,一般接一个 3V 纽扣电池正极即可。

晶振不必多说,如果想有 RTC 功能再加个32.768 MHZ (即 OSC32 )晶振在 34 引脚。

复位电路低电平复位,一开始电容没电,一开始就是低电平。逐渐充满电后变为高电平。或者按下按键电容放电复位。

启动配置通过跳线帽设置 BOOT。

我们的单片机实物还有一些外设:USB 接口,3.3V 恒压芯片,电源和 IO 指示灯,32.768 MHZ 晶振(黑色的)。

软件安装

STM32单片机系统架构 stm32单片机基于什么架构_引脚_30

MDK

安装 MDK。

KEIL5 需要安装器件支持包。没安装选择芯片型号时会找不到我们的芯片。

注册软件,和 51单片机类似的方法。

安装 STLINK 驱动。

安装 USB CH340 驱动,和 51单片机的通用。检测方法:战舰版连接 USB-UART,可见设备管理器里多出来了 CH340。

STM32单片机系统架构 stm32单片机基于什么架构_学习_31

开发板上是有 CH340 转换电路的,但是 PC 一开始是无法识别的,需要安装虚拟 CH340 串口驱动才能识别协议。

USB 虚拟串口可以当成串口使用,串口1可以下载程序(2不行),可以供电。

串口1就是 PA9 PA10 跳线帽。PA9 相当于 TXD,PA10 相当于 RXD。

串口下载

FLYMCU,是针对 M3M4 的下载程序。通常用串口1下载。

USB 连接到 USB-UART;USART1 跳线帽连上 PA9 PA10 和 RXD TXD;BOOT0 1 都连接 GND;电源打开,PWR 灯常亮。