被裁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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/944740.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

被邀请出版Cursor教程书籍是什么体验?

本文目的 本次文章和大家分享一下被邀请出版书籍的经历、准备工作;准备工作大部分文字内容由Cursor完成。同时如果有后续、未来书籍真的出版,我会持续进行分享,欢迎关注我~ 事情来由 前几天我被出版社编辑联系,询问我是否可以合…

全新免押租赁系统助力商品流通高效安全

内容概要 全新免押租赁系统的推出,可以说是一场商品流通领域的小革命。想象一下,不再为押金烦恼,用户只需通过一个简单的信用评估,就能快速租到所需商品,这种体验简直令人惊喜!这个系统利用代扣支付技术&a…

upload-labs关卡记录9

还是上传一个一句话木马,提示文件类型不允许上传,随变改一改后缀名,发现就可以上传了,黑名单,这里经过尝试,常规的双写后缀,大小写,.htaccess,然后抓包,试试点…

高质量 Next.js 后台管理模板源码分享,开发者必备

高质量 Next.js后台管理模板源码分享,开发者必备 Taplox 是一个基于 Bootstrap 5 和 Next.js 构建的现代化后台管理模板和 UI 组件库。它不仅设计精美,还提供了一整套易用的工具,适合各种 Web 应用、管理系统和仪表盘项目。无论你是初学者还是…

路由器刷机TP-Link tp-link-WDR5660 路由器升级宽带速度

何在路由器上设置代理服务器? 如何在路由器上设置代理服务器? 让所有连接到该路由器的设备都能够享受代理服务器的好处是一个不错的选择,特别是当需要访问特定的网站或加速网络连接的时候。下面是一些您可以跟随的步骤,使用路由器…

【Linux/踩坑】Linux中启动eclipse或HDFS因JAVA_HOME设置报错

Linux中启动eclipse或hadoop因JAVA_HOME设置报错 eclipseHadoop eclipse 错误提示: A Java Runtime Environment (JRE) or Java Development Kit (JDK) must be available in order to run Eclipse. No Java virtual machine was found after searching the follo…

可信数据空间建设及应用参考指南(V1.0)

为贯彻国家数据局《可信数据空间发展行动计划(2024-2028 年)》,促进可信数据空间持续、快速和健康发展,相关行业专家组织编写《可信数据空间建设及应用参考指南(V1.0)》(以下简称《参考指南》&a…

Hive刷分区MSCK

一、MSCK刷分区 我们平时通常是通过alter table add partition方式增加Hive的分区的,但有时候会通过HDFS put/cp命令或flink、flum程序往表目录下拷贝分区目录,如果目录多,需要执行多条alter语句,非常麻烦。Hive提供了一个"…

【学生管理系统】权限管理之用户管理

目录 6. 权限管理 6.1 环境搭建 6.1.1 数据库 6.1.2 后端环境 6.2 用户管理 6.2.1 查询所有用户(关联角色) 6.2.2 核心1:给用户授予角色 6. 权限管理 6.1 环境搭建 6.1.1 数据库 权限管理的5张表的关系 添加4张表 # 权限表&…

PTPVT 插值说明

文章目录 PTPVT 插值说明 PTPVT 插值说明PVT Hermite插值PVT 三次多项式插值PT 插值Sin轨迹测试结果PVT Hermite插值结果PVT 三次多项式插值结果PT 插值结果 用户轨迹测试结果PVT Hermite插值结果PT 插值结果 PTPVT 插值说明 PT模式: 位置-时间路径插值算法。 PVT模…

EMNLP'24 最佳论文解读 | 大语言模型的预训练数据检测:基于散度的校准方法

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 点击 阅读原文 观看作者讲解回放! 作者简介 张伟超,中国科学院计算所网络数据科学与技术重点实验室三年级直博生 内容简介 近年来,大语言模型(LLMs)的…

[Day 10]有序数组的平方

今天这道题较之前的思路会好理解些,题目链接:977.有序数组的平方 题目描述: 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 示例 1: 输入&…

大O算法的魔法世界

引言 嘿,小朋友们,今天我们要一起探索一个神秘的魔法世界——大O算法。这听起来可能有点奇怪,但它其实是一种帮助我们理解计算机程序运行速度的方式。想象一下,我们有很多不同的魔法咒语(算法)&#xff0c…

UE(虚幻)学习(四) 第一个C++类来控制小球移动来理解蓝图和脚本如何工作

UE5视频看了不少,但基本都是蓝图如何搞,或者改一下属性,理解UE系统现有组件使用的。一直对C脚本和蓝图之间的关系不是很理解,看到一个视频讲的很好,我也做笔记记录一下。 我的环境是UE5.3.2. 创建UE空项目 我们创建…

细说STM32F407单片机IIC总线基础知识

目录 一、 I2C总线结构 1、I2C总线的特点 2、I2C总线通信协议 3、 STM32F407的I2C接口 二、 I2C的HAL驱动程序 1、 I2C接口的初始化 2、阻塞式数据传输 (1)函数HAL_I2C_IsDeviceReady() (2)主设备发送和接收数据 &#…

关于easy-es对时间范围查询遇到的小bug

前言:在使用easy-es之前作为一个小白的我只有es原生查询的基础,在自己通过查看官方文档自学easy-es遇到了一个挫折,其他的还好语法和MybatisPlus差不多,正以为我觉得很快就能入手,在对时间范围的判断就给我当头一棒&am…

Flink源码解析之:如何根据算法生成StreamGraph过程

Flink源码解析之:如何根据算法生成StreamGraph过程 在我们日常编写Flink应用的时候,会首先创建一个StreamExecutionEnvironment.getExecutionEnvironment()对象,在添加一些自定义处理算子后,会调用env.execute来执行定义好的Flin…

【代码随想录|完全背包问题】

518.零钱兑换|| 题目链接:518. 零钱兑换 II - 力扣(LeetCode) 这里求的是组合数,就是不强调元素排列的顺序,211和121是同一个数那种,要先遍历物品,这样的话我算出来的每个值才是按顺序121&…

一款汽车连接器(HSD(4+2))信号完整性仿真

下面是一款汽车连接器HSD(42) 的3D外形: 其爆炸图如下: 下面是Rosenboger同款产品的2D图: 其信号完整性参数如下: 下面介绍一下如何给上面的3D模型做信号完整性仿真。 在介绍仿真前先介绍一下上面的一些参数:上面的参数…

安卓/system/bin下命令中文说明(AI)

ATFWD-daemon:AT指令转发守护进程,用于将AT指令从应用层转发到调制解调器。 PktRspTest:数据包响应测试工具。 StoreKeybox:存储密钥盒工具,用于安全地存储加密密钥。 WifiLogger_app:WiFi日志记录应用&…