STM32标准外设库资源总结SPL篇17

Posted:   2020-08-11

Status:   Completed

Tags :   STM32 SPL

Categories :   STM32 SPL

Previous:   STM32标准外设库DAC输出SPL篇16

Next:   STM32CUBE新建工程HAL篇1


启动模式

启动模式选择引脚 启动模式 说明
BOOT1 BOOT0
X 0 主闪存存储器 主闪存存储器被选为启动区域
0 1 系统存储器 系统存储器被选为启动区域
1X 1 内置SRAM 内置SRAM被选为启动区域

低功耗模式

模式 进入 唤醒 对1.8V区域时钟的影响 对VDD区域时钟的影响 电压调节器
睡眠(SLEEP-NOW或SLEEP-ON-EXIT) WFI 任一中断 CPU时钟关,对其他时钟和ADC时钟无影响
WFI 唤醒事件
停机 PDDS和LPDS位+SLEEPDEEP位+WFI或WFE 任一外部中断(在外部中断寄存器中设置) 关闭所有1.8V区域的时钟 HSI 和HSE的振荡器关闭 开启或处于低功耗模式(依据电源控制寄存器(PWR_CR)的设定)
待机 PDDS位 +SLEEPDEEP位+WFI或WFE WKUP引脚的上升沿、RTC闹钟事件、NRST引脚上的外部复位、IWDG复位

RCC

时钟 使能函数 小容量,中容量和大容量 互联型
外设 参数 外设 参数
AHB RCC_AHBPeriphClockCmd DMA1 RCC_AHBPeriph_DMA1 DMA1 RCC_AHBPeriph_DMA1
DMA2 RCC_AHBPeriph_DMA2 DMA2 RCC_AHBPeriph_DMA2
SRAM RCC_AHBPeriph_SRAM SRAM RCC_AHBPeriph_SRAM
FLITF RCC_AHBPeriph_FLITF FLITF RCC_AHBPeriph_FLITF
CRC RCC_AHBPeriph_CRC CRC RCC_AHBPeriph_CRC
FSMC RCC_AHBPeriph_FSMC OTG_FS RCC_AHBPeriph_OTG_FS
SDIO RCC_AHBPeriph_SDIO ETH_MAC RCC_AHBPeriph_ETH_MAC
ETH_MAC_Tx RCC_AHBPeriph_ETH_MAC_Tx
ETH_MAC_Rx RCC_AHBPeriph_ETH_MAC_Rx
APB1 RCC_APB1PeriphClockCmd TIM2 RCC_APB1Periph_TIM2
TIM3 RCC_APB1Periph_TIM3
TIM4 RCC_APB1Periph_TIM4
TIM5 RCC_APB1Periph_TIM5
TIM6 RCC_APB1Periph_TIM6
TIM7 RCC_APB1Periph_TIM7
WWDG RCC_APB1Periph_WWDG
SPI2 RCC_APB1Periph_SPI2
SPI3 RCC_APB1Periph_SPI3
USART2 RCC_APB1Periph_USART2
USART3 RCC_APB1Periph_USART3
USART4 RCC_APB1Periph_USART4
USART5 RCC_APB1Periph_USART5
I2C1 RCC_APB1Periph_I2C1
I2C2 RCC_APB1Periph_I2C2
USB RCC_APB1Periph_USB
CAN1 RCC_APB1Periph_CAN1
BKP RCC_APB1Periph_BKP
PWR RCC_APB1Periph_PWR
DAC RCC_APB1Periph_DAC
CEC RCC_APB1Periph_CEC
TIM12 RCC_APB1Periph_TIM12
TIM13 RCC_APB1Periph_TIM13
TIM14 RCC_APB1Periph_TIM14
APB2 RCC_APB2PeriphClockCmd AFIO RCC_APB2Periph_AFIO
GPIOA RCC_APB2Periph_GPIOA
GPIOB RCC_APB2Periph_GPIOB
GPIOC RCC_APB2Periph_GPIOC
GPIOD RCC_APB2Periph_GPIOD
GPIOE RCC_APB2Periph_GPIOE
GPIOF RCC_APB2Periph_GPIOF
GPIOG RCC_APB2Periph_GPIOG
ADC1 RCC_APB2Periph_ADC1
ADC2 RCC_APB2Periph_ADC2
TIM1 RCC_APB2Periph_TIM1
SPI1 RCC_APB2Periph_SPI1
TIM8 RCC_APB2Periph_TIM8
USART1 RCC_APB2Periph_USART1
ADC3 RCC_APB2Periph_ADC3
TIM15 RCC_APB2Periph_TIM15
TIM16 RCC_APB2Periph_TIM16
TIM17 RCC_APB2Periph_TIM17
TIM9 RCC_APB2Periph_TIM9
TIM10 RCC_APB2Periph_TIM10
TIM11 RCC_APB2Periph_TIM11

