草庐IT

【STM32入门】STM32基础理论知识

urnot二毛 2023-12-22 原文

STM32基础理论知识

001–什么是ARM处理器?

定义

ARM:32位处理器(一次处理32bit即4字节。处理速度更快,可调用的内存更大), 是英国Acorn有限公司设计的低功耗成本的第一款RISC微处理器。全称为Advanced RISC Machine(arm公司只卖IP,不生产)

8bit=1Byte,1KB=1024Byte=8*1024bit,1M=1024KB
​ RISC:精简指令集计算机,硬件设计得简单,复杂的功能用一段子程序来实现, 偏向小型低功耗高性能设备
​ CISC:复杂指令集计算机,如要求高性能高速度的x86计算机、大型计算机

常见的ARM处理器及其应用


带R:有实时操作系统

带F:支持浮点数运算

实时操作系统:中断到来后立刻终止其他任务响应你

非实时操作系统:如PC机,按下按钮不会立刻响应(游戏时,发送消息,不会关闭游戏甚至可能优先保障游戏的顺畅运行)

常用cortex系列

  • cortex-M0:低成本和简单性能(简单)

  • cortex-M3:性能效率(中端)

  • cortex-M4:有效的数字信号控制(高端)

ARM、单片机、嵌入式系统的区分

ARM微处理器

单片机/MCU/微控制器集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统

嵌入式系统:针对特殊任务的专用计算机系统,包括硬件(单片机的电路板卡)和软件(嵌入式操作系统),没有多余的功能。最大的目的是减小尺寸降低成本(电脑是全能的嵌入式系统)

002–什么是STM32?

定义

STM32系列专为要求高性能、低成本、低功耗的嵌入式应用设计的ARM Cortex®-M0,M0+,M3, M4和M7内核 。按内核架构分为不同产品:

主流产品:STM32F0、STM32F1、STM32F3
超低功耗产品:STM32L0、STM32L1、STM32L4、STM32L4+
高性能产品:STM32F2、STM32F4、STM32F7、STM32H7

ST是使用ARM Coretex系统做单片机的最早的公司,做的系列也很全,所以很多使用的大多都是ST公司的。也有很多其他公司使用arm内核

命名规范

BGA封装:单片机引脚一般较多时采用(一般大于200)

LQFP封装(常见)

003–电路基础知识

逻辑电平术语

电平:所谓电平,是指两功率或电压之比的对数,有时也可用来表示两电流之比的对数。电平的单位分贝用dB表示。常用的电平有功率电平和电压电平两类,它们各自又可分为绝对电平和相对电平两种。

  • 电平可以看作是一种比较,所以有高低之分,并不是0V就是低电平,5V、3.3V是高电平
  • 把电压值人为规定出两种状态,以用在数字(逻辑)电路中
  • 作用:传递信号
  • 软硬件结合的体现:硬件电路上的高电平在计算机系统中表示为1;低电平表现为0

输入高电压(Vih):逻辑门输入电平高于Vih时,认为输入电平为高电平
输出高电压(Vil):逻辑门输入电平低于Vil时,认为输入电平为低电平
输出高电压(Voh):逻辑门输出为高电平时,电压必须大于Voh
输出地电压(Vol):逻辑门输出为低电平时,电压必须小于Vol
阈值电平电压(Vol):介于高低电平之间的电压值

常见逻辑电平标准

TTL、CMOS、ECL、PECL、LVDS、LVPECL、RS232、RS422、RS485、CML、SSTL、HSTL等,还有用于高速的LVDS、GTL、PGTL、CML、HSTL、SSTL等。

TTL:晶体管-晶体管逻辑集成电路

  • 电流控制器件
  • TTL电路的速度快,传输延迟时间短(5-10ns),但是功耗大。
  • 为什么VOH大于VIH?
    输入过程中因电阻或其他损耗导致电压下降
  • 为什么TTL电平可以兼容5V和3.3V?
  • TTL输入脚悬空时内部默认高电平
  • TTL输出不能驱动CMOS输入

