嵌入式开发一:初识Stm32

目录

一、嵌入式简介

[1.1 嵌入式概念](#1.1 嵌入式概念)

[1.2 嵌入式系统的组成](#1.2 嵌入式系统的组成)

[1.3 嵌入式的分类](#1.3 嵌入式的分类)

[1.3.1 嵌入式系统的分类](#1.3.1 嵌入式系统的分类)

[1.3.2 嵌入式处理器的分类](#1.3.2 嵌入式处理器的分类)

二、单片机简介(MCU嵌入式微控制器)

[2.1 单片机是什么](#2.1 单片机是什么)

[2.2 单片机的作用是什么](#2.2 单片机的作用是什么)

[2.3 单片机的发展历程](#2.3 单片机的发展历程)

[2.4 单片机发展趋势](#2.4 单片机发展趋势)

[2.5 复杂指令集计算机(CISC)精简指令集计算机(RISC)区别](#2.5 复杂指令集计算机(CISC)精简指令集计算机(RISC)区别)

[2.6 计算机的冯诺依曼结构VS哈佛结构](#2.6 计算机的冯诺依曼结构VS哈佛结构)

三、CortexM系列介绍

[3.1 ARM公司](#3.1 ARM公司)

[3.2 ARM的体系架构](#3.2 ARM的体系架构)

[3.3 Cortex内核分类及特征](#3.3 Cortex内核分类及特征)

[3.3 Cortex-M3/4/7介绍](#3.3 Cortex-M3/4/7介绍)

四、Stm32介绍

[4.1 Stm32是什么](#4.1 Stm32是什么)

[4.2 Stm32命名规则](#4.2 Stm32命名规则)

[4.3 Stm32选型](#4.3 Stm32选型)

[4.4 系统架构](#4.4 系统架构)

五、Stm32原理图介绍

[5.1 学会查看数据手册](#5.1 学会查看数据手册)

[5.2 主控芯片MCU](#5.2 主控芯片MCU)

[5.3 最小系统](#5.3 最小系统)

[5.3.1 电源电路](#5.3.1 电源电路)

[5.3.2 复位电路](#5.3.2 复位电路)

[5.3.3 BOOT启动电路](#5.3.3 BOOT启动电路)

[5.3.4 晶振电路](#5.3.4 晶振电路)

[5.3.5 下载调试电路](#5.3.5 下载调试电路)

[5.4 其他电路](#5.4 其他电路)

[5.4.1 引出IO口](#5.4.1 引出IO口)

[5.4.2 USB 串口/串口 1 选择接口](#5.4.2 USB 串口/串口 1 选择接口)

[5.4.3 按键](#5.4.3 按键)

[5.4.4 有源蜂鸣器](#5.4.4 有源蜂鸣器)

[5.4.5 USB 串口](#5.4.5 USB 串口)

一、嵌入式简介

1.1 嵌入式概念

嵌入式,⼀般是指嵌⼊式系统。本质上是计算机系统的⼀种。 计算机系统的应用市场: ①服务器市场:超强性能的处理器 ②桌面市场:通用处理器 ③嵌入式市场:嵌入式处理器。如何理解嵌入式系统?

是以应用 为中心,以计算机技术为基础,软硬件可裁剪 适用于对功能、可靠性、成本、体积、 功耗有严格要求的专用计算机系统。嵌入式系统通常是嵌入到目标设备中的,为特定的任务提供计算和控制功能。是将应用程序、操作系统、和计算机硬件集成在⼀起的系统

1.2 嵌入式系统的组成

**硬件:**处理器 + 外围设备电路(外设) 软件: 操作系统 + 应用程序

1.3 嵌入式的分类

1.3.1 嵌入式系统的分类

片级:单片机(stm32f407芯片) 、DSP等以arm为核心 的产品
板级: 最小系统板
系统级: 产品

1.3.2 嵌入式处理器的分类

  1. 嵌入式微处理器(MPU) :以通用计算机中的标准CPU为微处理器,并将其装配在专门设计的电路板上,构成嵌入式系统。这种系统具有较强的通用性和可扩展性,但是体积和功耗较大。
    2. 嵌入式微控制器(MCU) :以单片机为代表,将微处理器、存储器、I/O接口等集成在一块芯片上,构成嵌入式系统。 这种系统具有单片化、体积小、功耗低、可靠性高的特点,是目前工业控制的主流

3.嵌入式数字信号处理器(DSP) :以DSP为代表,对系统结构和指令进行了特殊设计,使其适合执行信号处理算法,如数字滤波、FFT、 谱分析等。这种系统具有高速、高精度、低功耗的特点,但是编程难度较高,适合复杂的信号处理应用。

4.嵌入式片上系统(SOC) :以SoC为代表,将一个或多个微处理器、存储器、外围功能模块等集成在一块芯片上,构成嵌入式系统。这种系统具有高度集成、高性能、低成本的特点,但是设计难度较大,适合高端的嵌入式应用。

二、单片机简介(MCU嵌入式微控制器)

2.1 单片机是什么

单片机: Single-Chip Microcomputer,单片微型计算机,是一种集成电路芯片

2.2 单片机的作用是什么

1.仪器仪表: 电源/示波器/焊台
2.家用电器 :空调/冰箱/洗衣机
3.工业控制: 机器人/PLC/电梯
**4.汽车电子:**GPS/ABS/胎压监测

2.3 单片机的发展历程

2.4 单片机发展趋势

2.5 复杂指令集计算机(CISC)精简指令集计算机(RISC)区别

复杂指令集计算机(CISC)和精简指令集计算机(RISC)是两种计算机体系结构的范例,它们在处理指令和执行操作时具有不同的设计理念和优势。

2.6 计算机的冯诺依曼结构VS哈佛结构

冯·诺依曼结构和哈佛结构是计算机系统中两种不同的指令和数据存储方式。

  1. 冯·诺依曼结构(Von Neumann Architecture):

冯·诺依曼结构是早期计算机系统采用的主要架构之一。它将程序指令和数据存储在同一块存储器中,即存储器中的指令和数据共享同一个地址空间。 在冯·诺依曼结构中,指令和数据都以二进制形式存储在存储器中,并由同一组总线连接到中央处理器(CPU)。CPU依次从存储器中读取指令和数据,并按照程序顺序执行。

  1. 哈佛结构(Harvard Architecture):

哈佛结构**将程序指令和数据存储在两个独立的存储器中,分别称为指令存储和数据存储器。在哈佛结构中,指令和数据使用不同的总线传输到CPU。**因此,指令和数据具有独立的地址空间,不会发生地址冲突。哈佛结构通常能够实现更高的效率,因为CPU可以同时从指令存储器和数据存储器中读取数据,而不会发生竞争或冲突。

二者的区别:

(1)存储器分配:冯·诺依曼结构将指令和数据存储在同一块存储器中,而哈佛结构将它们存储在两个独立的存储器中。

(2)总线结构:冯·诺依曼结构使用单一总线连接CPU和存储器,而哈佛结构使用分离的指令总线和数据总线。

(3)地址空间:在冯·诺依曼结构中,指令和数据共享同一地址空间,而在哈佛结构中,它们具有独立的地址空间。

(4)并行性:由于哈佛结构中指令和数据具有独立的存储器和总线,因此它有更好的并行性和效率。

总的来说,冯·诺依曼结构适用于一般的计算机系统,而哈佛结构通常用于嵌入式系统和特定应用领域,以提高效率和性能。

三、CortexM系列介绍

3.1 ARM公司

ARM(Advanced RISC Machines)公司:只做内核设计和IP授权,不参与芯片设计。既可以认为是一个公司的名字,也可以认为是对一类微处理器的统称。

①公司的名称。②⼀类处理器的统称 ③⼀类技术:ARM 架构,⽤来设计处理器的技术。

3.2 ARM的体系架构

ARM11(armv6)之后,命名⽅式改成了cortex- ?系列:

cortex-M: mcu /微处理器

cortex-R:real time 实时处理器;汽⻋

cortex-A:application ⾼端处理器,可以运⾏系统(Linux);⼿机、平板

3.3 Cortex内核分类及特征

3.3 Cortex-M3/4/7介绍

四、Stm32介绍

4.1 Stm32是什么

ST:意法半导体;

M:Microcontroller/微控制器 全称:意法半导体⽣产的32位处理器;

我们教学⽤的这款ST的控制器STM32F4067ZGT6,就是基于ARM的Cortex-M4内核的微处理器(MCU)

ST公司累计推出了: 5大类、18个系列、1000多个型号的Cortex内核微控制器。

ST中文社区网: https://www.stmcu.orq.cn

ST官网: https://www.st.com

4.2 Stm32命名规则

以我们使用的Stm32F407ZGT6为例。

Stm32F407ZGT6芯片资源介绍

4.3 Stm32选型

依据原则:性能由高到低,由大到小。

4.4 系统架构

STM32F407ZGT6芯片内部的总线矩阵是一种用于连接处理器核心、外设和存储器之间的高速数据传输的结构,它提供了高速、多通道的数据传输通路,为嵌入式系统的设计和开发提供了灵活性和性能保障。

  • 总线矩阵提供了处理器核心(如ARM Cortex-M4)与芯片内部外设(如定时器、串口、SPI、I2C等)和存储器(如Flash、SRAM等)之间的连接通路。
  • 这些通路以总线的形式存在,允许处理器核心通过总线与外设和存储器进行数据交换和通信。

五、Stm32原理图介绍

5.1 学会查看数据手册

如何获取数据手册?

(1)ST官网: https://www.st.com

(2)ST中文社区网: https://www.stmcu.org.cn/

正点原子开发板对应的主控型号和封装

5.2 主控芯片MCU

正点原子探索者 STM32 开发板选择的是 STM32F407ZGT6 作为 MCU,该芯片是 STM32F407 里面配置非常强大的了,它拥有的资源包括:192KB SRAM、1024KB FLASH、12 个 16 位定时器、2 个 32 位定时器、2 个 DMA 控制器(共 16 个通道)、3 个 SPI、2 个全双工 I2S、3 个 IIC、6 个串口、2 个 USB(支持 HOST/SLAVE)、2 个 CAN、3 个 12 位 ADC、2 个 12 位 DAC、1 个 RTC(带日历功能)、1 个 SDIO 接口、1 个 FSMC 接口、1 个 10/100M 以太网 MAC 控制器、1 个摄像头接口、1 个硬件随机数生成器以及 112 个通用 IO 口。该芯片的配置十 分强悍,很多功能相对 STM32F1 来说进行了重大改进,比如 FSMC 的速度,F4 刷屏速度可达 3300W 像素/秒,而 F1 的速度则只有 500W 左右。 MCU 部分的原理图如图 2.1.1.1-1 和图 2.1.1.1-2(由于 MCU 引脚比较多,因此我们把原理 图分成 2 部分,方便查看)所示:

5.3 最小系统

最小系统:保证MCU正常工作的最小电路组成单元

5.3.1 电源电路

正点原子探索者 STM32 开发板板载的电源供电部分,其原理图如图 2.1.29.1 所示:

图中,总共有 3 个稳压芯片:U10/U11/U12,DC_IN 用于外部直流电源输入,范围是 DC6~15V, 输入电压经过 U10 DC-DC 芯片转换为 5V 电源输出,其中 VD1 是防反接二极管,避免外部直 流电源极性搞错的时候,烧坏开发板。K1 为开发板的总电源开关,F1 为 1000ma 自恢复保险 丝,用于保护 USB。U11 和 U12 均为 3.3V 稳压芯片,给开发板提供 3.3V 电源,其中 U11 输出 的 3.3V 给数字部分用,U12 输出的 3.3V 给模拟部分(ES8388)使用,分开供电,以得到最佳音频。正点原子探索者 STM32 开发板板载了两组简单电源输入输出接口,其原理图如图 2.1.30.1 所示:

图中,VOUT1 和 VOUT2 分别是 3.3V 和 5V 的电源输入输出接口,有了这 2 组接口,我们 可以通过开发板给外部提供 3.3V 和 5V 电源了,虽然功率不大(最大 1000ma),但是一般情况 都够用了,大家在调试自己的小电路板的时候,有这两组电源还是比较方便的。同时这两组端 口,也可以用来由外部给开发板供电。

5.3.2 复位电路

正点原子探索者 STM32F407 的复位电路如图 2.1.7.1 所示:

因为 STM32 是低电平复位的,所以我们设计的电路也是低电平复位的,这里的 R51 和 C65 构成了上电复位电路。同时,开发板把 TFT_LCD 的复位引脚也接在 RESET 上,这样这个复位 按钮不仅可以用来复位 MCU,还可以复位 LCD。

5.3.3 BOOT启动电路

正点原子探索者 STM32F407 的启动模式设置端口电路如图 2.1.8.1 所示:

5.3.4 晶振电路

5.3.5 下载调试电路

正点原子探索者 STM32F407 板载的标准 20 针 JTAG/SWD 接口电路如图 2.1.4.1 所示:

这里,我们采用的是标准的 JTAG 接法,但是 STM32 还有 SWD 接口,SWD 只需要最少 2 跟线(SWCLK 和 SWDIO)就可以下载并调试代码了,这同我们使用串口下载代码差不多,而且速度非常快,能调试。所以建议大家在设计产品的时候,可以留出 SWD 来下载调试代码, 而摒弃 JTAG。STM32 的 SWD 接口与 JTAG 是共用的,只要接上 JTAG,你就可以使用 SWD 模式了(其实并不需要 JTAG 这么多线),当然,你的调试器必须支持 SWD 模式,DAP、ST LINK、JLINK 和 ULINK 等都支持 SWD 调试。 特别提醒,JTAG 有几个信号线用来接其他外设了,但是 SWD 是完全没有接任何其他外设 的,所以在使用的时候,推荐大家一律使用 SWD 模式!!!

5.4 其他电路

5.4.1 引出IO口

正点原子探索者 STM32F407 引出了 STM32F407ZGT6 的所有 IO 口,如图 2.1.2.1 所示:

图中P7、P8和P9为MCU主IO引出口,这三组排针共引出了102个IO 口,STM32F407ZGT6 总共有 112 个 IO,除去 RTC 晶振占用的 2 个,还剩 110 个,这三组主引出排针,总共引出了 102 个 IO,剩下的 8 个 IO 口分别通过:P10(PA9&PA10)、P4(PA2&PA3)、P2(PB10&PB11) 和 P5(PA11&PA12)等 4 组排针引出。

5.4.2 USB 串口/串口 1 选择接口

正点原子探索者 STM32F407 板载的 USB 串口和 STM32F407ZGT6 的串口是通过 P10 连接 起来的,如图 2.1.3.1 所示:

图中 TXD/RXD 是相对 CH340 来说的,也就是 USB 串口的发送和接收脚。而 USART1_RX 和 USART1_TX 则是相对于 STM32F407ZGT6 来说的。这样,通过对接,就可以实现 USB 串口和 STM32F407ZGT6 的串口通信了。同时,P10 是 PA9 和 PA10 的引出口。 这样设计的好处就是使用上非常灵活。比如需要用到外部TTL串口和STM32通信的时候, 只需要拔了跳线帽,通过杜邦线连接外部 TTL 串口,就可以实现和外部设备的串口通信了;又 比如我有个板子需要和电脑通信,但是电脑没有串口,那么你就可以使用开发板的 RXD 和 TXD 来连接你的设备,把我们的开发板当成 USB 转 TTL 串口用了。

5.4.3 按键

正点原子探索者 STM32F407 板载总共有 4 个输入按键,其原理图如图 2.1.20.1 所示:

KEY0、KEY1 和 KEY2 用作普通按键输入,分别连接在 PE4、PE3 和 PE2 上,这里并没有 使用外部上拉电阻,但是 STM32 的 IO 作为输入的时候,可以设置上下拉电阻,所以我们使用 STM32 的内部上拉电阻来为按键提供上拉。 KEY_UP 按键连接到 PA0(STM32 的 WKUP 引脚),它除了可以用作普通输入按键外,还可 以用作 STM32 的唤醒输入。注意:这个按键是高电平触发的。

5.4.4 有源蜂鸣器

正点原子探索者 STM32F407 板载了一个有源蜂鸣器,其原理图如图 2.1.23.1 所示:

有源蜂鸣器是指自带了震荡电路的蜂鸣器,这种蜂鸣器一接上电就会自己震荡发声。而如 果是无源蜂鸣器,则需要外加一定频率(2~5Khz)的驱动信号,才会发声。这里我们选择使用有源蜂鸣器,方便大家使用。 图中 Q4 是用来扩流,R65 则是一个下拉电阻,避免 MCU 复位的时候,蜂鸣器可能发声的现象。BEEP 信号直接连接在 MCU 的 PF8 上面,PF8 可以做 PWM 输出,所以大家如果想玩高级点(如:控制蜂鸣器"唱歌"),就可以使用 PWM 来控制蜂鸣器。

5.4.5 USB 串口

正点原子探索者 STM32 开发板板载了一个 USB 串口,其原理图如图 2.1.31.1 所示

以上便是为大家带来的STM32的第一节的内容,主要认识嵌入式系统和对于stm32有个大概的认识,后面会逐步介绍每个外设的固件库使用方法,如有兴趣,感谢点赞、关注、收藏,若有不正地方,还请各位大佬多多指教!

相关推荐
小狗爱吃黄桃罐头16 分钟前
江协科技STM32学习- P14 示例程序(定时器定时中断和定时器外部时钟)
stm32·江科大stm32
@@庆1 小时前
stm32 PWR电源控制(修改主频&睡眠模式&停机模式&待机模式)
stm32·单片机·嵌入式硬件
JT灬新一1 小时前
STM32巡回研讨会总结(2024)
stm32·单片机·嵌入式硬件
爱桥代码的程序媛2 小时前
鸿蒙OpenHarmony【轻量系统芯片移植案例】标准系统方案之瑞芯微RK3568移植案例
嵌入式硬件·harmonyos·鸿蒙·鸿蒙系统·移植·openharmony·鸿蒙开发
Whappy0012 小时前
51单片机-DA(数字转模拟)
单片机·嵌入式硬件·51单片机
鸽子汤1972 小时前
想高效开发?从文件系统开始着手。。。
嵌入式硬件·物联网·硬件工程
Whappy0012 小时前
51单片机-AD(模拟信号转数字信号)-实验()
单片机·嵌入式硬件·51单片机
redcocal12 小时前
地平线秋招
python·嵌入式硬件·算法·fpga开发·求职招聘
辰哥单片机设计15 小时前
门磁模块详解(防盗感应开关 STM32)
stm32·单片机·嵌入式硬件·传感器