【STM32知识点】STM32基础知识总结_stm32基础知识

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

目录

【认识STM32】

【GPIO外设】

一、GPIO的八种工作模式

二、总结在STM32中选用IO模式

【RCC时钟】

【NVIC是嵌套向量中断控制器】

一、优先级定义

 二、优先级分组

【EXTI外部中断/事件控制器】

【SysTick系统定时器】

【通讯的基本概念】

一、串行通讯与并行通讯

 二、全双工、半双工及单工通讯

三、同步通讯与异步通讯

四、通讯速率

【串口通讯】

一、物理层

二、协议层

【I2C】

一、物理层

二、协议层

【SPI】

一、SPI物理层

 二、协议层

【DMA直接存储区访问】

【常用存储器】

一、存储器种类

二、易失性存储器——RAM 存储器

三、非易失性存储器

【ADC】

【DAC】

【TIM】

一、定时器的分类

【IWDG独立看门狗/WWDG窗口看门狗】

一、独立看门狗定义及使用场景

二、窗口看门狗定义及使用场景

三、图解看门狗


【认识STM32】

 F1 代表了基础型基于 Cortex-M3 内核主频为72MHZF4 代表了高性能基于 Cortex-M4 内核主频 180M

【GPIO外设】

一、GPIO的八种工作模式

1、上拉输入IO口在无输入的情况下保持高电平。

2、下拉输入IO口在无输入的情况下保持低电平。

3、浮空输入浮空输入状态下IO的电平状态是不确定的完全由外部输入决定如果在该引脚悬空的情况下读取该端口的电平是不确定的。

4、模拟输入输入信号不经施密特触发器直接接入输入信号为模拟量而非数字量其余输入方式输入数字量。

5、推挽输出可以输出高、低电平连接数字器件推挽结构一般是指两个三极管分别受两个互补信号的控制总是在一个三极管导通的时候另一个截止。高低电平由IC的电源决定。导通损耗小、效率高。输出既可以向负载灌电流也可以从负载抽取电流。推拉式输出级既提高电路的负载能力又提高开关速度。

6、开漏输出输出端相当于三极管的集电极要得到高电平状态需要上拉电阻才行。适合于做电流型的驱动其吸收电流的能力相对强一般20mA以内。开漏形式的电路有以下几个特点

1利用外部电路的驱动能力减少IC内部的驱动。当IC内部MOSFET导通时驱动电流是从外部的VCC流经上拉电阻、MOSFET到GND。IC内部仅需很小的栅极驱动电流。

2一般来说开漏是用来连接不同电平的器件匹配电平用的因为开漏引脚不连接外部的上拉电阻时只能输出低电平如果需要同时具备输出高电平的功能则需要接上拉电阻很好的一个优点是通过改变上拉电源的电压便可以改变传输电平。比如加上上拉电阻就可以提供TTL/CMOS电平输出等。上拉电阻的阻值决定了逻辑电平转换的速度。阻值越大速度越低功耗越小所以负载电阻的选择要兼顾功耗和速度。

3开漏输出提供了灵活的输出方式但是也有其弱点就是带来上升沿的延时。因为上升沿是通过外接上拉无源电阻对负载充电所以当电阻选择小时延时就小但功耗大反之延时大功耗小。所以如果对延时有要求则建议用下降沿输出。

4可以将多个开漏输出连接到一条线上。通过一只上拉电阻在不增加任何器件的情况下形成“与逻辑”关系即“线与”。可以简单的理解为在所有引脚连在一起时外接一上拉电阻如果有一个引脚输出为逻辑0相当于接地与之并联的回路“相当于被一根导线短路”所以外电路逻辑电平便为0只有都为高电平时与的结果才为逻辑1。

7、复用推挽输出此时IO受内部外设控制比如定时器的PWM,比如SPI的MOSI,MISO等。 而普通的推挽输出则IO受ODR控制。

8、复用开漏输出参考复用推挽。