GPIO

端口位配置

配置模式 CNF1 CNF0 MODE1 MODE0 PxODR
通用输出 推挽(Push-Pull) 0 0 01
10
11
0或1
推挽(Push-Pull) 1 0或1
复用功能输出 推挽(Push-Pull) 1 0 不使用
开漏(Open-Drain) 1 不使用
输入 模拟输入 0 0 00 不使用
浮空输入 1 不使用
下拉输入 1 0 0
上拉输入 1

输出模式位

MODE[1:0] 意义
00 保留
01 最大输出速度为10MHz
10 最大输出速度为2MHz
11 最大输出速度为50MHz

外设的GPIO配置

高级定时器TIM1/TIM8

TIM1/TIM8引脚 配置 GPIO配置
TIM1/8_CHx 输入捕获通道x 浮空输入
输出比较通道x 推挽复用输出
TIM1/8_CHxN 互补输出通道x 推挽复用输出
TIM1/8_BKIN 刹车输入 浮空输入
TIM1/8_ETR 外部触发时钟输入 浮空输入

通用定时器TIM2/3/4/5

TIM2/3/4/5引脚 配置 GPIO配置
TIM2/3/4/5_CHx 输入捕获通道x 浮空输入
输出比较通道x 推挽复用输出
TIM2/3/4/5_ETR 外部触发时钟输入 浮空输入

USART

USART引脚 配置 GPIO配置
USARTx_TX 全双工模式 推挽复用输出
半双工同步模式 推挽复用输出
USARTx_RX 全双工模式 浮空输入或带上拉输入
半双工同步模式 未用,可作为通用I/O
USARTx_CK 同步模式 推挽复用输出
USARTx_RTS 硬件流量控制 推挽复用输出
USARTx_CTS 硬件流量控制 浮空输入或带上拉输入

SPI

SPI引脚 配置 GPIO配置
SPIx_SCK 主模式 推挽复用输出
从模式 浮空输入
SPIx_MOSI 全双工模式/主模式 推挽复用输出
全双工模式/从模式 浮空输入或带上拉输入
简单的双向数据线/主模式 推挽复用输出
简单的双向数据线/从模式 未用,可作为通用I/O
SPIx_MISO 全双工模式/主模式 浮空输入或带上拉输入
全双工模式/从模式 推挽复用输出
简单的双向数据线/主模式 未用,可作为通用I/O
简单的双向数据线/从模式 推挽复用输出
SPIx_NSS 硬件主/从模式 浮空输入或带上拉输入或带下拉输入
硬件主模式/NSS输出使能 推挽复用输出
软件模式 未用,可作为通用I/O

I2S

I2S引脚 配置 GPIO配置
I2Sx_WS 主模式 推挽复用输出
从模式 浮空输入
I2Sx_CK 主模式 推挽复用输出
从模式 浮空输入
I2Sx_SD 发送器 推挽复用输出
接收器 浮空输入或带上拉输入或带下拉输入
I2Sx_MCK 主模式 推挽复用输出
从模式 未用,可作为通用I/O

I2C接口

I2C引脚 配置 GPIO配置
I2Cx_SCL I2C时钟 开漏复用输出
I2Cx_SDA I2C数据 开漏复用输出

BxCAN

BxCAN引脚 GPIO配置
CAN_TX 推挽复用输出
CAN_RX 浮空输入或带上拉输入

USB

USB引脚 GPIO配置
USB_DM / USB_DP 一旦使能了USB模块,这些引脚会自动连接到内部USB收发器

注:本表内容只适用于小容量、中容量和大容量产品

全速USB OTG引脚配置

