当前位置: 首页 > news >正文

被裁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-232RS-422RS-485
通信模式点对点单向多点双向多点
信号类型单端信号差分信号差分信号
最大传输距离15 米1200 米1200 米
最大速率115.2 kbps10 Mbps10 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&#xff0…...

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&#xff09;介绍 2&#xff09;快速入门 添加依赖 <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、关卡初始化时&#xff0c;自动产生随机巡逻点&#xff0c;小兵到达后&#xff0c;去另一个随机巡逻点。 2、加入视力&#xff0c;发现主角后&#xff0c;不再巡逻&#xff0c;而开始追击主角并攻击。条件循环。 3、加入听力。主角的奔跑与射击会产生噪音&#xf…...

Linux字符设备驱动开发的三种方式(分析+对比+示例)

文章目录 一. 字符设备的驱动方法二. 三种方法的对比三. 开发环境四. 代码示例1. 传统设备驱动模型2. 总线设备驱动模型3. 设备树驱动模型 五. 相关链接 一. 字符设备的驱动方法 字符设备驱动 是指在I/O传输过程中以字节流进行读写操作的设备。典型的如LCD、蜂鸣器、SPI、触摸屏…...

C++设计模式之行为型模式概述,它们的目的与特点

行为型设计模式需要解决的问题 行为型设计模式主要关注对象之间的责任分配和交互。它们解决的问题包括&#xff1a; 对象之间的通信&#xff1a;如何让对象之间高效地通信&#xff0c;同时保持松耦合。算法的封装与复用&#xff1a;如何将算法或行为封装起来&#xff0c;使其…...

把Huggingface下载的arrow数据集转化为json格式

Arrow2json 使用默认的Huggingface路径 以allenai/tulu-3-sft-mixture数据集为例。 使用load_dataset即可&#xff1a; from datasets import load_dataset# 加载数据集 dataset load_dataset("allenai/tulu-3-sft-mixture")# 指定保存路径 output_dir "~/…...

复习打卡大数据篇——Hadoop YARN

目录 &#xff11;.什么是yarn &#xff12;.yarn的三大角色 &#xff13;.任务&#xff08;MR&#xff09;提交到YARN运行流程 4. 调度器Scheduler 5.YARN HA 高可用 &#xff11;.什么是yarn YARN&#xff08;Yet Another Resource Negotiator&#xff09;是一个资源管…...

fpga系列 HDL:ModelSim显示模拟波形以及十进制格式数值

FPGA中使用数字滤波器时&#xff0c;可通过观察模拟波形更好地查看滤波效果。可以通过ModelSim中的波形格式设置来实现更直观的波形显示。 右键波形->Format-> Analog 效果 不同的数值格式显示&#xff1a;右键波形->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进制的整形时&#xff0c;可以使用 strconv.Atoi、strconv.Itoa&#xff1a; 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 列不为空的用户数量&#xff0c;你可以使用以下 SQL 查询语句&#xff1a; SELECT COUNT(*) FROM user WHERE we_chat_subscribe IS NOT NULL;解释&#xff1a; …...

小程序基础 —— 10 如何调试小程序代码

如何调试小程序代码 在进行项目开发的时候&#xff0c;不可避免需要进行调试&#xff0c;那么如何调试小程序呢&#xff1f; 打开微信开发者工具后&#xff0c;有一个模拟器&#xff0c;通过模拟器能够实时预览自己写的页面&#xff0c;如下&#xff1a; 在上部工具栏中有一个…...

iOS 集成网易云信IM

云信官方文档在这 看官方文档的时候&#xff0c;版本选择最新的V10。 1、CocoPods集成 pod NIMSDK_LITE 2、AppDelegate.m添加头文件 #import <NIMSDK/NIMSDK.h> 3、初始化 NIMSDKOption *mrnn_option [NIMSDKOption optionWithAppKey:"6f6568e354026d2d658a…...

1.测试过程之需求分析和测试计划

测试基础 流程 1.分析测试需求 2.编写测试计划 3.设计与编写测试用例 4.执行测试 5.评估与总结 测试目标 根据测试阶段不同可分为四个主要目标&#xff1a;预防错误&#xff08;早期&#xff09;、发现错误&#xff08;开发阶段&#xff09;、建立信心&#xff08;验收阶段&a…...

HTML Day03

Day03 0. 引言1. CSS1.1 CSS的3种使用方法1.2 内联样式1.3 内部样式表1.4 外部CSS文件 2. 图像3. 表格3.1单元格间距和单元格边框 4. 列表4.1 有序表格的不同类型4.2 不同类型的无序表格4.3 嵌套列表 5. 区块6. 布局6.1 div布局6.2 表格布局 0. 引言 HELLO ^ _ ^大家好&#xf…...

在win10/11下Node.js安装配置教程

下载安装 官网链接https://nodejs.org/zh-cn 下载好以后双击打开&#xff0c;点击下一步 勾选&#xff0c;然后下一步 选择路径、下一步 下一步 配置环境 找到我们安装的文件夹&#xff0c;创建两个文件夹 node_global node_cache 在CMD中配置路径 npm config set p…...

阿里云服务器邮件发送失败(dail tcp xxxx:25: i/o timeout)因为阿里云默认禁用 25 端口

最近在测试发送邮件的功能&#xff0c;发现了一个奇怪的问题&#xff0c;同样的 docker 镜像&#xff0c;在本地跑起来是可以正常发送邮件的&#xff0c;但是在阿里云的服务器上跑&#xff0c;就会报错 i/o timeout。 排查了一圈发现&#xff0c;原来是阿里云的操作&#xff0…...

Jetson Orin Nano - SONY imx415 camera驱动开发

目录 前言: 调试准备工作: 修改内核默认打印等级 一、imx415驱动开发 1、硬件接线 2、设备树修改 2.1 创建 tegra234-p3767-camera-p3768-imx415-C-4lane.dtsi 文件 2.2 tegra234-p3767-camera-p3768-imx415-C-4lane.dtsi 添加到设备树 2.3 编译设备树 3、imx415驱动…...

Redis最佳实践——安全与稳定性保障之连接池管理详解

Redis 在电商应用的连接池管理全面详解 一、连接池核心原理与架构 1. 连接池工作模型 #mermaid-svg-G7I3ukCljlJZAXaA {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-G7I3ukCljlJZAXaA .error-icon{fill:#552222;}…...

Linux 1.0.4

父子shell linux研究的就是shell 打开两个窗口就是两个shell 终端的软件有很多 bash也是一个软件 我们在terminal里面再打开一个bash&#xff0c;然后再次使用ps命令发现多出来一个bash&#xff0c;之后点击exit只是显示了一个exit&#xff0c;这个只是退出了在terminal中打开…...

第十四章 MQTT订阅

系列文章目录 系列文章目录 第一章 总体概述 第二章 在实体机上安装ubuntu 第三章 Windows远程连接ubuntu 第四章 使用Docker安装和运行EMQX 第五章 Docker卸载EMQX 第六章 EMQX客户端MQTTX Desktop的安装与使用 第七章 EMQX客户端MQTTX CLI的安装与使用 第八章 Wireshark工具…...

Cursor奇技淫巧篇(经常更新ing)

Dot files protection &#xff1a;Cursor当开启了Agent模式之后可以自动帮我们写文件&#xff0c;但是一般项目中的一些配置文件&#xff08;通常以.开头的&#xff09;都是非常重要性&#xff0c;为了防止Cursor在运行的过程中自己修改这些文件&#xff0c;导致风险&#xff…...