二、总结在STM32中选用IO模式

1、浮空输入GPIO_IN_FLOATING ——浮空输入可以做KEY识别RX1。

2、带上拉输入GPIO_IPU——IO内部上拉电阻输入。

3、带下拉输入GPIO_IPD—— IO内部下拉电阻输入。

4、模拟输入GPIO_AIN ——应用ADC模拟输入或者低功耗下省电。

5、开漏输出GPIO_OUT_OD ——IO输出0接GNDIO输出1悬空需要外接上拉电阻才能实现输出高电平。当输出为1时IO口的状态由上拉电阻拉高电平但由于是开漏输出模式这样IO口也就可以由外部电路改变为低电平或不变。可以读IO输入电平变化实现C51的IO双向功能。

6、推挽输出GPIO_OUT_PP ——IO输出0-接GND IO输出1 -接VCC读输入值是未知的。

7、复用功能的推挽输出GPIO_AF_PP ——片内外设功能I2C的SCL,SDA。

8、复用功能的开漏输出GPIO_AF_OD——片内外设功能TX1,MOSI,MISO.SCK.SS。

【RCC时钟】

RCC时钟的主要作用设置系统时钟 SYSCLK 、设置 AHB 分频因子决定 HCLK 等于多少、设置 APB2 分频因子决定 PCLK2 等于多少、设置 APB1 分频因子决定 PCLK1 等于多少、设置各个外设的分频因子控制 AHB APB2 APB1 这三条总线时钟的开启、控制每个外设的时钟的开启。 对于 SYSCLK、HCLK、PCLK2、PCLK1 这四个时钟的配置一般是PCLK2 = HCLK = SYSCLK=PLLCLK = 72M PCLK1=HCLK/2 = 36M。以stm32f103vet6为例

使用HSE时设置系统时钟的步骤
 * 1、开启HSE 并等待 HSE 稳定
 * 2、设置 AHB、APB2、APB1的预分频因子
 * 3、设置PLL的时钟来源和PLL的倍频因子设置各种频率主要就是在这里设置
 * 4、开启PLL并等待PLL稳定
 * 5、把PLLCK切换为系统时钟SYSCLK
 * 6、读取时钟切换状态位确保PLLCLK被选为系统时钟

【NVIC是嵌套向量中断控制器

一、优先级定义

在 NVIC 有一个专门的寄存器中断优先级寄存器 NVIC_IPRx用来配置外部中断的优先级IPR 宽度为 8bit原则上每个外部中断可配置的优先级为 0~255数值越小优先级越高。但是绝大多数 CM3 芯片都会精简设计以致实际上支持的优先级数减少在 F103 中只使用了高 4bit用于表达优先级的这 4bit又被分组成抢占优先级和子优先级。如果有多个中断同时响应抢占 优先级高的就会抢占抢占优先级低的优先得到执行如果抢占优先级相同就比较子优先级。如果抢占优先级和子优先级都相同的话就比较他们的硬件中断编号编号越小优先级越高。

 二、优先级分组

优先级的分组由内核外设 SCB 的应用程序中断及复位控制寄存器 AIRCR PRIGROUP[10:8] 位 决定F103 分为了 5 组具体如下主优先级 = 抢占优先级。

EXTI外部中断/事件控制器

EXTIExternal interrupt/event controller—外部中断/事件控制器管理了控制器的 20 个中断/事 件线。每个中断/事件线都对应有一个边沿检测器可以实现输入信号的上升沿检测和下降沿的检测。EXTI 可以实现对每个中断/事件线进行单独配置可以单独配置为中断或者事件以及触 发事件的属性。

SysTick系统定时器

SysTick—系统定时器是属于 CM3 内核中的一个外设内嵌在 NVIC 中。系统定时器是一个 24bit 的向下递减的计数器计数器每计数一次的时间为 1/SYSCLK一般我们设置系统时钟 SYSCLK 等于 72M。当重装载数值寄存器的值递减到 0 的时候系统定时器就产生一次中断以此循环往 复。