OTG_FS引脚 配置 GPIO配置
OTG_FS_SOF 主机 如果使用此引脚,则为推挽复用输出
设备 如果使用此引脚,则为推挽复用输出
OTG 如果使用此引脚,则为推挽复用输出
OTG_FS_VBUS 主机 浮空输入
设备 浮空输入
OTG 浮空输入
OTG_FS_ID 主机 如果软件选择了强置主机模式(OTG_FS_GUSBCFG寄存器的FHMOD位),则不需要此引脚
设备 如果软件选择了强置设备模式(OTG_FS_GUSBCFG寄存器的FHMOD位),则不需要此引脚
OTG 上拉输入
OTG_FS_DM 主机 由USB断电自动控制
设备 由USB断电自动控制
OTG 由USB断电自动控制
OTG_FS_DP 主机 由USB断电自动控制
设备 由USB断电自动控制
OTG 由USB断电自动控制

注:

  • 本表内容只适用于互联型产品
  • 如果另一个共享的外设要使用OTG_FS_VBUS引脚(PA9)或把它作为通用I/O口,必须激活PHY的断电模式(清除OTG_FS_GCCFG寄存器的位16)

SDIO

SDIO引脚 GPIO配置
SDIO_CK 推挽复用输出
SDIO_CMD 推挽复用输出
SDIO[D7:D0] 推挽复用输出

ADC

ADC/DAC引脚 GPIO配置
ADC/DAC 模拟输入

FSMC

FSMC引脚 GPIO配置
FSMC_A[25:0]
FSMC_D[15:0]
推挽复用输出
FSMC_CK 推挽复用输出
FSMC_NOE
FSMC_NWE
推挽复用输出
FSMC_NE[4:1]
FSMC_NCE[3:2]
FSMC_NCE4_1
FSMC_NCE4_2
推挽复用输出
FSMC_NWAIT
FSMC_CD
浮空输入或带上拉输入
FSMC_NIOS16
FSMC_INTR
FSMC_INT[3:2]
浮空输入
FSMC_NL
FSMC_NBL[1:0]
推挽复用输出
FSMC_NIORD
FSMC_NIOWR
FSMC_NREG
推挽复用输出

其它I/O功能

引脚 复用功能 GPIO配置
TAMPER-RTC RTC输出 当配置BKP_CR和BKP_RTCCR寄存器时,由硬件强制设置
侵入事件输入
MCO 时钟输出 推挽复用输出
EXTI输入线 外部中断输入 浮空输入或带上拉输入或带下拉输入

复用功能I/O和调试配置(AFIO)

CAN1复用功能重映射

复用功能(1) CAN_REMAP[1:0]=”00” CAN_REMAP[1:0]=”10”(2) CAN_REMAP[1:0]=”11”(3)
CAN1_RX 或 AN_RX PA11 PB8 PD0
CAN1_TX 或 AN_TX PA12 PB9 PD1
  1. 在互联型产品中是CAN1_RX和CAN1_TX;在其它带有单个CAN接口的产品中是CAN_RX和CAN_TX。
  2. 重映射不适用于36脚的封装
  3. 当PD0和PD1没有被重映射到OSC_IN和OSC_OUT时,重映射功能只适用于100脚和144脚的封装

CAN2复用功能重映射

复用功能 CAN2_REMAP=”0” CAN2_REMAP=”1”
CAN2_RX PB12 PB5
CAN2_TX PB13 PB6

JTAG/SWD复用功能重映射

调试接口信号

复用功能 GPIO端口
JTMS/SWDIO PA13
JTCK/SWCLK PA14
JTDI PA15
JTDO/TRACESWO PB3
JNTRST PB4
TRACECK PE2
TRACED0 PE3
TRACED1 PE4
TRACED2 PE5
TRACED3 PE6

调试端口映像

SWJ_CFG[2:0] 可能的调试端口 SWJ I/O引脚分配
PA13
JTMS
SWDIO
PA14
JTCK
SWCLK
PA15
JTDI
PB3
JTDO
TRACESWO
PB4
NJTRST
000 完全SWJ(JTAG-DP + SW-DP)(复位状态) I/O不可用 I/O不可用 I/O不可用 I/O不可用 I/O不可用
001 完全SWJ(JTAG-DP + SW-DP)但没有JNTRST I/O不可用 I/O不可用 I/O不可用 I/O不可用 I/O可用
010 关闭JTAG-DP,启用SW-DP I/O不可用 I/O不可用 I/O可用 I/O可用(1) I/O可用
100 关闭JTAG-DP,关闭SW-DP I/O可用 I/O可用 I/O可用 I/O可用 I/O可用
其它 禁用
  1. I/O口只可在不使用异步跟踪时使用

