被裁20240927 --- 嵌入式硬件开发 STM32篇

人很容易原谅别人的错误但很难原谅别人的正确
- 1. 文档、手册、指南、资源
- 2. MCU 结构
- 3. MCU 和 MPU 的区别
- 4. 一些概念
- 什么是看门狗 ?
- 什么是 DMA ?
- 什么是晶振 ?
- 什么是片内外设?
- 软件协议、硬件协议、数据协议、通讯协议、通信协议
- uart、usart、RS232、RS485的区别
- RS232、RS422、RS485是什么?
- PWM信号调制
- 5. STM32 最小系统
- 一、电源电路
- 二、时钟电路
- 三、复位电路
- 四、调试接口电路
- 五、启动电路
- 6.为什么使用 MCU?
- 7. 如何选型?
- 8. 如何使用STM32MCU芯片?
- 一、自己设计电路板
- 二、购买官方开发板(或第三方开发板)
- 9. 程序开发步骤
- 10. 硬件调试工具
- 11. STM32 H743 为例
- 12. STM32 H743 飞控
- 参考文献
1. 文档、手册、指南、资源
- 官网
- Getting started with STM32
- Getting started with peripherals
- 快速开始
- 开发者社区
- 资料下载(手册、文档、指南、工具、软件包、笔记、课件等)
- 开发工具下载(STM32Cube系列软件)
- 与STM32适配的第三方组件与模块(4g5g模块、wifi、蓝牙等模块等)
- 与STM32适配的第三方嵌入式软件(RT-Thread、QT、视觉检测软件等)
- 第三方STM32开发板(正点原子、野火等)
- 官方STM32开发板(评估板、探索套件板、NUCLEO板)
【1】STM32 MCU开发板和硬件工具
【2】evaluation_development_board
2. MCU 结构


STM32系列芯片的资源包括:
- 少量的RAM
- 少量的ROM
- 看门狗
- DMA
- ADC、DAC
- 中断
- 定时器
- 内部晶振(准确度不高)
- uart、spi、I2c、can接口(串行接口、并行接口)

不同核心的STM32芯片具有不同的主频和储存资源:

3. MCU 和 MPU 的区别
MCU中集成了少量的RAM和ROM。

4. 一些概念
什么是看门狗 ?
在嵌入式系统中,看门狗(Watchdog)是一种重要的硬件或软件机制,用于监视系统的运行状态并在出现故障或异常情况时采取适当的恢复措施。
看门狗通常由一个独立的硬件电路实现,也可以通过软件模拟实现。它基于一个简单的概念:定期喂食。当系统正常运行时,看门狗会定期接收到来自CPU或其他监控模块的喂食信号(即重置信号)。如果看门狗在预设的时间间隔内没有接收到喂食信号,它会认为系统出现故障或异常,并采取相应的恢复措施,如系统复位。

什么是 DMA ?
DMA(Direct Memory Access)即直接存储器访问,是一种允许某些硬件子系统(如外设)直接访问系统内存的技术,而无需中央处理单元(CPU)的介入。
定义:DMA传输将数据从一个地址空间复制到另一个地址空间,提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。
作用:DMA技术主要用于解决大量数据转移过度消耗CPU资源的问题,使CPU能够更专注于其他操作,如计算和控制等。

什么是晶振 ?
时钟电路
什么是片内外设?
ADC、DAC、UART、SPI、I2C、CAN、USB、以太网、摄像头接口等。
软件协议、硬件协议、数据协议、通讯协议、通信协议
待续…
uart、usart、RS232、RS485的区别
待续…
RS232、RS422、RS485是什么?
串行通信接口标准。
对比:
| 特性 | RS-232 | RS-422 | RS-485 |
|---|---|---|---|
| 通信模式 | 点对点 | 单向多点 | 双向多点 |
| 信号类型 | 单端信号 | 差分信号 | 差分信号 |
| 最大传输距离 | 15 米 | 1200 米 | 1200 米 |
| 最大速率 | 115.2 kbps | 10 Mbps | 10 Mbps |
| 应用场景 | 短距离、单设备通信 | 长距离、单一发送设备 | 长距离、多设备通信 |
接口定义、接线方式:

PWM信号调制
待续…
5. STM32 最小系统
STM32的最小系统是指能让STM32单片机正常运行的最少且必须的硬件元件组成的系统。这个系统通常包括以下几个关键部分:
一、电源电路
STM32单片机的工作电压一般为1.8V~3.6V(不同型号可能有所不同,但3.3V是常见的供电电压)。为了确保电源的稳定性,通常会使用稳压芯片,如AMS1117-3.3,将5V电压转换为稳定的3.3V电压供给单片机。此外,电源电路中还会加入多个滤波电容,以去除电源中的杂波和干扰信号,保证单片机的稳定运行。
二、时钟电路
时钟电路是STM32单片机的“心脏”,为单片机提供运行的时钟信号。STM32通常有两组晶振:
- 高速晶振:一般为主时钟晶振,常见频率为8MHz(但可以通过内部倍频达到更高的工作频率)。这个晶振为单片机提供主时钟信号,使单片机能够高速运行各种程序和任务。
- 低速晶振:通常为RTC(实时时钟)时钟晶振,频率一般为32.768kHz。这个晶振为实时时钟提供精确的时钟信号,保证时间的准确记录。
晶振两端通常会连接电容,以起到滤波和稳定频率的作用。
三、复位电路
复位电路是单片机的“免疫系统”,当系统出现故障或混乱时,可通过复位让系统重新开始。STM32是低电平复位,通常有手动复位和上电复位两种方式:
- 手动复位:通过按键实现,当按下按键时,复位引脚接地为低电平,松开后恢复高电平,从而实现复位操作。
- 上电复位:利用电容的充放电特性,在上电瞬间,由于电容两端电压不能突变,复位引脚为低电平,随着电容充电完成,复位引脚变为高电平,单片机开始正常工作。
四、调试接口电路
调试接口电路是开发过程中不可或缺的部分,它方便开发者进行程序的下载和调试。STM32常用的调试下载方式有JTAG和SWD:
- JTAG:一种国际标准测试协议,主要用于芯片内部测试。标准的JTAG接口是4线接口,包括TMS(模式选择)、TCK(时钟)、TDI(数据输入)和TDO(数据输出)。
- SWD:一种和JTAG不同的调试模式,使用的调试协议也不一样。与JTAG相比,SWD接口简单,只需要2根线(SWDIO和SWCLK)即可实现调试和下载功能,节省I/O口和板子空间,且在高速模式下更加可靠。
五、启动电路
启动电路决定了单片机的启动方式。STM32有三种启动模式,由BOOT0和BOOT1引脚在复位时的状态决定:
- 从主Flash启动:最常见的启动方式,BOOT0为0,BOOT1为任意值。此时,代码存储在STM32的内置Flash中。
- 从系统存储器启动:BOOT0为1,BOOT1为0。此时,内置ROM的起始地址将被重映射到0x00000000地址,通常用于执行串口程序下载(ISP)。
- 从嵌入式SRAM中启动:BOOT0和BOOT1都为1。此时,代码从SRAM中启动,适合调试,但掉电后数据会丢失。
综上所述,STM32的最小系统由电源电路、时钟电路、复位电路、调试接口电路和启动电路组成。这些部分相互配合,共同为单片机的稳定运行提供了保障。
6.为什么使用 MCU?
- 廉价
- 低功耗
- 可复用(可编程)
7. 如何选型?
结合使用场景?
主频?
RAM和ROM的大小?
ADC、DAC数量?
UART数量?
功耗?
- 官网提供在线选型工具:
- 官方选型软件 安装:ST MCU Finder
- 查阅手册查看所有规格参数。



8. 如何使用STM32MCU芯片?
一、自己设计电路板
电路图设计?
电路设计工具?
设计步骤?
打印PCB板?
贴片?
编程、烧录?
调试测试?
二、购买官方开发板(或第三方开发板)
选择哪种板子?
- 第三方STM32开发板(正点原子、野火等)
- 官方STM32开发板(评估板、探索套件板、NUCLEO板)
【1】STM32 MCU开发板和硬件工具
【2】evaluation_development_board