通讯的基本概念

一、串行通讯与并行通讯

按数据传送的方式通讯可分为串行通讯与并行通讯串行通讯是指设备之间通过少量数据信号线 (一般是 8 根以下)地线以及控制信号线按数据位形式一位一位地传输数据的通讯方式。而并行通讯一般是指使用 81632 64 根或更多的数据线进行传输的通讯方式。

 二、全双工、半双工及单工通讯

根据数据通讯的方向通讯又分为全双工、半双工及单工通讯它们主要以信道的方向来区。

三、同步通讯与异步通讯

根据通讯的数据同步方式又分为同步和异步两种可以根据通讯过程中是否有使用到时钟信号。

在同步通讯中收发设备双方会使用一根信号线表示时钟信号在时钟信号的驱动下双方进行协 调同步数据见图同步通讯 。通讯中通常双方会统一规定在时钟信号的上升沿或下降沿对数 据线进行采样。

在异步通讯中不使用时钟信号进行数据同步它们直接在数据信号中穿插一些同步用的信号位 或者把主体数据进行打包以数据帧的格式传输数据见图某种异步通讯 某些通讯中还需要双方约定数据的传输速率以便更好地同步。

在同步通讯中数据信号所传输的内容绝大部分就是有效数据而异步通讯中会包含有帧的各种标识符所以同步通讯的效率更高但是同步通讯双方的时钟允许误差较小而异步通讯双方的时钟允许误差较大。

四、通讯速率

衡量通讯性能的一个非常重要的参数就是通讯速率通常以比特率 (Bitrate) 来表示即每秒钟传输的二进制位数单位为比特每秒 (bit/s)。容易与比特率混淆的概念是“波特率”(Baudrate)它表示每秒钟传输了多少个码元。通讯中常用时间间隔相同的符号来表示一个二进制数字这样的信号称为码元。

例常见的通讯传输中用 0V 表示数字 05V 表示数字 1那么一个码元可以表示两种状态 0 1所以一个码元等于一个二进制比特位此时波特率的大小与比特率一致如果在通讯传输中有 0V2V4V 以及 6V 分别表示二进制数 00、01、1011那么每个码元可以表示四种状态即两个二进制比特位所以码元数是二进制比特位数的一半这个时候的波特率为比特率的一半。因为很多常见的通讯中一个码元都是表示两种状态人们常常直接以波特率来表示比特率。

串口通讯

一、物理层

串口通讯的物理层有很多标准及变种我们主要讲解 RS-232 标准。

根据通讯使用的电平标准不同串口通讯可分为 TTL 标准及 RS-232 标准。

 TTL 的电平标准理想状态下使用 5V 表示二进制逻辑 1使用 0V 表示逻辑 0而为了增加串口通讯的远距离传输及抗干扰能力它使用-15V 表示逻辑 1+15V 表示逻辑 0即RS232。

因为控制器一般使用 TTL 电平标准所以常常会使用 MA3232 芯片对 TTL RS-232 电平的信号进行互相转换。

在目前的其它工业控制使用的串口通讯中一般只使用 RXDTXD 以及 GND 三条信号线直接传输数据信号而 RTSCTSDSRDTR DCD 信号都被裁剪掉了。

二、协议层

串口通讯的数据包由发送设备通过自身的 TXD 接口传输到接收设备的 RXD 接口。在串口通讯的协议层中规定了数据包的内容它由启始位、主体数据、校验位以及停止位组成通讯双方的数据包格式要约定一致才能正常收发数据。

波特率串口异步通讯异步通讯中由于没有时钟信号 (如前面讲解的 DB9 接口中是 没有时钟信号的)所以两个通讯设备之间需要约定好波特率即每个码元的长度以便对信号 进行解码图串口数据包的基本组成 中用虚线分开的每一格就是代表一个码元。常见的波特率为 48009600115200 等。