ADC复用功能重映射

  • 重映射仅存在于大容量产品

ADC1外部触发注入转换复用功能重映射

复用功能 ADC1_ETRGINJ_REMAP = 0 ADC1_ETRGINJ_REMAP = 1
ADC1外部触发注入转换 ADC1外部触发注入转换与EXTI15相连 ADC1外部触发注入转换与TIM8_CH4相连

ADC1外部触发规则转换复用功能重映射

复用功能 ADC1_ETRGREG_REMAP = 0 ADC1_ETRGREG_REMAP = 1
ADC1外部触发规则转换 ADC1外部触发规则转换与EXTI11相连 ADC1外部触发规则转换与TIM8_TRGO相连

ADC2外部触发注入转换复用功能重映射

复用功能 ADC2_ETRGINJ_REMAP = 0 ADC2_ETRGINJ_REMAP = 1
ADC2外部触发注入转换 ADC2外部触发注入转换与EXTI15相连 ADC2外部触发注入转换与TIM8_CH4相连

ADC2外部触发规则转换复用功能重映射

复用功能 ADC2_ETRGREG_REMAP = 0 ADC2_ETRGREG_REMAP = 1
ADC2外部触发规则转换 ADC2外部触发规则转换与EXTI11相连 ADC2外部触发规则转换与TIM8_TRGO相连

定时器复用功能重映射

TIM5复用功能重映像

复用功能 TIM5CH4_IREMAP = 0 TIM5CH4_IREMAP = 1
TIM5_CH4 TIM5的通道4连至PA3 LSI内部时钟连至TIM5_CH4的输入作为校准使用
  • 重映像只适用于大容量产品和互联型产品

TIM4复用功能重映像

复用功能 TIM4_REMAP = 0 TIM4_REMAP = 1
TIM4_CH1 PB6 PD12
TIM4_CH2 PB7 PD13
TIM4_CH3 PB8 PD14
TIM4_CH4 PB9 PD15
  • 重映像只适用于100和144脚的封装

TIM3复用功能重映像

复用功能 TIM3_REMAP[1:0] = 00
(没有重映像)
TIM3_REMAP[1:0] = 10
(部分重映像)
TIM3_REMAP[1:0] = 11
(完全重映像)(1)
TIM3_CH1 PA6 PB4 PC6
TIM3_CH2 PA7 PB13 PC7
TIM3_CH3 PB0 PC8
TIM3_CH4 PB1 PC9
  1. 重映像只适用于64、100和144脚的封装

TIM2复用功能重映像

复用功能 TIM2_REMAP[1:0] = 00
(没有重映像)
TIM2_REMAP[1:0] = 01
(部分重映像)
TIM2_REMAP[1:0] = 10
(部分重映像)(1)
TIM2_REMAP[1:0] = 11
(完全重映像)(1)
TIM2_CH1_ETR(2) PA0 PA15 PA0 PA15
TIM2_CH2 PA1 PB3 PA1 PB3
TIM2_CH3 PA2 PB10
TIM2_CH4 PA3 PB11
  1. 重映像不适用于36脚的封装
  2. TIM2_CH1和TIM2_ETR共用一个引脚,但不能同时使用(因此在此使用这样的标记:TIM2_CH1_ETR)

TIM1复用功能重映像

复用功能 TIM1_REMAP[1:0] = 00
(没有重映像)
TIM1_REMAP[1:0] = 01
(部分重映像)
TIM1_REMAP[1:0] = 11
(完全重映像)(1)
TIM1_ETR PA12 PE7
TIM1_CH1 PA8 PE9
TIM1_CH2 PA9 PE11
TIM1_CH3 PA10 PE13
TIM1_CH4 PA11 PE14
TIM1_BKIN PB12(2) PA6 PE15
TIM1_CH1N PB13(2) PA7 PE8
TIM1_CH2N PB14(2) PB0 PE10
TIM1_CH3N PB15(2) PB1 PE12
  1. 重映像只适用于100和144脚的封装
  2. 重映像不适用于36脚的封装