CMOS:互补对称金属氧化物半导体集成电路

  • 电压控制器件
  • CMOS电路的速度慢,传输延迟时间长(25- 50ns),但功耗低。CMOS电路本身的功耗与输入信号的脉冲频率有关,频率越高,芯片集越热。
  • COMS电路的供电电压在+5~+15V,当输出电压高于VDD-0.5V时为逻辑1,输出电压低于VSS+0.5V(VSS为数字地)为逻辑0
  • 当输入管脚高于VCC一定值且电流较大时,可能导致芯片烧毁。
  • LVCMOS可以与3.3V的LVTTL直接相互驱动。

STM32数据:

004–GPIO/IO口

GPIO:就是I/O口,为了凸显其功能强大,ST公司将其称作GPIO。几乎所有的I/O口都有其复用功能,且能同时作用(除作模拟输入功能时外)

  • 26/37/51/80 个I/O口(封装不同端口数不同),所有的I/O口都可以映象到16个外部中断(每个引脚都可由软件配置成输出(推挽、开漏)或输入(带或不带上拉或下拉))
  • 大部分端口兼容5V信号

输入

GPIO_Mode_AIN 模拟输入:模拟信号直接输入

GPIO_Mode_IN_FLOATING 浮空输入:数字信号直接输入

GPIO_Mode_IPU 上拉输入(常用):给I/O口基本的**(初始) **电平状态,在I/O口什么都没接时(I/O口)保持高电平状态(可以使I/O口同时做输入输出)

上拉电阻:连接到电源+极的电阻
下拉电阻:连接到电源-极的电阻

应用举例

使复位接口在复位键未按下时,保持高电平状态

使唤醒接口在唤醒键未按下时,保持低电平状态(不设置内部下拉是因为做PA0使用时会影响)

GPIO_Mode_IPD 下拉输入:同理

输出

GPIO_Mode_OUT_OD 开漏输出:传递高低电平信号,没有驱动能力(给高电平灯不亮)

GPIO_Mode_AF_PP 推挽输出(常用):有电流驱动能力(单片机有吸收和输出电流的能力)

005–存储器

特性对比

SRAM:性能成本高 断电丢失 (PC内存)