通讯的起始和停止信号串口通讯的一个数据包从起始信号开始直到停止信号结束。数据包的起始信号由一个逻辑 0 的数据位表示而数据包的停止信号可由 0.511.5 2 个逻辑 1 的数据位表示。

有效数据在数据包的起始位之后紧接着的就是要传输的主体数据内容也称为有效数据有效数据的长度常被约定为 567 8 位长。

数据校验在有效数据之后有一个可选的数据校验位。由于数据通信相对更容易受到外部干扰导致传输数据出现偏差可以在传输过程加上校验位来解决这个问题。校验方法有奇校验 (odd)、偶校验 (even)、0 校验 (space)1 校验 (mark) 以及无校验 (noparity)

I2C

I2C 通讯协议 (Inter Integrated Circuit) 是由 Phiilps 公司开发的由于它引脚少硬件实现简单 可扩展性强不需要 USARTCAN 等通讯协议的外部收发设备。

一、物理层

1、I2C 通讯设备之间的常用连接方式

它的物理层有如下特点

(1) 它是一个支持设备的总线。“总线”指多个设备共用的信号线。在一个 I2C 通讯总线中可连接多个 I2C 通讯设备支持多个通讯主机及多个通讯从机。

(2) 一个 I2C 总线只使用两条总线线路一条双向串行数据线 (SDA) 一条串行时钟线 (SCL)。数 据线即用来表示数据时钟线用于数据收发同步。

(3) 每个连接到总线的设备都有一个独立的地址主机可以利用这个地址进行不同设备之间的访问。

(4) 总线通过上拉电阻接到电源。当 I2C 设备空闲时会输出高阻态而当所有设备都空闲都 输出高阻态时由上拉电阻把总线拉成高电平。

(5) 多个主机同时使用总线时为了防止数据冲突会利用仲裁方式决定由哪个设备占用总线。

(6) 具有三种传输模式标准模式传输速率为 100kbit/s 快速模式为 400kbit/s 高速模式下可达 3.4Mbit/s但目前大多 I2C 设备尚不支持高速模式。

(7) 连接到相同总线的 IC 数量受到总线的最大电容 400pF 限制。

二、协议层

1、I2C 基本读写过程

 2、通讯的起始和停止信号

当 SCL 线是高电平时 SDA 线从高电平向低电平切换这个情况表示通讯的起始。当 SCL 是高电平时 SDA 线由低电平向高电平切换表示通讯的停止。起始和停止信号一般由主机产生。

2、 数据有效性

SDA 数据线在 SCL 的每个时钟周期传输一位数据。传输时SCL 为高电平的时候 SDA 表示的数据有效即此时的 SDA 为高电平时表示数据“1”为低电平时表示数据“0”。当 SCL 为低电平时SDA的数据无效一般在这个时候 SDA 进行电平切换为下一次表示数据做好准备。

 每次数据传输都以字节为单位每次传输的字节数不受限制。

3、地址及数据方向

I2C 协议规定设备地址可以是 7 位或 10 位实际中 7 位的地址应用比较广泛。紧跟设备地址的一个数据位用来表示数据传输方向它是数据方向位 (R/)8 位或第 11 位。数据方向位为“1”时表示主机由从机读数据该位为“0”时表示主机向从机写数据。

读数据方向时主机会释放对 SDA 信号线的控制由从机控制 SDA 信号线主机接收信号写 数据方向时SDA 由主机控制从机接收信号。

4、响应

作为数据接收端时当设备 (无论主从机) 接收到 I2C 传输的一个字节数据或地址后若希望对方继续发送数据则需要向对方发送“应答 (ACK)”信号发送方会继续发送下一个数据若接收端 希望结束数据传输则向对方发送“非应答 (NACK)”信号发送方接收到该信号后会产生一个 停止信号结束信号传输。

传输时主机产生时钟在第 9 个时钟时数据发送端会释放 SDA 的控制权由数据接收端控制 SDA若 SDA 为高电平表示非应答信号 (NACK)低电平表示应答信号 (ACK)

