单片机最小系统着实让人着迷

2023-05-16

单片机最小系统着实让人着迷

4029e5a7fb6b3314de2bc1463109a8aa.png

///插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程,想要的同学找我拿就行了免費的,私信我就可以哦~点我头像黑色字体加我地球呺也能领取哦。最近比较闲,带做毕设,带学生参加省级或以上比赛///ca3f2624133d59de04defd9b58d6740e.png

STM32F103RCT6:

STM32F103RCT6是一种嵌入式-微控制器的集成电路(IC),32位 Cortex-M3内核处理器,速度是72MHz,程序存储器容量是256KB,程序存储器类型是FLASH,RAM容量是48K,封装LQFP64。

ec888e0c31c5c16c25b90401f5adee2e.png

41f404d826f0dfaf73bfad315a3bbede.png

STM32单片机命名规则:

ef9f5e2bb9aca6ab9d6d7827e01b62c5.png

STM32单片机最小系统:

所谓单片机最小系统,就是让单片机能够正常运行,最少且必须的器件所组成的系统。

单片机最小系统上电之后,单片机可以正常复位,下载程序,除此之外没有其他任何功能。

在最小系统保证正确的基础上,可以依次添加其他功能模块或器件,使之单片机具有实际功能。

STM32单片机最小系统包括一个复位电路和一个时钟电路,如图1所示。

图中复位电路使用的是上电复位电路,STM32单片机NRST引脚输入低电平,则发生复位。

5df6a31215206ae867abfb627b8639a5.png

图1 STM32F103单片机最小系统

电源引脚:

VDD是单片机的数字电源正极,VSS是数字电源负极,共有5个VDD引脚,5个VSS引脚。VDDA是单片机的模拟电源正极,负责给内部的ADC、DAC模块供电,VSSA是模拟电源负极。

还有一个电源引脚,就是VBAT,BAT就是Battery(电池),这个引脚用来连接电池的正极的。STM32带RTC功能(实时时钟),所以有VBAT引脚。

原理图上预留了一个CR1220纽扣锂电池,当主电源供电存在的情况下,由系统中的VCC3.3给VBAT供电;

当主电源断电之后,由CR1220纽扣电池给STM32自带的RTC模块供电,从而能够保证实时时钟模块在主电源掉电的情况下还能够正常工作。

但是这样设计的话,这里有一个矛盾需要解决。如果VBAT引脚直接与VCC3.3和CR1220连接的话,会存在下面问题:

1、当电池电压高于3.3V,电池就会输出电流到AMS1117,使得芯片发烫,还会很快消耗电池电量。

2、如果电池电压低于3.3V,AMS1117产生的3.3V,就会给电池充电,而这种CR1220电池是不能够充电的。

为了解决上面问题,我们将VBAT引脚的供电电路设计如下:

cb936d16d3a6e824d5a6cb36ac8aab04.png

D1防止电池的电流流向AMS1117,D2防止AMS1117产生的3.3V流向电池。

之所以这样设计,用的就是“二极管的单向导通性”。

正常产品设计的时候,每个电源引脚旁边,最好放置一个0.1uF的电容滤波,用来滤除电源的噪声杂波。

复位引脚NRST:

复位就是重启。STM32复位引脚是低电平复位,正常工作状态,复位引脚是高电平。

1b6a2b6004734ddc32a98e2ed689d228.png

单片机的置位和复位,其目的都是为了把电路初始化到一个确定状态。复位时在单片机内部单片机是将存储设备和一些寄存器装入生产厂商预设的一个值。

一般来说,单片机复位电路的作用是把一个状态机初始化到一个空的状态。

单片机实现上电复位的原理:

在复位引脚NRST上外接电容和电阻。

当复位电平(低电平)持续两个机器周期以上时复位有效,系统上电后由于电容的充电,会保持一段时间的低电平来使单片机复位。