USART复用功能重映射

USART3重映像

复用功能 USART3_REMAP[1:0] = 00
(没有重映像)
USART3_REMAP[1:0] = 01
(部分重映像)(1)
USART3_REMAP[1:0] = 11
(完全重映像)(2)
USART3_TX PB10 PC10 PD8
USART3_RX PB11 PC11 PD9
USART3_CK PB12 PC12 PD10
USART3_CTS PB13 PD11
USART3_RTS PB14 PD12
  1. 重映像只适用于64、100和144脚的封装
  2. 重映像只适用于100和144脚的封装

USART2重映像

复用功能 USART2_REMAP = 0 USART2_REMAP = 1
USART2_CTS PA0 PD3
USART2_RTS PA1 PD4
USART2_TX PA2 PD5
USART2_RX PA3 PD6
USART2_CK PA4 PD7
  • 重映像只适用于100和144脚的封装

USART1重映像

复用功能 USART1_REMAP = 0 USART1_REMAP = 1
USART1_TX PA9 PB6
USART1_RX PA10 PB7

I2C1复用功能重映射

复用功能 I2C1_REMAP = 0 I2C1_REMAP = 1
I2C1_SCL PB6 PB8
I2C1_SDK PB7 PB9
  • 重映像不适用于36脚封装

SPI1复用功能重映射

复用功能 SPI1_REMAP = 0 SPI1_REMAP = 1
SPI1_NSS PA4 PA15
SPI1_SCK PA5 PB3
SPI1_MISO PA6 PB4
SPI1_MOSI PA7 PB5

SPI3复用功能重映射

复用功能 SPI3_REMAP = 0 SPI3_REMAP = 1
SPI3_NSS PA15 PA4
SPI3_SCK PB3 PC10
SPI3_MISO PB4 PC11
SPI3_MOSI PB5 PC12

以太网复用功能重映射

  • 以太网只出现在互联型产品
复用功能 ETH_REMAP = 0 ETH_REMAP = 1
RX_DV-CRS_DV PA7 PD8
RXD0 PC4 PD9
RXD1 PC5 PD10
RXD2 PB0 PD11
RXD3 PB1 PD12

中断

NVIC_PriorityGroup
中断向量组
NVIC_IRQChannelPreemptionPriority
抢占优先级
NVIC_IRQChannelSubPriority
子优先级
Description
描述
NVIC_PriorityGroup_0 0 0-15 0 bits for pre-emption priority
4 bits for subpriority
NVIC_PriorityGroup_1 0-1 0-7 1 bits for pre-emption priority
3 bits for subpriority
NVIC_PriorityGroup_2 0-3 0-3 2 bits for pre-emption priority
2 bits for subpriority
NVIC_PriorityGroup_3 0-7 0-1 3 bits for pre-emption priority
1 bits for subpriority
NVIC_PriorityGroup_4 0-15 0 4 bits for pre-emption priority
0 bits for subpriority

DMA

各个通道的DMA1请求一览

外设 DMA1_Channel1 DMA1_Channel2 DMA1_Channel3 DMA1_Channel4 DMA1_Channel5 DMA1_Channel6 DMA1_Channel7
ADC1 ADC1            
SPI/I2S   SPI1_RX SPI1_TX SPI/I2S2_RX SPI/I2S_TX    
USART   USART3_TX USART3_RX USART1_TX USART1_RX USART2_RX USART2_TX
I2C       I2C2_TX I2C2_RX I2C1_TX I2C1_RX
TIM1   TIM1_CH1 TIM1_CH2 TIM1_CH4
TIM1_TRIG
TIM1_COM
TIM1_UP TIM1_CH3  
TIM2 TIM2_CH3 TIM2_UP     TIM2_CH1   TIM2_CH2
TIM2_CH4
TIM3   TIM3_CH3 TIM3_CH4
TIM3_UP
    TIM3_CH1
TIM3_TRIG
 
TIM4 TIM4_CH1     TIM4_CH2 TIM4_CH3   TIM4_UP

各个通道的DMA2请求一览