SPI

SPI 协议是由摩托罗拉公司提出的通讯协议 (Serial Peripheral Interface)即串行外围设备接口是 一种高速全双工的通信总线。它被广泛地使用在 ADCLCD 等设备与 MCU 间要求通讯速率 较高的场合。

一、SPI物理层

SPI 通讯设备之间的常用连接方式SPI 通讯使用 3 条总线及片选线3 条总线分别为 SCKMOSIMISO片选线NSS。(SPI 通讯以 NSS 线置低电平为开始信号以 NSS 线被拉高作为结束信号)

 二、协议层

1、SPI 通讯的通讯时序

2、通讯的起始和停止信号

NSS 信号线由高变低是 SPI 通讯的起始信号。NSS 是每个从机各自独占的信号线当从机在自己的 NSS 线检测到起始信号后就知道自己被主机选中了开始准备与主机通讯。NSS 信号由低变高是 SPI 通讯的停止信号表示本次通讯结束从机的选中状态被取消。

3、数据有效性

MOSI 及 MISO 的数据在 SCK 的上升沿期间变化输出在 SCK 的下降沿时被采样。即在 SCK 的下降沿时刻MOSI MISO 的数据有效高电平时表示数据“1”为低电平时表示数据“0”。在其它时刻数据无效MOSI MISO 为下一次表示数据做准备。

SPI 每次数据传输可以 8 位或 16 位为单位每次传输的单位数不受限制。

数据传输时MSB先行或 LSB 先行并没有作硬性规定但要保证两个 SPI 通讯设备之间使用同样的协定一般都会采用图 SPI 通讯时序 中的 MSB 先行模式。

4、CPOL/CPHA 及通讯模式

时钟极性 CPOL 是指 SPI 通讯设备处于空闲状态时SCK 信号线的电平信号 (SPI 通讯开始前、 NSS 线为高电平时 SCK 的状态)CPOL=0 SCK 在空闲状态时为低电平CPOL=1 时则相反。

时钟相位 CPHA 是指数据的采样的时刻当 CPHA=0 MOSI MISO 数据线上的信号将会在 SCK 时钟线的“奇数边沿”被采样。当 CPHA=1 时数据线在 SCK 的“偶数边沿”采样。

由 CPOL CPHA 的不同状态SPI 分成了四种模式见表 SPI 的四种模式 主机与从机需要工 作在相同的模式下才可以正常通讯实际中采用较多的是“模式 0”与“模式 3

DMA直接存储区访问

DMA(Direct Memory Access)—直接存储器存取是单片机的一个外设它的主要功能是用来搬数 据但是不需要占用 CPU即在传输数据的时候CPU 可以干其他的事情好像是多线程一样。 数据传输支持从外设到存储器或者存储器到存储器。

DMA 控制器包含了 DMA1 DMA2其中 DMA1 7 个通道DMA2 5 个通道这里的通道 可以理解为传输数据的一种管道。要注意的是 DMA2 只存在于大容量的单片机中。

常用存储器

一、存储器种类

存储器按其存储介质特性主要分为“易失性存储器”和“非易失性存储器”两大类。其中的“易失/非易失”是指存储器断电后它存储的数据内容是否会丢失的特性。

二、易失性存储器——RAM 存储器

RAM 是“Random Access Memory”的缩写被译为随机存储器。所谓“随机存取”指的是当存 储器中的消息被读取或写入时所需要的时间与这段信息所在的位置无关。

1、DRAM动态随机存储器

DRAM 的存储单元以电容的电荷来表示数据有电荷代表 1无电荷代表 0。但时间一长代表 1 的电容会放电代表 0 的电容会吸收电荷因此它需要定期刷新操作这就是“动态 (Dynamic)”一词所形容的特性。

2、SRAM静态随机存储器