刚上电,电容两端电压为0,即低电平复位,RC电路有个充电曲线(即电容两端电压变化曲线),单片机识别外部电平有一个连接电压,保证rc电路电容电压充到单片机临界电压的时间在两个机器周期以上就能满足单片机复位条件;

当3.3V电源加到VCC3.3时,RC电路导通,NRST与地的电位差为电容与地的电位差。NRST与地的电位差只有电容充电完毕后才会达到3.3V,所以在电容的充电过程中,给芯片引脚的信号都是低电平。

根据RC电路充电方程式V(t)=U+A*e-(t/RC),只要合理的选择好R跟C的值就可以保证充电时间大于芯片复位所要求的时间。我们一般R选择10K电阻,C选择0.1uF电容。

晶振引脚:

STM32有两组晶振,一组用来给单片机提供主时钟(5:OSC_IN,6:OSC_OUT),主时钟晶振使用8MHz的晶振(为了程序内部倍频方便,一般选用8MHz的晶振)。

一组用来给RTC提供时钟(3:OSC32_IN,4:OSC32_OUT),RTC时钟晶振,需要连接32.768K的晶振,关于为什么要用32.768KHz,大家可以去百度了解一下哈。

实际应用中,如果不用RTC功能的话,RTC的晶振不必连接。

STM32的时钟电路又分为内时钟和外时钟两种模式。

外部时钟是在OSC_IN和OSC_OUT之间加上一个晶振,单片机内部振荡器便能产生自激震荡,产生时钟信号,在晶振的两侧加上20~30pF的瓷片电容起到了微调时钟频率的作用,让频率更加稳定。

内部时钟是STM32内部有时钟产生,所以如果不用外部晶振的话,也可以不用连接,内部时钟是用芯片内部振荡电路,精度不高,温漂也较大,不需要外部振荡器件。

3e03f817349073d75944217babfe367d.png

BOOT引脚:

STM32有两个BOOT引脚,分别是BOOT0和BOOT1,这两个引脚的高低电平,决定了单片机的启动方式和运行方式。

2a50112bf167f844a1b91d02b7b2984d.png

第一种(BOOT1=X,BOOT0=0)启动方式是最常用的用户FLASH启动。默认启动方式。

第二种(BOOT1=0,BOOT0=1)启动方式是系统存储器启动方式。STM32中自带的BootLoader(就是通常说的ISP程序)就是在这种启动方式中,如果出现程序硬件错误的话可以切换BOOT0=1到该模式下重新烧写Flash即可恢复正常。BootLoader所在区域的内容在芯片出厂后没有人能够修改或擦除,即它是一个ROM区。

第三种(BOOT1=1,BOOT0=1)启动方式是STM32内嵌的SRAM启动。该模式用于调试。

aec32e023e604d4d08554d683ca2e245.png0d80a400e1d364492ca9aee832b89055.png

一般我都是将BOOT0和BOOT1接地。

上面就是最小系统的全部内容,当然只有上面的部分还不行,一般最小系统还包括下面几部分:

电源电路:

因为STM32单片机一般都是3.3V供电,而生活中一般常见的都是5V电源(电脑的USB口,手机充电器,移动电源...),所以一般使用AMS1117-3.3V稳压电源芯片将5V降压为3.3V,该芯片的封装一般为SOT223。

301efd44c3390e0d2a6b6699b5ab7442.png

下载电路:

当然,除了上面几部分以为,还需要一个下载电路,STM32的下载方式有如下几种:

(1)串口下载:使用串口下载需要单片机内有相应的程序的支持,而系统存储器中就放了这么一段程序,由ST在生产线上写入,用于通过可用的串行接口对闪存存储器进行重新编程。(在系统存储器启动模式下下载,因为在厂家提供的BootLoader中,提供了串口下载程序的固件,可以通过这个BootLoader将程序下载到系统的Flash中。程序烧录在FLASH)。

注意:使用此种方式需要BOOT0=1,即需要有外部电路支持才可以实现串口下载。

