STM32F407学习

1 STM 32 相关外设接口学习

1.1 GPIO

STM 32 F 4 每组通用 GPIO 口由 7 个 32 位的寄存器控制,包括:

  • 4 个 32 位配置寄存器(MODER、OTYPER、OSPEEDR、PUPDR)
  • 2 个 32 位数据寄存器(IDR、ODR)
  • 1 个 32 位置位、复位寄存器(BSRR)
  • 1 个 32 位锁定寄存器(LCKR)
  • 2 个 32 位复用功能选择寄存器(AFRH、AFRL)

1.1.1 寄存器

1.1.1.1 GPIO 端口模式寄存器(GPIOx_MODER)(x=A.. I)

用于控制 GPIO 的工作模式

每组 GPIO 下有 16 个 IO 口,两个寄存器位控制 1 个 IO。PortA 的复位值是 0 xA 800 0000,对应的二进制为 1010 1000 0000 0000 0000 0000 0000 0000,可知 PA 15/14/13 都为复用功能模式,其余端口为输入模式。

1.1.1.2 GPIO 端口输出类型控制器(GPIOx_OTYPER)

用于控制 GPIO 的输出类型。

在输入模式下不起作用。低 16 位有效。默认输出模式下 IO 口为推挽输出。

1.1.1.3 GPIO 端口输出速度寄存器(GPIOx_OSPEEDR)


也只用于输出模式。

1.1.1.4 GPIO 端口上拉/下拉寄存器(GPIOx_PUPDR)

  • 00:无上拉下拉
  • 01:上拉
  • 10:下拉
  • 11:保留

1.1.1.5 GPIO 输入数据寄存器(GPIOx_IDR)

1.1.1.6 GPIO 输出数据寄存器(GPIOx_ODR)

1.1.1.7 GPIO 端口置位/复位寄存器(GPIOx_BSRR)

1.2 ADC

STM 32 F 4 拥有 3 个可独立使用的ADC,其中 ADC 1 和 ADC 2 可以组成双重模式以提高采样率。STM 32 的 ADC 是 12 位逐次逼近型的 ADC。包含 19 个通道,可测量 16 个外部和 2 个内部信号源以及 Vbat 通道的信号。这些通道的 A/D 转换可在单次、连续、扫描、不连续采样模式下进行。转换后的结果存储在一个 LSB 或 MSB 的 16 位数据寄存器中。

1.2.1 主要特性

  1. 可配置 12 位、10 位、8 位、6 位分辨率
  2. 在转换结束、注入转换结束、发生模拟看门狗或溢出时产生中断
  3. 单次和连续转换模式
  4. 数据对齐以保证内置数据的一致性
  5. 独立设置各通道采样时间
  6. 不连续采样模式
  7. ADC 电源:全速运行时为 2.4 V 到 3.6 V,慢速运行时为 1.8 V
  8. ADC 输入范围:
  9. 规则通道转换期间可产生 DMA 请求

1.2.2 转换顺序

当任意 ADCx 多通道以任意顺序进行一系列转换时就诞生了成组转换,有两种成组转换类型:规则组和注入组。规则组最多允许16个输入通道进行转换,注入组允许最多4个输入通道进行转换。

1.2.2.1 规则组

按照一定的顺序成组转换,常用。

1.2.2.2 注入组

“注入”即为打破原来的状态,相当于中断。如果在规则组转换的过程中,注入组启动,则注入组转换完成后规则组才继续转换。

1.2.2.3 转换速率

ADC 转换时间计算公式为
采样时间由 ADC_SMPR 寄存器进行控制。
ADC_CLK 由 APB 2 分配产生,分频系数由 RCC_CFGR 寄存器中的 PPRE 2 进行设置,2/4/6/8/16 分频选项。

寄存器

Timer

定时器的基本特性表如下:
|455

SPI

SPI 全称为 Serial Peripheral interface,串行外围设备接口。SPI 的结构框图如下:
|535
SPI 的引脚信息为

  1. MISO(Master In / Slave Out):主设备数据输入,从设备数据输出。
  2. MOSI(Master Out / Slave In):主设备数据输出,从设备数据输入。
  3. SCLK(Serial Clock):时钟信号,主设备输出。
  4. CS(Chip Select):从设备片选信号,主设备输出。
    ==工作原理==:在进行 SPI 通信的从机和主机中都有一个 Shift Register,主机通过向它本身的移位寄存器写入一个 Byte 的数据发起一次传输。移位寄存器通过 MOSI 将字节传输给从机,同时从机将字节的移位寄存器中的内容通过 MISO 传输到主机,这样即可实现两个移位寄存器中的数据交换。因此,如果只进行写操作,主机忽略接收到的数据即可,如果主机想要读取从机的数据,则发送一个空字节引发从机传输。
    SPI 支持全双工、半双工、单工传输方式。

SPI 工作模式

SPI 的工作模式由 CPOL 和 CPHA 决定,它们都有 0、1 两种状态,因此 SPI 有四种工作模式。

工作模式 CPOL CPHA SCL 空闲状态 采样边沿 采样时刻
0 0 0 低电平 上升沿 奇数边沿
1 0 1 低电平 下降沿 偶数边沿
2 1 0 高电平 下降沿 奇数边沿
3 1 1 高电平 上升沿 偶数边沿

由表可知,CPOL 决定 SCL 空闲状态时为高电平还是低电平,CPHA 决定是在时钟的奇数边沿采样还是在偶数边沿采样。

SPI 寄存器

SPI_CR 1(SPI 控制寄存器 1)

  • Bit 11 DFF:数据帧格式,0:8 位数据帧,1:16 位
  • Bit 10 RXONLY:只接收。0:全双工,1:只接收
  • Bit 7:帧格式。0:先发送 MSB,1:先发送 LSB。通信时不应该修改此位
  • Bit 6:SPI 使能。0:关闭外设,1:使能外设。
  • Bit 5-3:BR[2:0]:控制波特率。
  • Bit 2:主模式选择。0:从模式,1:主模式
  • Bit 1:CPOL
  • Bit 0:CPHA

SPI_SR(SPI 状态寄存器)

  • 15-9 位保留,强制为 0
  • Bit 8:帧格式错误。0:无帧格式错误,1:有帧格式错误
  • Bit 7:忙标志。0:未处于忙状态,1:SPI 处于通信状态或者 Tx buffer 不空
  • Bit 1:发送 buffer 空。0:非空,1:空
  • Bit 0:接收 buffer 非空。0:空,1:不空

SPI_DR(SPI 数据寄存器)


当数据帧为 8 位时只使用低八位,16 位时使用整个寄存器


STM32F407学习
https://www.moerjielovecookie.icu/2025/05/08/STM32F407学习/
作者
Sawen Moerjie
发布于
2025年5月8日
许可协议