静态随机存储器 SRAM 的存储单元以锁存器来存储数据见图 SRAM 存储单元 。这种电路结构 不需要定时刷新充电就能保持状态 (当然如果断电了数据还是会丢失的)所以这种存储器 被称为“静态 (Static)RAM

三、非易失性存储器

1、ROM 存储器ROM 是“Read Only Memory”的缩写意为只能读的存储器。由于技术的发展后来设计出了可以方便写入数据的 ROM而这个“Read Only Memory”的名称被沿用下来了。

MASK ROMMASK(掩膜) ROM 就是正宗的“Read Only Memory”存储在它内部的数据是在出厂时使用特殊工艺固化的生产后就不可修改其主要优势是大批量生产时成本低。

OTPROMOTPROM(One Time Programable ROM) 是一次可编程存储器。这种存储器出厂时内部并没有资料用户可以使用专用的编程器将自己的资料写入但只能写入一次被写入过后它的内容也不可再修改。

EPROMEPROM(Erasable Programmable ROM) 是可重复擦写的存储器它解决了 PROM 芯片只能写入一次的问题。这种存储器使用紫外线照射芯片内部擦除数据擦除和写入都要专用的设备。现在这种存储器基本淘汰被 EEPROM 取代。

EEPROMEEPROM(Electrically Erasable Programmable ROM) 是电可擦除存储器。EEPROM 可以重复擦写它的擦除和写入都是直接使用电路控制不需要再使用外部设备来擦写。而且可以按字节为单位修改数据无需整个芯片擦除。

2、FLASH 存储器

FLASH 存储器又称为闪存它也是可重复擦写的储器部分书籍会把 FLASH 存储器称为 FLASH ROM但它的容量一般比 EEPROM 大得多且在擦除时一般以多个字节为单位。根据存储单元电路的不同FLASH 存储器又分为 NOR FLASH NAND FLASH。

ADC

STM32f103 系列有 3 ADC精度为 12 位每个 ADC 最多有 16 个外部通道。其中 ADC1 和 ADC2 都有 16 个外部通道ADC3 根据 CPU 引脚的不同通道数也不同一般都有 8 个外部通道。

DAC

STM32 具有片上 DAC 外设它的分辨率可配置为 8 位或 12 位的数字输入信号具有两个 DAC 输出通道这两个通道互不影响每个通道都可以使用 DMA 功能都具有出错检测能力可外 部触发。

TIM

一、定时器的分类

STM32F1 系列中除了互联型的产品共有 8 个定时器分为基本定时器通用定时器和高级 定时器。

IWDG独立看门狗/WWDG窗口看门狗

一、独立看门狗定义及使用场景

独立看门狗是一个 12 位的递减计数器当计数器的值从某个值一直减到 0 的时候系统就会产生一个复位信号即 IWDG_RESET。如果在计数没减到 0 之前刷新了计数器的值的话那么就不会产生复位信号这个动作就是我们经常说的喂狗。

独立看门狗的时钟由独立的 RC 振荡器 LSI 提供即使主时钟发生故障它仍然有效非常独立。 LSI 的频率一般在 30~60KHZ 之间根据温度和工作场合会有一定的漂移我们一般取 40KHZ 所以独立看门狗的定时时间并一定非常精确只适用于对时间精度要求比较低的场合。

二、窗口看门狗定义及使用场景

窗口看门狗跟独立看门狗一样也是一个递减计数器不断的往下递减计数当减到一个固定值 0X40 时还不喂狗的话产生复位这个值叫窗口的下限是固定的值不能改变。这个是跟独立看门狗类似的地方不同的地方是窗口看门狗的计数器的值在减到某一个数之前喂狗的话也会产生 复位这个值叫窗口的上限上限值由用户独立设置。窗口看门狗计数器的值必须在上窗口和下 窗口之间才可以喂狗。

三、图解看门狗

RLR 是重装载寄存器用来设置独立看门狗的计数器的值。TR 是窗口看门狗的计数器的值由 用户独立设置WR 是窗口看门狗的上窗口值由用户独立设置。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6