(2)JLINK或者STLINK下载

一般我们使用JTAG或者SWD模式下载程序。

推荐使用SWD模式下载,SWD模

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单片机最小系统着实让人着迷 的相关文章

  • C语言_字符串转数字

    C语言 字符串转数字 程序实现基础算法与思想 xff1a 1 0 gt 1 字符1减字符0得到数字1 2 0 gt 2 9 0 gt 9 即 xff1a 数字字符 0 gt 对应的数字 xff08 注意 xff1a 只能得到1 9 xff0
  • linux复习2 -- 文件权限、修改文件权限(用chmod)、常用命令

    1 文件权限 对于一个文件而言 xff0c 操作它 的用户可分为三类 xff1a 所有者 同组用户 其他用户 xff1b u user 表示文件属主的访问权限 xff1b g group xff1a 表示文件同组用户的访问权限 xff1b
  • C++1-C语言和C++的区别

    一 C语言与C 43 43 的区别 1 头文件 xff1a C 43 43 xff1a span class token macro property span class token directive hash span span cl
  • BW:LO数据源初始化步骤(精简版)

    首先在r3上删除 setup table xff0c 然后再填充 setup table xff08 锁定凭证 xff09 xff0c 同时 xff0c 在bw做无数据的初始化 xff0c 最后在bw做full load
  • C++3--构造函数、冒号语法

    一 构造函数 1 为什么要有这个概念 xff1a 例如下面的代码 xff0c 对于Table类 xff0c 可以通过t Set公有的方法给对象设置内容 xff0c 但是如果每次创建对象都调用该方法设置信息 xff0c 就会有点麻烦 xff0
  • c/c++语言面试题目整理

    1 static有什么用途 xff1f 在C语言中 xff0c static主要定义全局静态变量 xff0c 定义局部静态变量 xff0c 定义静态函数 限制变量的作用域 xff0c 设置变量的存储域 static 关键字主要有两种作用 x
  • c语言宏定义一个MAX函数

    1 span class token macro property span class token directive hash span span class token directive keyword define span sp
  • C++ -- 异常:try、throw、catch

    异常 申请内存的时候 xff0c 内存不够用 空间配置器申请失败 xff0c 不做处理 拷贝时内存错误 除数分母不能为0 等情况 会抛出异常 try throw catch 1 使用示例 1 xff09 除数为零 xff0c 情况 未处理情
  • C++ -- 笔试题

    1 下列对派生类的描述中错误的说法是 D A 派生类至少有一个基类 B 派生类可作为另一个派生类的基类 C 派生类除了包含它直接定义的成员外 xff0c 还包含其基类的成员 D 派生类所继承的基类成员的访问权限保持不变 2 当派生类中有和基
  • Linux 用户切换、修改用户名、修改密码

    一 用户切换 34 34 xff1a 普通用户提示符 34 34 xff1a root用户提示符 1 普通用户到root 方式一 xff1a 命令 xff1a su 然后输入root密码 此种方式只是切换了root身份 xff0c 但She
  • C++中的.和::和:和->的区别

    在学习C 43 43 的过程中我们经常会用到 和 和 xff1a 和 gt xff0c 在此整理一下这些常用符号的区别 1 A B则A为对象或者结构体 xff1b 2 A gt B则A为指针 xff0c gt 是成员提取 xff0c A g
  • AirSim学习日志 5-LQR实现无人机轨迹跟踪

    1 LQR控制器算法原理推导 1 1 状态反馈控制 连续线性系统的状态空间表示为 x
  • 英语常用短语

    1 xff0e 经济的快速发展 the rapid development of economy 2 xff0e 人民生活水平的显著提高 稳步增长 the remarkable improvement steady growth of pe
  • PX4进入系统控制台以及运行程序

    这里提供进入控制台两种办法 1 运行 Tools mavlink shell py dev ttyACM0 是我进入Px4系统控制台的命令 xff0c 进入之后应该是这样 Pixhawk src Firmware Tools mavlink
  • 哈哈,终于知道CSDN怎么改头像了

    话说之前一直郁闷 xff0c 说改头像的功能还没修好 xff0c 一直说服务器错误 今天偶尔发现 xff0c 右上角有个设置 xff0c 原来在这里可以改 我还发了几封邮件给CSDN的admin xff0c 居然只知道道歉 xff0c 不告
  • Hello Sky! pixhawk第一个例程学习解读

    学习px4的第一个程序 xff0c 这个例子作为官方给出解释的例程 xff0c 对于新手上手来说 xff0c 是很好的范例 接下来我对照程序源码 xff08 已经经过自己的修改和添加注释 xff09 进行讲解 1 PX4 INFO是标准的L
  • ShadowSSDT Hook

    ShadowSSDT表的获取 这里的ShadowSSDT表的获取是通过函数KeAddSystemServiceTable来获取的 使用这个函数的原因 xff1a 1 这个函数是已经导出的 xff0c 可以在代码中直接使用 2 这个函数里面使
  • 2013&2014

    2013总结 2013 毕业了 xff0c 算是正式工作半年 xff0c 2013年7月开始 xff0c 算是我的生活 xff0c 工作之外的时间都是自己的 一 收获 1 压力测试 差不多算是一个月的时间 xff0c 疯狂的一个月 xff0
  • BCTF总结

    缘由 上周 xff0c 我们小组Sigma参加了 百度杯 BCTF比赛 xff0c 经历了难忘的双休 xff0c 这次的BCTF跟以前参加的国内类似的安全比赛有些不同 xff0c 时间只有48小时 xff0c 题目不多 xff0c 但难度大
  • BCTF_海报探秘(300)

    这个题目来自上周的BCTF比赛 xff0c 题目是海报探秘 xff08 300 xff09 xff0c 一张png图片中隐藏了KEY xff0c 解出KEY xff0c 具体报告 xff0c 请下载 xff1a http download