外设 DMA2_Channel1 DMA2_Channel2 DMA2_Channel3 DMA2_Channel4 DMA2_Channel5
ADC3         ADC3
SPI/I2S3 SPI/I2S3_RX SPI/I2S3_TX      
UART4     UART4_RX   UART4_TX
SDIO       SDIO  
TIM5 TIM5_CH4
TIM5_TRIG
TIM5_CH3
TIM5_UP
  TIM5_CH2 TIM5_CH1
TIM6/DAC_Channel_1     TIM6_UP/DAC_Channel_1    
TIM7/DAC_Channel_2       TIM7_UP/DAC_Channel_2  
TIM8 TIM8_CH3
TIM8_UP
TIM8_CH4
TIM8_TRIG
TIM8_COM
TIM8_CH1   TIM8_CH2
  • ADC3、SDIO和TIM8的DMA请求只在大容量的产品中存在

ADC

ADC1和ADC2用于规则通道的外部触发

触发源 连接类型 EXTSEL[2:0]
TIM1_CC1事件 来自片上定时器的内部信号 000
TIM1_CC2事件 001
TIM1_CC3事件 010
TIM2_CC2事件 011
TIM3_TRGO事件 100
TIM4_CC4事件 101
EXTI线11/TIM8_TRGO事件 外部引脚/来自片上定时器的内部信号 110
SWSTART 软件控制位 111
  • TIM8_TRGO事件只存在于大容量产品
  • 对于规则通道,选中EXTI线路11或TIM8_TRGO作为外部触发事件,可以分别通过设置ADC1和ADC2的ADC1_ETRGREG_REMAP位和ADC2_ETRGREG_REMAP位实现

ADC1和ADC2用于注入通道的外部触发

触发源 连接类型 JEXTSEL[2:0]
TIM1_TRGO事件 来自片上定时器的内部信号 000
TIM1_CC4事件 001
TIM2_TRGO事件 010
TIM2_CC1事件 011
TIM3_CC4事件 100
TIM4_TRGO事件 101
EXTI线15/TIM8_CC4事件 外部引脚/来自片上定时器的内部信号 110
JSWSTART 软件控制位 111
  • TIM8_CC4事件只存在于大容量产品
  • 对于注入通道,选中EXTI线路15和TIM8CC4作为外部触发事件,可以分别通过设置ADC1和ADC2的ADC1_ETRGINJ_REMAP位和ADC2 ETRGINJ_REMAP位实现

ADC3用于规则通道的外部触发

触发源 连接类型 EXTSEL[2:0]
TIM3_CC1事件 来自片上定时器的内部信号 000
TIM2_CC3事件 001
TIM1_CC3事件 010
TIM8_CC1事件 011
TIM8_TRGO事件 100
TIM5_CC1事件 101
TIM5_CC3事件 110
SWSTART 软件控制位 111

ADC3用于注入通道的外部触发

触发源 连接类型 JEXTSEL[2:0]
TIM1_TRGO事件 来自片上定时器的内部信号 000
TIM1_CC4事件 001
TIM4_CC3事件 010
TIM8_CC2事件 011
TIM8_CC4事件 100
TIM5_TRGO事件 101
TIM5_CC4事件 110
JSWSTART 软件控制位 111

ADC通道

通道 ADC1-IO ADC2-IO ADC3-IO
ADC_Channel_0 PA0 PA0 PA0
ADC_Channel_1 PA1 PA1 PA1
ADC_Channel_2 PA2 PA2 PA2
ADC_Channel_3 PA3 PA3 PA3
ADC_Channel_4 PA4 PA4 N
ADC_Channel_5 PA5 PA5 N
ADC_Channel_6 PA6 PA6 N
ADC_Channel_7 PA7 PA7 N
ADC_Channel_8 PB0 PB0 N
ADC_Channel_9 PB1 PB1 VSS
ADC_Channel_10 PC0 PC0 PC0
ADC_Channel_11 PC1 PC1 PC1
ADC_Channel_12 PC2 PC2 PC2
ADC_Channel_13 PC3 PC3 PC3
ADC_Channel_14 PC4 PC4 VSS
ADC_Channel_15 PC5 PC5 VSS
ADC_Channel_16 TempSensor VSS VSS
ADC_Channel_17 Vrefint VSS VSS

DAC

DAC触发

