被裁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 如何调试小程序代码
如何调试小程序代码 在进行项目开发的时候,不可避免需要进行调试,那么如何调试小程序呢? 打开微信开发者工具后,有一个模拟器,通过模拟器能够实时预览自己写的页面,如下: 在上部工具栏中有一个…...
eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...