随机推荐

  • 博客转移

    最近好久不来CSDN了 xff0c 自己搭建了一个博客 欢迎各位去新博客留言 http www l0g1n cn 以前学习汇编的博客 http www asmedu net blog user usermain jsp neighborId
  • 《Windows程序设计》之BLOKOUT1

    LRESULT CALLBACK WndProc HWND hwnd UINT message WPARAM wParam LPARAM lParam static BOOL fBlocking fValidBox static POINT
  • 天猫抢红包小工具源码

    时间很仓促 xff0c 写的很乱 xff0c 也就能用明天一天了 主要还是学习这个过程 include lt Windows h gt include lt stdio h gt include lt iostream gt include
  • vs2010开发qt程序debug正常,release出错

    在debug模式下 xff0c 配置的动态链接库是qtmaind lib QtGuid4 lib QtCored4 lib 这些链接库 xff0c 在release模式下是不适用的 xff0c 进入到qt的目录下 xff0c 发现了有一些不
  • cout与wcout

    一直以来只知道有cout用来输出 xff0c 今天用cout输出wchar时出现问题了 xff0c 输出结果是一段地址 xff0c 才发现了wcout的存在 使用wcout输出中文时 xff0c 又出现问题 xff0c 中文输出不了 xff
  • (极力推荐)BW:How to load and generate a custom hierarchy in SAP Business Warehouse (SAP BW) without using flat files

    这篇文章 xff0c 真是救了哥 xff0c 所以非常感谢这位作者 你看 xff0c 人家也是 2011 年 2 月 3 号才写的 xff0c 量身打造 xff0c 多好的人 xff0c 刚好赶上我了 PS xff1a 前段时间设计的文本抽
  • 主引导记录(MBR)信息分析与获取

    前段时间在安装黑苹果时 xff0c 发现一个问题 xff0c 电脑在启动时 xff0c 会找激活分区 xff0c 如果没有找到 xff0c 那就启动不起来 那能否写个小程序读取一下MBR信息 xff0c 把激活分区换成其它 xff0c 搞点
  • Duilib登录窗口

    先上效果图 xff08 自己感觉还不错 xff09 xff1a 功能不完善 xff0c 一是为了熟悉xml的写法 xff0c 手写 xff0c 不建议使用编辑器 xff0c 二了为了理顺程序的流程 xff0c 加入了部分注释 xml文件 l
  • React框架制作移动端H5可拖拽的悬浮图标

    一 前言 在跟需求方对接研发的需求 xff0c 人家说要做一个悬浮在页面的图标 xff0c 点击完截图然后进入一个新页面 xff0c 填完一些数据 xff0c 提交给接口 那么问题来了 xff0c 怎么制作一个悬浮框 xff0c 还是可拖拽
  • GIT回退到指定版本的两种方法(reset/revert)

    实现多人合作程序开发的过程中 xff0c 我们有时会出现错误提交的情况 xff0c 此时我们希望能撤销提交操作 xff0c 让程序回到提交前的样子 xff0c 本文总结了两种解决方法 xff1a reset revert 命令特点reset
  • W: GPG 错误:http://ppa.launchpad.net lucid Release: 由于没有公钥,无法验证下列签名: NO_PUBKEY FAF69C646FF368B7的问题

    在安装更新时 xff0c 即在运行 xff0c 命令行sudo apt get update 或者运行更新管理器的时候 xff0c 出现W GPG 错误 xff1a http ppa launchpad NET lucid Release
  • Ubuntu操作系统下Pixhawk原生固件PX4的编译方法

    在Ubuntu上搭建环境相对简单许多 xff0c 按照PX4中文维基官网的教程即可 工具链安装 权限设置 把用户添加到用户组 dialout xff08 如果这步没做 xff0c 会导致很多用户权限问题 xff09 span class h
  • Tegra TK1中文输入法出错解决

    输入 xff1a ibus daemon drx
  • ubuntu16.0.4查看内存实时动态

    1 命令行输入 xff1a top 2 安装命令如下 xff1a sudo apt get install htop 安装完后 xff0c 直接输入命令 xff1a htop
  • xsense免注册资料网址

    http www avicom cn
  • loam中imu消除重力加速度的数学推导

    最近在看loam的源码发现里面有一段关于imu消除重力加速度的源码 xff0c 刚开始看不明白后来终于搞清楚了 xff0c 欢迎大家批评指正 要理解这个问题首先得明白欧拉角到旋转矩阵的变换 先上图 此图描述的是先绕X xff0c 再绕Y x
  • rc=20 > Connect to SAP gateway failed

    这种错误 xff0c 我是在一台用户的电脑上碰到的 xff0c 解决方案很简单 xff1a 把Computer Name换成英文 汗了许久
  • 循环结构

    循环结构 while循环 while是最基本的循环 xff0c 它的结构为 xff1a 只要布尔表达式为true xff0c 循环就会一直执行下去 我们大多数情况是会让循环停止下来的 xff0c 我们需要一个让表达式失效的方式来结束循环 少
  • 社会闲散人士或者普通大学生想走嵌入式方向该怎么学比较有效

    社会闲散人士或者普通大学生想走嵌入式方向该怎么学比较有效 先说观点 1这几年嵌入式开发的薪水已经非常高了 我们实验室做嵌入式的学长 xff0c 年薪平均30w以上 2嵌入式开发的竞争力很小 相比算法等 3嵌入式开发薪水的高低与学校的好坏挂钩
  • 单片机最小系统着实让人着迷

    单片机最小系统着实让人着迷 插播一条 xff1a 我自己在今年年初录制了一套还比较系统的入门单片机教程 xff0c 想要的同学找我拿就行了免費的 xff0c 私信我就可以哦 点我头像黑色字体加我地球呺也能领取哦 最近比较闲 xff0c 带做