触发源 连接类型 TSELx[2:0]
TIM6_TRGO事件 来自片上定时器的内部信号 000
互联型产品为TIM3_TRGO事件
大容量产品为TIM8_TRGO事件
001
TIM7_TRGO事件 010
TIM5_TRGO事件 011
TIM2_TRGO事件 100
TIM4_TRGO事件 101
EXTI线路9 外部引脚 110
SWTRIG(软件触发) 软件控制位 111

通道

通道 IO
Channel_0 PA4
Channel_1 PA5

TIM

定时器分类

分类 定时器 计数器分辨率 计数器类型 捕获/比较通道 互补输出
基本定时器 TIM6 16位 向上 0
基本定时器 TIM7 16位 向上 0
通用定时器 TIM2 16位 向上/向下 4
通用定时器 TIM3 16位 向上/向下 4
通用定时器 TIM4 16位 向上/向下 4
通用定时器 TIM5 16位 向上/向下 4
高级定时器 TIM1 16位 向上/向下 4
高级定时器 TIM8 16位 向上/向下 4

定时时间计算

$ TIME=\frac{(TIM\_Period+1)\times (TIM\_Prescaler+1)}{CLK} $

USART

波特率计算

$ USART\_BaudRate=\frac{PCLKx}{16 \times USARTDIV} $

$ IntegerDivider = \frac{PCLKx}{16 \times USART\_InitStruct \to USART\_BaudRate}$

$ FractionalDivider = ((IntegerDivider - ((u32) IntegerDivider)) \times 16) + 0.5$

波特率误差

波特率 fPCLK = 36MHz fPCLK = 72MHz
Kbps 实际 置于波特率寄存器中的值 误差% 实际 置于波特率寄存器中的值 误差
2.4 2.400 937.5 0% 2.400 1875 0%
9.6 9.600 234.375 0% 9.600 468.75 0%
19.2 19.2 117.1875 0% 19.2 234.375 0%
57.6 57.6 39.0625 0% 57.6 78.125 0%
115.2 115.384 19.5 0.15% 115.2 139.0625 0%
230.4 230.769 9.75 0.16% 230.769 19.5 0.16%
460.8 461.538 4.875 0.16% 461.538 9.75 0.16%
921.6 923.076 2.4375 0.16% 923.076 4.875 0.16%
2250 2250 1 0% 2250 2 0%
4500 不可能 不可能 不可能 4500 1 0%
  • CPU的时钟频率越低,则某一特定波特率的误差也越低。可以达到的波特率上限可以由这组数据得到。
  • 只有USART1使用PCLK2(最高72MHz)。其它USART使用PCLK1(最高36MHz)

USART中断请求

中断事件 事件标志 使能位
发送数据寄存器空 TXE TXEIE
CTS标志 CTS CTSIE
发送完成 TC TCIE
接收数据就绪可读 RXNE RXNEIE
检测到数据溢出 ORE
检测到空闲线路 IDLE IDLEIE
奇偶检验错 PE PEIE
断开标志 LBD LBDIE
噪声标志,多缓冲通信中的溢出错误和帧错误 NE或ORT或FE EIE(1)
  1. 仅当使用DMA接收数据时,才使用这个标志位

USART的各种中断事件被连接到同一个中断向量,有以下各种中断事件:

  • 发送期间:发送完成、清除发送、发送数据寄存器空。
  • 接收期间:空闲总线检测、溢出错误、接收数据寄存器非空、校验错误、LIN断开符号检测、噪音标志(仅在多缓冲器通信)和帧错误(仅在多缓冲器通信)

USART模式配置

USART模式 USART1 USART2 USART3 USART4 USART5
异步模式 支持 支持 支持 支持 支持
硬件流控制 支持 支持 支持 不支持 不支持
多缓存通讯(DMA) 支持 支持 支持 支持 不支持
多处理器通讯 支持 支持 支持 支持 支持
同步 支持 支持 支持 不支持 不支持
智能卡 支持 支持 支持 不支持 不支持
半双工(单线模式) 支持 支持 支持 支持 支持
IrDA 支持 支持 支持 支持 支持
LIN 支持 支持 支持 支持 支持

SPI

中断事件 事件标志 使能位
发送缓冲器空标志 TXE TXEIE
接收缓冲器非空标志 RXNE RXNEIE
主模式失效事件 MODF ERRIE
溢出错误 OVR
CRC错误标志 CRCERR