9. 程序开发步骤
依次使用STM32Cube 系列软件:

STM32Cube 系列软件提供了:
- HAL(High Abstraction Layer)
- LL(Low Layer)
- Examples
- Readme files
STM32Cube 系列软件下载地址。
10. 硬件调试工具

11. STM32 H743 为例
【1】STM32H743概述
【2】STM32H743xI单片机 数据手册(描述、功能概述、引脚分配和定义、电气特性、封装等)
【3】STM32 H743手册、文档
12. STM32 H743 飞控
待续…
参考文献
【1】https://www.stmcu.com.cn
【2】https://www.doubao.com/chat
相关文章:
被裁20240927 --- 嵌入式硬件开发 STM32篇
人很容易原谅别人的错误但很难原谅别人的正确 1. 文档、手册、指南、资源2. MCU 结构3. MCU 和 MPU 的区别4. 一些概念什么是看门狗 ?什么是 DMA ?什么是晶振 ?什么是片内外设?软件协议、硬件协议、数据协议、通讯协议、通信协议u…...
留学生交流互动系统|Java|SSM|VUE| 前后端分离
【技术栈】 1⃣️:架构: B/S、MVC 2⃣️:系统环境:Windowsh/Mac 3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7 4⃣️:技术栈:Java、Mysql、SSM、Mybatis-Plus、VUE、jquery,html 5⃣️数据库可…...
C/C++ 数据结构与算法【图】 图+邻接矩阵+邻接表+DFS+BFS+最小生成树+最短路径+拓扑排序详细解析【日常学习,考研必备】带图+详细代码
一、图的定义 1)无向图,有向图,完全图 2)稀疏图,稠密图,网,邻接,关联 3)度 4)路径 5)连通图 6)权与网 7)子图 8࿰…...
Linux实验报告7-文件管理
目录 一:实验目的 二:实验内容 (1)查看/etc/inittab文件的权限属性,并指出该文件的所有者以及文件所属组群。 (2)新建文件test,设置文件权限为r--r-----。 (3)新建文件test2,设系统中有用户study和用户组studygr…...
RJ45网口模块设计
1、以太网概述及RJ45实物 2、常用网口信号介绍 3、RJ45网口布局布线要点分析 4、总结 1、变压器下面需要进行挖空处理,以免底下的铜引入干扰,(将多边形挖空区域的所在层设置为Multi-Layer多层) 2、为了更直观的看一个类中线的长…...
电子电器架构 --- 智能座舱HUD技术革新
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所谓鸡汤,要么蛊惑你认命,要么怂恿你拼命,但都是回避问题的根源&…...
嵌入式开发中的机器人表情绘制
机器人的表情有两种,一种是贴图,一钟是调用图形API自绘。 贴图效果相对比较好,在存储空间大的情况下是可以采用的。 自绘比较麻烦,但在资源和空缺少的情况下,也是很有用的。而且自绘很容易通过调整参数加入随机效果&…...
orm01
静态文件处理 静态文件:如:图片、音频、视频、css、js等静态文件的相关配置也在 项目名/项目名/settings.py 文件中进行配置 - 配置静态文件的访问路径STATIC_URL- 功能:通过哪个 url 地址找静态文件- 默认配置:STATIC_URL /sta…...
Maven 测试和单元测试介绍
一、测试介绍 二、单元测试 1)介绍 2)快速入门 添加依赖 <dependencies><!-- junit依赖 --><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>5.9…...
Postman接口测试03|执行接口测试、全局变量和环境变量、接口关联、动态参数、断言
目录 七、Postman 1、安装 2、postman的界面介绍 八、Postman执行接口测试 1、请求页签 3、响应页签 九、Postman的环境变量和全局变量 1、创建环境变量和全局变量可以解决的问题 2、postman中的操作-全局变量 1️⃣手动设置 2️⃣代码设置 3️⃣界面获取 4️⃣代…...
UE5 丧尸类杂兵的简单AI
A、思路 1、关卡初始化时,自动产生随机巡逻点,小兵到达后,去另一个随机巡逻点。 2、加入视力,发现主角后,不再巡逻,而开始追击主角并攻击。条件循环。 3、加入听力。主角的奔跑与射击会产生噪音…...
Linux字符设备驱动开发的三种方式(分析+对比+示例)
文章目录 一. 字符设备的驱动方法二. 三种方法的对比三. 开发环境四. 代码示例1. 传统设备驱动模型2. 总线设备驱动模型3. 设备树驱动模型 五. 相关链接 一. 字符设备的驱动方法 字符设备驱动 是指在I/O传输过程中以字节流进行读写操作的设备。典型的如LCD、蜂鸣器、SPI、触摸屏…...
C++设计模式之行为型模式概述,它们的目的与特点
行为型设计模式需要解决的问题 行为型设计模式主要关注对象之间的责任分配和交互。它们解决的问题包括: 对象之间的通信:如何让对象之间高效地通信,同时保持松耦合。算法的封装与复用:如何将算法或行为封装起来,使其…...
把Huggingface下载的arrow数据集转化为json格式
Arrow2json 使用默认的Huggingface路径 以allenai/tulu-3-sft-mixture数据集为例。 使用load_dataset即可: from datasets import load_dataset# 加载数据集 dataset load_dataset("allenai/tulu-3-sft-mixture")# 指定保存路径 output_dir "~/…...
复习打卡大数据篇——Hadoop YARN
目录 1.什么是yarn 2.yarn的三大角色 3.任务(MR)提交到YARN运行流程 4. 调度器Scheduler 5.YARN HA 高可用 1.什么是yarn YARN(Yet Another Resource Negotiator)是一个资源管…...
fpga系列 HDL:ModelSim显示模拟波形以及十进制格式数值
FPGA中使用数字滤波器时,可通过观察模拟波形更好地查看滤波效果。可以通过ModelSim中的波形格式设置来实现更直观的波形显示。 右键波形->Format-> Analog 效果 不同的数值格式显示:右键波形->Radix-> Decimal 效果 示例代码 ver…...
Linux 基本指令
目录 1.常见指令 1.1 ls指令 1.2 pwd指令 1.3 cd指令 1.4 touch指令 1.5 mkdir指令 1.6 rm和rmdir指令 1.7 man指令 1.8 cp指令 1.9 mv指令 编辑 1.10 cat指令 1.11 more指令 1.12 less指令 1.13 head指令 1.14.tail指令 1.15 时间相关的指令 1.16 cal…...
GO语言基础面试题
一、字符串和整型怎么相互转换 1、使用 strconv 包中的函数 FormatInt 、ParseInt 等进行转换 2、转换10进制的整形时,可以使用 strconv.Atoi、strconv.Itoa: Atoi是ParseInt(s, 10, 0) 的简写 Itoa是FormatInt(i, 10) 的简写 3、整形转为字符型时&#…...
要查询 `user` 表中 `we_chat_subscribe` 和 `we_chat_union_id` 列不为空的用户数量
文章目录 1、we_chat_subscribe2、we_chat_union_id 1、we_chat_subscribe 要查询 user 表中 we_chat_subscribe 列不为空的用户数量,你可以使用以下 SQL 查询语句: SELECT COUNT(*) FROM user WHERE we_chat_subscribe IS NOT NULL;解释: …...
小程序基础 —— 10 如何调试小程序代码
如何调试小程序代码 在进行项目开发的时候,不可避免需要进行调试,那么如何调试小程序呢? 打开微信开发者工具后,有一个模拟器,通过模拟器能够实时预览自己写的页面,如下: 在上部工具栏中有一个…...
Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...
Java毕业设计:WML信息查询与后端信息发布系统开发
JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息࿰…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
libfmt: 现代C++的格式化工具库介绍与酷炫功能
libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全:…...
LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)
在上一篇文章中,我们详细介绍了如何使用LLaMA-Factory框架对Qwen2-VL大模型进行微调,以实现人脸情感识别的功能。本篇文章将聚焦于微调完成后,如何调用这个模型进行人脸情感识别的具体代码实现,包括详细的步骤和注释。 模型调用步骤 环境准备:确保安装了必要的Python库。…...