FLASH:大容量 数据不会因为断电而丢失(U盘和MP3

FLASH擦除

  • 每次写入前必须要清除数据 (以页的形式),定要先擦后写。
  • 每一个地址就是一个存储空间,可以存储一个16位的数据。每个页存1k,共计128K。1KB是1024字节,是8192位。每页是1024个地址,起始地址0x08000000
  • 擦除操作以页为单位,写操作则必须以16位宽度为单位,允许跨页写入。
  • STM32内置FL ASH擦或写时,必须打开外部/内部高速振荡器。
  • FLASH可多次擦写10万次,不可死循环擦写。
  • 擦写时要避开用户程序存储区的区域,否则会擦掉用户程序导致错误。
  • 擦除一页要10ms (对于1k大小的一页),比较慢。而且不能单个字节的擦写

存放

  • code(代码存储区):存放函数体的二进制代码。
  • RO-data(只读数据存储区)
  • RW-data(读写数据存储区)
  • ZI-data(零初始化数据区)
  • 栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量的值等。
  • 堆区(heap):一般由程序员分配释放,若程序员不释放,程序结束时可能由OS释放。
  • 全局变量、静态变量:初始化的全局变量和静态变量放在一块区域,未初始化的全局变量和和未初始化的静态变量在相邻的的另一块区域。程序结束后由系统自动释放。

    一开始,代码、常量、全局变量 都是下载到flash里的。然后程序开始运行后,全局变量就到sram里了,代码和常量还在flash里

006–倍频、预分频、后分频

倍频

倍频后一般供给CPU用(CPU架构——ARM和x86的构造),而ADC、定时器等不需要高频率,就需要分频器

倍频器一般是PLL(锁相环电路)

预分频器

预分频器一般与计数器连用。没有加预分频器前,输入10次计数器加1,加上预分频器后,输入20次计数器加1

后分频器

输入20次计数器计数为2,通过后分频器减为,效果跟预分频器一样但原理不同

007–低功耗和ADC

低功耗

  • stm32的低功耗模式分为三种模式:睡眠、停机、待机
  • 有一个电池接口VBAT为RTC和后备寄存器供电

ADC

  • 2个12位精度更高模数转换器,1us转换时间,多达16个输入通道 单片机中有16个I/O口可以设置用于读取模数转换后的模拟量电压值
    • 转换范围:0V~3.6V
    • 双采样和保持功能(可以同时采集两个通道 的数据并保持)
    • 扫描模式下,自动读取并刷新数据
    • 可以使用DMA操作(008)
    • 温度传感器读取单片机内部温度,可用于报警
      数字信号只能0V或者3.3V(VCC),内置ADC(转换成模拟信号)后才能读取到0V~3.3V之间的任意电压(数字信号是跳变的)

008–DMA

直接存储器访问
CPU助手:将读取到的数据存入SRAM,CPU可以做其他事,当需要数据时,CPU直接从SRAM里读取

  • 7通道DMA控制器
  • 支持的外设:定时器、ADC、SPI、I2C、USART

DMA的出现使设备与存储器、存储器与存储器之间的直接通信成为了可能

009–时钟、复位和电源管理

供电范围2.0~3.6

  • 可编程电压检测器(PVD):设置当电压小于XX时,复位

晶振:单片机的时钟,产生方波信号

  • 内嵌经出厂调校的8MHz的RC振荡器:给ARM内核提供的系统时钟

(RC振荡器:由内部电容电阻产生的振荡器)

  • 内嵌带校准的40KHz的RC振荡器:给RTC使用

  • 产生CPU时钟的PLL:倍频

(PLL锁相环:大多电子设备要正常工作,通常需要外部的输入信号与内部的振荡信号同步。一般的晶振由于工艺与成本原因,做不到很高的频率,故利用锁相环路就可以实现稳定且高频的时钟信号。如4M的外部晶振经过PLL分频成三份变为12M)

  • 带校准的32KHz的RC振荡器:外接晶振,给RTC使用


内部RC振荡电路等效电路图

外部晶振振荡器等效电路图

010–调试模式和定时器

调试模式

不用修改一次代码就得下载程序进单片机看效果

  • 串行单线调试(SWD)和JTAG接口

    SWD只需两个接口,很方便,常用;JTAG要20个接口

定时器

可以做到精准计时,减少CPU工作(同DMA)

  • 多达7个定时器
    • 3个16位(65535)定时器:输入经过分频后计数,一直记到65535或0
    • 1个16位高级定时器:用于电机控制,带死区控制和紧急刹车
    • 2个看门狗定时器(独立的和窗口型的)
    • 系统嘀嗒定时器:24位自减型计数器

通用定时器(TIMx)

TIM2、TIM3、TIM4

  • 可同步运行
  • 每个都有一个16位的自动加载递加/递减计数器、一个16位的预分频器、4个独立通道。每个通道都可用于输入捕获、输出比较、PWM和单脉冲模式输出
  • 每个定时器都有独立的DMA请求机制

高级控制定时器TIM1

看门狗

  • 作用:对CPU进行监控,当CPU电压过低或程序错误等意外,使单片机复位
  • 实现:程序定时在看门狗计时完成前发出指令,使其重新计数。若程序出现错误,则看门狗及时完成发出声音

独立看门狗

  • 基于一个12位的递减计数器、一个8位的预分频器
  • 内部独立的(可运行在停机和待机模式)40KHz的RC振荡器提供时钟,

窗口看门狗

  • 一个7位的递减计数器
  • 可以自由运行
  • 主时钟驱动

嘀嗒定时器

  • 作用于实时操作系统
  • 24位的递减计数器
  • 自动重加载功能(计数满后自动重装初值,初值可自定义)
  • 当计数器为0时产生一个可屏蔽系统中断(延时程序计时)
  • 可编程时钟源
  • CPU实现多任务处理:执行速度极快且不管是否执行完就跳到下一个

011–通信接口

  • 多达9个通信接口
    • 2个I2C接口(支持SMBus/PMBus)
    • 3个USART接口(支持ISO7816接口<国际通用接口协议>,LIN,IrDA接口(红外线接口)和调制解调控制)
    • 2个SPI接口(18M位/秒)
    • CAN接口(2.0B主动)
    • USB 2.0全速接口

I2总线

  • 两个I2C总线接口
  • 能够工作于多主模式(主动命令)或从模式,支持标准和快速模式(两种通信协议,快速模式发送速率更快)
  • 支持7位或10位寻址(使单片机区分设备进行通信),7位从模式时支持双从地址寻址。内置了硬件CRC发生器/校验器
  • 可以使用DMA操作并支持SMBus总线2.0版/PMBus总线
  • I2C总线是板级总线,连接线一般不超2米
  • I2C的数据线上理论上需要加2K的上拉电阻
  • 所有设备与单片机需要共地

通用同步/异步收发器USART

  • USART是通用同步/异步收发器(带同步时钟线USART _CK),而UART是通用异步收发器(没有同步时钟线)。最常用的是异步模式,同步模式很少用,所以二者区别不大。
  • USART只是一种协议方式,根据不同电平方式分为RS232和RS485等
  • 所有的USART接口都可以使用DMA操作

控制器区域网络CAN

  • 1个CAN总线
  • 没有主从设备的要求(可以是主,可以是从)
  • 位速度最高1M位/s
  • 11位标识
  • 29位扩展帧
  • 3个发送邮箱
  • 2个FIFO
  • 3级14个滤波器

CAN用于汽车、工业的智能设备通信、单元楼门铃

特点:通信速度快、距离远、复杂、稳定、自动查错(当发现有一个CAN设备出问题时,可以自动将其剔除,而不会影响其他设备通信)。

串行外设接口SPI

  • 两个SPI
  • 用于板级设备通信
  • 主从两种模式
  • 可全双工和半双工
  • 最大速度18M/s
  • 用3个预分频器来设置8中频率
  • 支持SD卡的读写模式
  • 支持DMA

特点:协议简单稳定、速度较快(不需要花时间寻址)

通用串行主线USB

  • 1个USB接口
  • 设备控制器
  • 支持全速2.0,12M位/s
  • 有待机和唤醒功能
  • 由内部PLL倍频器提供时钟
  • 时钟必须由外部高速晶振产生

作用:USB接口用于做PC机的从设备如鼠标、键盘、打印机之类。

012–CRC校验和芯片ID

CRC(循环冗余校验)计算单元

  • CRC用于数据正确性校验(使用一个固定的多项式发生器,即硬件电路计算)
  • 由一个32位的数据字产生
  • 可应用在FALSH检测(防止在读写的时候出错)
  • 可用于软件签名及对比

芯片ID

  • 96位编码,即24位十六进制数
  • 每个芯片编码是唯一的

作用:

  • 用来作为产品序列号
  • 用来作为密码,提高安全性
  • 用来保护程序的不可复制(保护尾款哈哈)

013–APB、AHB

  • AHB是高级高性能总线,用于CPU、DMA、DSP的通信
  • APB是外围总线,用于内部其他功能的通信
  • APB分为高速APB2和低速APB1,高速APB2最高频率是72MHz,低速APB的最高频率为36MHz。

014–接口定义

1~12脚

13~24脚

25~36脚

37~48脚

015–最小系统



烧录完后回到FLASH ISP模式

016–固件库


嵌套的向量式中断控制器NVIC:处理中断,用户自定义中断优先级

核心功能 重要功能 通信功能 附加功能

017–RTC(实时时钟)和后备寄存器

  • RTC和后备寄存器通过一个开关供电,在VDD有效时该开关选择VDD供电,否则由VBAT引脚供电。后备寄存器(10个16位的寄存器)可以用于在关闭VDD时,保存20个字节的用户应用数据。
  • RTC和后备寄存器不会被系统或电源复位源复位;当从待机模式唤醒时,也不会被复位。
  • 实时时钟具有一组连续运行的计数器,可以通过适当的软件提供日历时钟功能,还具有闹钟中断和阶段性中断功能
  • RTC的驱动时钟可以有多种输入:可以是一个使用外部晶体的32.768kHz的振荡器、内部低功耗RC振荡器或高速的外部时钟经128分频。
  • STM32的RTC只用一个32位计数器来计时,而不是用年月日时分秒的分组寄存器。
  • 通过设置可以让这个计数器1秒加1,从0-0XFFFFFFF大约可计时136年。
  • 时间起点一般设置为1970-01-01 00:00:00 ( 因现有函数如此定义)

有关【STM32入门】STM32基础理论知识的更多相关文章

  1. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  2. 软件测试基础 - 2

    Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功

  3. STM32读取串口传感器数据(颗粒物传感器,主动上传) - 2

    文章目录1.开发板选择*用到的资源2.串口通信(个人理解)3.代码分析(注释比较详细)1.主函数2.串口1配置3.串口2配置以及中断函数4.注意问题5.源码链接1.开发板选择我用的是STM32F103RCT6的板子,不过代码大概在F103系列的板子上都可以运行,我试过在野火103的霸道板上也可以,主要看一下串口对应的引脚一不一样就行了,不一样的就更改一下。*用到的资源keil5软件这里用到了两个串口资源,采集数据一个,串口通信一个,板子对应引脚如下:串口1,TX:PA9,RX:PA10串口2,TX:PA2,RX:PA32.串口通信(个人理解)我就从串口采集传感器数据这个过程说一下我自己的理解,

  4. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  5. 微信小程序开发入门与实战(Behaviors使用) - 2

    @作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors    1、什么是behaviors    2、behaviors的工作方式    3、创建behavior    4、导入并使用behavior    5、behavior中所有可用的节点    6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors    1、什么是behaviorsbehaviors是小程序中,用于实现

  6. 【Java入门】使用Java实现文件夹的遍历 - 2

    遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg

  7. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

  8. ruby - 我怎样才能更好地了解/了解更多关于 Ruby 的知识? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我最近开始学习Ruby,这是我的第一门编程语言。我对语法感到满意,并且我已经完成了许多只教授相同基础知识的教程。我已经写了一些小程序(包括我自己的数组排序方法,在有人告诉我谷歌“冒泡排序”之前我认为它非常聪明),但我觉得我需要尝试更大更难的东西来理解更多关于Ruby.关于如何执行此操作的任何想法?

  9. 【网络】-- 网络基础 - 2

    (本文是网络的宏观的概念铺垫)目录计算机网络背景网络发展认识"协议"网络协议初识协议分层OSI七层模型TCP/IP五层(或四层)模型报头以太网碰撞路由器IP地址和MAC地址IP地址与MAC地址总结IP地址MAC地址计算机网络背景网络发展        是最开始先有的计算机,计算机后来因为多项技术的水平升高,逐渐的计算机变的小型化、高效化。后来因为计算机其本身的计算能力比较的快速:独立模式:计算机之间相互独立。    如:有三个人,每个人做的不同的事物,但是是需要协作的完成。    而这三个人所做的事是需要进行协作的,然而刚开始因为每一台计算机之间都是互相独立的。所以前面的人处理完了就需要将数据

  10. 区块链入门教程(6)--WeBASE-Front节点前置服务安装 - 2

    文章目录1.任务背景2.任务目标3.相关知识点4.任务实操4.1安装配置JDK4.2启动FISCOBCOS4.3下载解压WeBASE-Front4.4拷贝sdk证书文件4.5启动节点4.6访问节点4.7检查运行状态5.任务总结1.任务背景FISCOBCOS其实是有控制台管理工具,用来对区块链系统进行各种管理操作。但是对于初学者来说,还是可视化界面更友好,本节就来介绍WeBASE管理平台,这是一款微众银行开源的自研区块链中间件平台,可以降低区块链使用的门槛,大幅提高区块链应用的开发效率。微众银行是腾讯牵头设立的民营银行,在国内民营银行里还是比较出名的。微众银行参与FISCOBCOS生态建设,一定

随机推荐