【STM32入门】:基于STM32的基础理论知识
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表示。常用的电平有功率电平和电压电平两类,它们各自又可分为绝对电平和相对电平两种。
输入高电压(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:晶体管-晶体管逻辑集成电路
输入过程中因电阻或其他损耗导致电压下降

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

STM32数据:
004–GPIO/IO口
GPIO:就是I/O口,为了凸显其功能强大,ST公司将其称作GPIO。几乎所有的I/O口都有其复用功能,且能同时作用(除作模拟输入功能时外)
输入
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擦除

存放

一开始,代码、常量、全局变量 都是下载到flash里的。然后程序开始运行后,全局变量就到sram里了,代码和常量还在flash里
006–倍频、预分频、后分频
倍频
倍频后一般供给CPU用(CPU架构——ARM和x86的构造),而ADC、定时器等不需要高频率,就需要分频器
倍频器一般是PLL(锁相环电路)
预分频器
预分频器一般与计数器连用。没有加预分频器前,输入10次计数器加1,加上预分频器后,输入20次计数器加1
后分频器
输入20次计数器计数为2,通过后分频器减为,效果跟预分频器一样但原理不同
007–低功耗和ADC
低功耗

ADC
数字信号只能0V或者3.3V(VCC),内置ADC(转换成模拟信号)后才能读取到0V~3.3V之间的任意电压(数字信号是跳变的)

008–DMA
直接存储器访问
CPU助手:将读取到的数据存入SRAM,CPU可以做其他事,当需要数据时,CPU直接从SRAM里读取
DMA的出现使设备与存储器、存储器与存储器之间的直接通信成为了可能
009–时钟、复位和电源管理
供电范围2.0~3.6
晶振:单片机的时钟,产生方波信号
(RC振荡器:由内部电容电阻产生的振荡器)
内嵌带校准的40KHz的RC振荡器:给RTC使用
产生CPU时钟的PLL:倍频
(PLL锁相环:大多电子设备要正常工作,通常需要外部的输入信号与内部的振荡信号同步。一般的晶振由于工艺与成本原因,做不到很高的频率,故利用锁相环路就可以实现稳定且高频的时钟信号。如4M的外部晶振经过PLL分频成三份变为12M)
内部RC振荡电路等效电路图
外部晶振振荡器等效电路图:
010–调试模式和定时器
调试模式
不用修改一次代码就得下载程序进单片机看效果

SWD只需两个接口,很方便,常用;JTAG要20个接口
定时器
可以做到精准计时,减少CPU工作(同DMA)
通用定时器(TIMx)
TIM2、TIM3、TIM4
高级控制定时器TIM1
看门狗
独立看门狗
窗口看门狗
嘀嗒定时器

011–通信接口
I2总线
通用同步/异步收发器USART
控制器区域网络CAN
CAN用于汽车、工业的智能设备通信、单元楼门铃
特点:通信速度快、距离远、复杂、稳定、自动查错(当发现有一个CAN设备出问题时,可以自动将其剔除,而不会影响其他设备通信)。
串行外设接口SPI
特点:协议简单稳定、速度较快(不需要花时间寻址)
通用串行主线USB
作用:USB接口用于做PC机的从设备如鼠标、键盘、打印机之类。
012–CRC校验和芯片ID
CRC(循环冗余校验)计算单元

芯片ID
作用:
013–APB、AHB
014–接口定义
1~12脚
13~24脚
25~36脚
37~48脚
015–最小系统
烧录完后回到FLASH ISP模式
016–固件库
嵌套的向量式中断控制器NVIC:处理中断,用户自定义中断优先级
核心功能 重要功能 通信功能 附加功能