在好例子网,分享、交流、成长!
您当前所在位置:首页C/C++ 开发实例嵌入式开发 → RM0367 参考手册.pdf(stm32l0)

RM0367 参考手册.pdf(stm32l0)

嵌入式开发

下载此实例
  • 开发语言:C/C++
  • 实例大小:7.54M
  • 下载次数:7
  • 浏览次数:215
  • 发布时间:2021-04-07
  • 实例类别:嵌入式开发
  • 发 布 人:asdd_1
  • 文件格式:.pdf
  • 所需积分:2
 相关标签: STM32 STM3 stm 32 ST

实例介绍

【实例简介】基于超低功耗 STM32L0x3 高级 ARM®的 32 位 MCU
【实例截图】

【核心代码】

目录
1 文档约定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
1.1 寄存器相关缩写词列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
1.2 词汇表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
1.3 外设可用性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
1.4 产品类别定义 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
2 系统和存储器概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.1 系统架构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.1.1 S0:Cortex® 总线 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
2.1.2 S1:DMA 总线 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
2.1.3 总线矩阵 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
AHB/APB 总线桥 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55
2.2 存储器组织结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
2.2.1 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
2.2.2 存储器映射和寄存器边界地址 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
2.3 嵌入式 SRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
2.4 自举配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
存储区交换(仅限第 5 类器件). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61
物理重映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61
内部自举程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61
3 Flash 程序存储器和数据 EEPROM (FLASH) . . . . . . . . . . . . . . . . . . . . . . 62
3.1 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
3.2 NVM 主要特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
3.3 NVM 功能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.3.1 NVM 的构成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.3.2 双存储区自举功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
3.3.3 读取 NVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
读取协议 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .68
CPU 频率/工作模式/NVM 读取时间之间的关系. . . . . . . . . . . . . . . . . . . . . . . . . .69
数据缓冲 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .70
3.3.4 写入/擦除 NVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
写入/擦除协议 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76
解锁/锁定操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .77
文档 ID 025274 Rev 1 [English Rev 4] 3/952
RM0367 目录
38
NVM 写入/擦除操作的详细说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79
对半页 Flash 程序存储器执行并行写入操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .85
状态寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .88
3.4 存储器保护 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
3.4.1 RDP(读保护) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
3.4.2 PcROP(专有代码读取保护) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
3.4.3 防止意外的写入/擦除操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
3.4.4 写入/擦除保护管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
3.4.5 保护错误 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
写保护错误标志 (WRPERR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .94
读错误 (RDERR). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .94
3.5 NVM 中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
3.5.1 硬性故障 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
3.6 存储器接口管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
3.6.1 操作优先级和流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
读取 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .96
写入/擦除 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .96
选项字节加载 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .96
3.6.2 操作序列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
执行写入操作时请求读取数据. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .97
执行写入操作时请求取指 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .97
执行写入操作时请求执行另一写入操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .97
3.6.3 执行读取操作时更改等待周期数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
3.6.4 掉电 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
3.7 Flash 寄存器说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
对寄存器执行读取操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .98
对寄存器执行写入操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .98
3.7.1 访问控制寄存器 (FLASH_ACR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
3.7.2 编程和擦除控制寄存器 (FLASH_PECR) . . . . . . . . . . . . . . . . . . . . . . . 100
3.7.3 掉电密钥寄存器 (FLASH_PDKEYR) . . . . . . . . . . . . . . . . . . . . . . . . . . 103
3.7.4 PECR 解锁密钥寄存器 (FLASH_PEKEYR) . . . . . . . . . . . . . . . . . . . . . 103
3.7.5 编程和擦除密钥寄存器 (FLASH_PRGKEYR) . . . . . . . . . . . . . . . . . . . 104
3.7.6 选项字节解锁密钥寄存器 (FLASH_OPTKEYR) . . . . . . . . . . . . . . . . . . 104
3.7.7 状态寄存器 (FLASH_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
3.7.8 选项字节寄存器 (FLASH_OPTR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
3.7.9 写保护寄存器 1 (FLASH_WRPROT1) . . . . . . . . . . . . . . . . . . . . . . . . . 109
3.7.10 写保护寄存器 2 (FLASH_WRPROT2) . . . . . . . . . . . . . . . . . . . . . . . . . 110
3.7.11 Flash 寄存器映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
目录 RM0367
4/952 文档 ID 025274 Rev 1 [English Rev 4]
3.8 选项字节 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .112
3.8.1 选项字节说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
3.8.2 加载保护标志时发生不匹配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
3.8.3 通过软件重载选项字节 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
4 循环冗余校验计算单元(CRC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
4.1 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114
4.2 CRC 主要特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114
4.3 CRC 功能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114
多项式可编程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .115
4.4 CRC 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .116
4.4.1 数据寄存器 (CRC_DR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
4.4.2 独立数据寄存器 (CRC_IDR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
4.4.3 控制寄存器 (CRC_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
4.4.4 CRC 初始值 (CRC_INIT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
4.4.5 CRC 多项式 (CRC_POL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
4.4.6 CRC 寄存器映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
5 防火墙 (FW) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
5.1 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
5.2 防火墙主要特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
5.3 防火墙功能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
5.3.1 防火墙 AMBA 总线监听 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
5.3.2 功能要求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
调试注意事项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .121
写保护. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .122
中断管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .122
5.3.3 防火墙段 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
代码段. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .122
非易失性数据段 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .122
易失性数据段 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .122
5.3.4 段访问方式及其属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
不同防火墙状态下的段访问 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .123
段属性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .123
5.3.5 防火墙初始化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
5.3.6 防火墙状态 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
打开防火墙 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .126
关闭防火墙 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .126
文档 ID 025274 Rev 1 [English Rev 4] 5/952
RM0367 目录
38
5.4 防火墙寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
5.4.1 代码段起始地址寄存器 (FW_CSSA) . . . . . . . . . . . . . . . . . . . . . . . . . . 127
5.4.2 代码段长度寄存器 (FW_CSL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
5.4.3 非易失性数据段起始地址寄存器 (FW_NVDSSA) . . . . . . . . . . . . . . . . . 128
5.4.4 非易失性数据段长度寄存器 (FW_NVDSL) . . . . . . . . . . . . . . . . . . . . . . 128
5.4.5 易失性数据段起始地址寄存器 (FW_VDSSA) . . . . . . . . . . . . . . . . . . . . 129
5.4.6 易失性数据段长度寄存器 (FW_VDSL) . . . . . . . . . . . . . . . . . . . . . . . . . 129
5.4.7 配置寄存器 (FW_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
5.4.8 防火墙寄存器映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
6 电源控制 (PWR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
6.1 电源 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
6.1.1 独立 A/D 和 DAC 转换器电源和参考电压 . . . . . . . . . . . . . . . . . . . . . . 133
在具有多于 64 个引脚和 UFBGA64 的封装上 . . . . . . . . . . . . . . . . . . . . . . . . . .133
在 64 引脚及以下的封装上(除了 BGA 封装) . . . . . . . . . . . . . . . . . . . . . . . . .133
6.1.2 独立 LCD 供电 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
6.1.3 RTC 和 RTC 备份寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
RTC 寄存器访问 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .134
6.1.4 调压器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
6.1.5 动态电压调节管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
范围 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .135
范围 2 和 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .135
6.1.6 动态电压调节配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
6.1.7 当 VDD 降至 1.71 V 以下时的调压器和时钟管理 . . . . . . . . . . . . . . . . . 136
6.1.8 修改 VCORE 范围时的调压器和时钟管理 . . . . . . . . . . . . . . . . . . . . . . 137
6.1.9 当 VDD 介于 1.71 V 到 2.0 V 之间时的电压范围和限制 . . . . . . . . . . . 137
6.2 电源监控器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
6.2.1 上电复位 (POR)/掉电复位 (PDR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
6.2.2 欠压复位 (BOR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
6.2.3 可编程电压检测器 (PVD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
6.2.4 内部参考电压 (VREFINT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
6.3 低功耗模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
6.3.1 低功耗模式下时钟的行为 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
睡眠和低功耗睡眠模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .143
停止和待机模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .143
6.3.2 降低系统时钟速度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
6.3.3 外设时钟门控 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
6.3.4 低功耗运行模式(LP 运行) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
目录 RM0367
6/952 文档 ID 025274 Rev 1 [English Rev 4]
进入低功耗运行模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .144
退出低功耗运行模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .144
6.3.5 进入低功耗模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
6.3.6 退出低功耗模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
6.3.7 睡眠模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
睡眠模式下的 I/O 状态 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .145
进入睡眠模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .145
退出睡眠模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .145
6.3.8 低功耗睡眠模式(LP 睡眠) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
低功耗睡眠模式下的 I/O 状态 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .147
进入低功耗睡眠模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .147
退出低功耗睡眠模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .147
6.3.9 停止模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
低功耗睡眠模式下的 I/O 状态 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .149
进入停止模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .149
退出停止模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .149
6.3.10 待机模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
待机模式下的 I/O 状态 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .151
进入待机模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .151
退出待机模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .151
调试模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .152
6.3.11 使用 RTC 和比较器从停止和待机模式唤醒器件 . . . . . . . . . . . . . . . . . . 152
从停止模式的 RTC 自动唤醒 (AWU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .153
从待机模式的 RTC 自动唤醒 (AWU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .153
从停止模式的比较器自动唤醒 (AWU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .153
6.4 电源控制寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
6.4.1 PWR 电源控制寄存器 (PWR_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
6.4.2 PWR 电源控制/状态寄存器 (PWR_CSR) . . . . . . . . . . . . . . . . . . . . . . 157
6.4.3 PWR 寄存器映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
7 复位和时钟控制 (RCC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
7.1 复位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
7.1.1 系统复位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
软件复位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .160
低功耗管理复位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .160
选项字节加载器复位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .160
7.1.2 电源复位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
7.1.3 RTC 和备份寄存器复位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
7.2 时钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
文档 ID 025274 Rev 1 [English Rev 4] 7/952
RM0367 目录
38
7.2.1 HSE 时钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
外部源(HSE 旁路) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .165
外部晶振/陶瓷谐振器(HSE 晶振). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .165
7.2.2 HSI16 时钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
校准 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .165
7.2.3 MSI 时钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
校准 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .166
7.2.4 HSI48 时钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
7.2.5 PLL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
7.2.6 LSE 时钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
外部源(LSE 旁路). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .167
7.2.7 LSI 时钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
LSI 测量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .168
7.2.8 系统时钟 (SYSCLK) 选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
7.2.9 系统时钟源频率与电压范围 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
7.2.10 HSE 时钟安全系统(CSS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
7.2.11 LSE 时钟安全系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
7.2.12 RTC 和 LCD 时钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
7.2.13 看门狗时钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
7.2.14 时钟输出功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
7.2.15 基于 TIM21 的内部/外部时钟测量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
7.2.16 TIM2/TIM21/TIM22 独立于系统时钟的时钟源 . . . . . . . . . . . . . . . . . . . 171
7.3 RCC 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
7.3.1 时钟控制寄存器 (RCC_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
7.3.2 内部时钟源校准寄存器 (RCC_ICSCR) . . . . . . . . . . . . . . . . . . . . . . . . 175
7.3.3 时钟恢复 RC 寄存器 (RCC_CRRCR) . . . . . . . . . . . . . . . . . . . . . . . . . 176
7.3.4 时钟配置寄存器 (RCC_CFGR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
7.3.5 时钟中断使能寄存器 (RCC_CIER) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
7.3.6 时钟中断标志寄存器 (RCC_CIFR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
7.3.7 时钟中断清零寄存器 (RCC_CICR) . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
7.3.8 GPIO 复位寄存器 (RCC_IOPRSTR) . . . . . . . . . . . . . . . . . . . . . . . . . . 183
7.3.9 AHB 外设复位寄存器 (RCC_AHBRSTR) . . . . . . . . . . . . . . . . . . . . . . . 184
7.3.10 APB2 外设复位寄存器 (RCC_APB2RSTR) . . . . . . . . . . . . . . . . . . . . . 185
7.3.11 APB1 外设复位寄存器 (RCC_APB1RSTR) . . . . . . . . . . . . . . . . . . . . . 187
7.3.12 GPIO 时钟使能寄存器 (RCC_IOPENR) . . . . . . . . . . . . . . . . . . . . . . . . 189
7.3.13 AHB 外设时钟使能寄存器 (RCC_AHBENR) . . . . . . . . . . . . . . . . . . . . 190
7.3.14 APB2 外设时钟使能寄存器 (RCC_APB2ENR) . . . . . . . . . . . . . . . . . . 191
7.3.15 APB1 外设时钟使能寄存器 (RCC_APB1ENR) . . . . . . . . . . . . . . . . . . 193
目录 RM0367
8/952 文档 ID 025274 Rev 1 [English Rev 4]
7.3.16 睡眠模式下的 GPIO 时钟使能寄存器 (RCC_IOPSMENR) . . . . . . . . . . 196
7.3.17 睡眠模式下的 AHB 外设时钟使能寄存器 (RCC_AHBSMENR) . . . . . . 197
7.3.18 睡眠模式下的 APB2 外设时钟使能寄存器 (RCC_APB2SMENR) . . . . 198
7.3.19 睡眠模式下的 APB1 外设时钟使能寄存器 (RCC_APB1SMENR) . . . . 199
7.3.20 时钟配置寄存器 (RCC_CCIPR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
7.3.21 控制/状态寄存器 (RCC_CSR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
7.3.22 RCC 寄存器映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
8 时钟恢复系统 (CRS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
8.1 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
8.2 CRS 主要特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
8.3 CRS 功能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .211
8.3.1 CRS 框图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
8.3.2 同步输入 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
8.3.3 频率误差测量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
8.3.4 频率误差评估和自动微调 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
8.3.5 CRS 初始化和配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
RELOAD 值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .213
FELIM 值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .214
8.4 CRS 低功耗模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
8.5 CRS 中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
8.6 CRS 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
8.6.1 CRS 控制寄存器 (CRS_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
8.6.2 CRS 配置寄存器 (CRS_CFGR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
8.6.3 CRS 中断和状态寄存器 (CRS_ISR) . . . . . . . . . . . . . . . . . . . . . . . . . . 217
8.6.4 CRS 中断标志清零寄存器 (CRS_ICR) . . . . . . . . . . . . . . . . . . . . . . . . . 219
8.6.5 CRS 寄存器映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
9 通用 I/O (GPIO) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
9.1 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
9.2 GPIO 主要特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
9.3 GPIO 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
9.3.1 通用 I/O (GPIO) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
9.3.2 I/O 引脚复用功能复用器和映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
9.3.3 I/O 端口控制寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
9.3.4 I/O 端口数据寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
文档 ID 025274 Rev 1 [English Rev 4] 9/952
RM0367 目录
38
9.3.5 I/O 数据位操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
9.3.6 GPIO 锁定机制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
9.3.7 I/O 复用功能输入/输出 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
9.3.8 外部中断线/唤醒线 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
9.3.9 输入配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
9.3.10 输出配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
9.3.11 复用功能配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
9.3.12 模拟配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
9.3.13 将 HSE 或 LSE 振荡器引脚用作 GPIO . . . . . . . . . . . . . . . . . . . . . . . . 229
9.3.14 在 RTC 电源域中使用 GPIO 引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
9.4 GPIO 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
9.4.1 GPIO 端口模式寄存器 (GPIOx_MODER)(x =A..E 和 H) . . . . . . . . . 229
9.4.2 GPIO 端口输出类型寄存器 (GPIOx_OTYPER)(x = A..E 和 H) . . . . 230
9.4.3 GPIO 端口输出速度寄存器 (GPIOx_OSPEEDR)(x = A..E 和 H) . . . 230
9.4.4 GPIO 端口上拉/下拉寄存器 (GPIOx_PUPDR)(x = A..E 和 H) . . . . 231
9.4.5 GPIO 端口输入寄存器 (GPIOx_OTYPER)(x = A..E 和 H) . . . . . . . . 231
9.4.6 GPIO 端口输出数据寄存器 (GPIOx_ODR)(x = A..E 和 H) . . . . . . . 232
9.4.7 GPIO 端口置位/复位寄存器 (GPIOx_BSRR)(x = A..E 和 H) . . . . . 232
9.4.8 GPIO 端口配置锁定寄存器 (GPIOx_LCKR)(x = A..E 和 H) . . . . . . . 233
9.4.9 GPIO 复用功能低位寄存器 (GPIOx_AFRL)(x = A..E 和 H) . . . . . . . 234
9.4.10 GPIO 复用功能高位寄存器 (GPIOx_AFRH)(x = A..E 和 H) . . . . . . 235
9.4.11 GPIO 端口位复位寄存器 (GPIOx_BRR)(x =A..E 和 H) . . . . . . . . . . 235
9.4.12 GPIO 寄存器映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
10 系统配置控制器 (SYSCFG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
10.1 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
10.2 SYSCFG 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
10.2.1 SYSCFG 存储器重映射寄存器 (SYSCFG_CFGR1) . . . . . . . . . . . . . . 239
10.2.2 SYSCFG 外设模式配置寄存器 (SYSCFG_CFGR2) . . . . . . . . . . . . . . 240
10.2.3 参考控制和状态寄存器 (SYSCFG_CFGR3) . . . . . . . . . . . . . . . . . . . . 241
10.2.4 SYSCFG 外部中断配置寄存器 1 (SYSCFG_EXTICR1) . . . . . . . . . . . 243
10.2.5 SYSCFG 外部中断配置寄存器 2 (SYSCFG_EXTICR2) . . . . . . . . . . . 243
10.2.6 SYSCFG 外部中断配置寄存器 3 (SYSCFG_EXTICR3) . . . . . . . . . . . 244
10.2.7 SYSCFG 外部中断配置寄存器 4 (SYSCFG_EXTICR4) . . . . . . . . . . . 244
10.2.8 SYSCFG 寄存器映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
11 直接存储器访问控制器 (DMA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
目录 RM0367
10/952 文档 ID 025274 Rev 1 [English Rev 4]
11.1 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
11.2 DMA 主要特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
11.3 DMA 功能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
11.3.1 DMA 事务 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
11.3.2 仲裁器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
11.3.3 DMA 通道 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
数据大小可编程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .248
指针递增 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .248
通道配置流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .249
循环模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .249
存储器到存储器模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .249
11.3.4 可编程数据宽度、数据对齐和字节存储次序 . . . . . . . . . . . . . . . . . . . . 250
解决 AHB 外设无法支持字节或半字写操作的问题 . . . . . . . . . . . . . . . . . . . . . . .251
11.3.5 错误管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
11.3.6 DMA 中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
11.3.7 DMA 请求映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
DMA 控制器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .252
11.4 DMA 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
11.4.1 DMA 中断状态寄存器 (DMA_ISR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
11.4.2 DMA 中断标志清零寄存器 (DMA_IFCR) . . . . . . . . . . . . . . . . . . . . . . . 255
11.4.3 DMA 通道 x 配置寄存器 (DMA_CCRx)
(x = 1..7 ,其中 x 表示通道编号) . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
11.4.4 DMA 通道 x 数据数寄存器 (DMA_CNDTRx)
(x = 1..7,其中 x 表示通道编号) . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
11.4.5 DMA 通道 x 外设地址寄存器 (DMA_CPARx)
(x = 1..7,其中 x 表示通道编号) . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
11.4.6 DMA 通道 x 存储器地址寄存器 (DMA_CMARx)
(x = 1..7,其中 x 表示通道编号) . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
11.4.7 DMA 通道选择寄存器 (DMA_CSELR) . . . . . . . . . . . . . . . . . . . . . . . . . 260
11.4.8 DMA 寄存器映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
12 嵌套向量中断控制器 (NVIC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
12.1 主要特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
12.2 SysTick 校准值寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
12.3 中断和异常向量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
13 扩展中断和事件控制器 (EXTI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
13.1 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
文档 ID 025274 Rev 1 [English Rev 4] 11/952
RM0367 目录
38
13.2 EXTI 主要特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
13.3 EXTI 功能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
13.3.1 EXTI 框图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
13.3.2 唤醒事件管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
13.3.3 外设异步中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
13.3.4 硬件中断选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
13.3.5 硬件事件选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
13.3.6 软件中断/事件选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
13.4 EXTI 中断/事件线映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
13.5 EXTI 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
13.5.1 EXTI 中断屏蔽寄存器 (EXTI_IMR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
13.5.2 EXTI 事件屏蔽寄存器 (EXTI_EMR) . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
13.5.3 EXTI 上升沿触发选择寄存器 (EXTI_RTSR) . . . . . . . . . . . . . . . . . . . . . 272
13.5.4 下降沿触发选择寄存器 (EXTI_FTSR) . . . . . . . . . . . . . . . . . . . . . . . . . 273
13.5.5 EXTI 软件中断事件寄存器 (EXTI_SWIER) . . . . . . . . . . . . . . . . . . . . . 274
13.5.6 EXTI 挂起寄存器 (EXTI_PR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
13.5.7 EXTI 寄存器映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
14 模数转换器(ADC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
14.1 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
14.2 ADC 主要特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
14.3 ADC 引脚和内部信号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
14.4 ADC 功能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
14.4.1 ADC 调压器 (ADVREGEN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
ADC 内部调压器的模拟参考. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .280
ADVREG 使能序列. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .280
ADVREG 禁止序列. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .280
14.4.2 校准 (ADCAL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
校准系数强制软件程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .281
14.4.3 ADC 开关控制(ADEN、ADDIS、ADRDY) . . . . . . . . . . . . . . . . . . . 282
14.4.4 ADC 时钟(CKMODE、PRESC[3:0]、LFMEN) . . . . . . . . . . . . . . . . 283
低频 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .284
14.4.5 配置 ADC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
14.4.6 通道选择(CHSEL、SCANDIR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
温度传感器、VREFINT 和 LCD_VLCD1 内部通道 . . . . . . . . . . . . . . . . . . . . . . . .285
14.4.7 可编程采样时间 (SMP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
14.4.8 单次转换模式 (CONT=0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
目录 RM0367
12/952 文档 ID 025274 Rev 1 [English Rev 4]
14.4.9 连续转换模式 (CONT=1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
14.4.10 开始转换 (ADSTART) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
14.4.11 时序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
14.4.12 停止正在进行的转换 (ADSTP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
14.5 外部触发转换和触发极性(EXTSEL,EXTEN) . . . . . . . . . . . . . . . . . . 288
14.5.1 不连续模式 (DISCEN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
14.5.2 可编程分辨率 (RES) - 快速转换模式 . . . . . . . . . . . . . . . . . . . . . . . . . . 290
14.5.3 转换结束、采样阶段结束(EOC、EOSMP 标志) . . . . . . . . . . . . . . . 290
14.5.4 转换序列结束(EOSEQ 标志) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
14.5.5 时序图示例(单次/连续模式硬件/软件触发) . . . . . . . . . . . . . . . . . . . 291
14.6 数据管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
14.6.1 数据寄存器和数据对齐(ADC_DR、ALIGN) . . . . . . . . . . . . . . . . . . 293
14.6.2 ADC 溢出(OVR、OVRMOD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
14.6.3 在不使用 DMA 的情况下管理转换的数据序列 . . . . . . . . . . . . . . . . . . . 294
14.6.4 在不使用 DMA 且不发生溢出的情况下管理转换的数据 . . . . . . . . . . . . 294
14.6.5 使用 DMA 管理转换的数据 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
DMA 单次模式 (DMACFG=0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .295
DMA 循环模式 (DMACFG=1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .295
14.7 低功耗特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
14.7.1 等待模式转换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
14.7.2 自动关闭模式 (AUTOFF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
14.8 模拟窗口看门狗(AWDEN、AWDSGL、AWDCH、AWD_HTR/LTR、
AWD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
14.9 过采样器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
14.9.1 过采样时支持的 ADC 工作模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
14.9.2 模拟看门狗 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
14.9.3 触发模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
14.10 温度传感器和内部参考电压 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
主要特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .302
读取温度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .302
使用内部参考电压计算实际的 VDDA 电压 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .303
将电源相关的 ADC 测量值转换为绝对电压值. . . . . . . . . . . . . . . . . . . . . . . . . . .303
14.11 VLCD 电压监控 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
14.12 ADC 中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
14.13 ADC 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
14.13.1 ADC 中断和状态寄存器 (ADC_ISR) . . . . . . . . . . . . . . . . . . . . . . . . . . 305
14.13.2 ADC 中断使能寄存器 (ADC_IER) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
文档 ID 025274 Rev 1 [English Rev 4] 13/952
RM0367 目录
38
14.13.3 ADC 控制寄存器 (ADC_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
14.13.4 ADC 配置寄存器 1 (ADC_CFGR1) . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
14.13.5 ADC 配置寄存器 2 (ADC_CFGR2) . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
14.13.6 ADC 采样时间寄存器 (ADC_SMPR) . . . . . . . . . . . . . . . . . . . . . . . . . . 314
14.13.7 ADC 看门狗阈值寄存器 (ADC_TR) . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
14.13.8 ADC 通道选择寄存器 (ADC_CHSELR) . . . . . . . . . . . . . . . . . . . . . . . . 316
14.13.9 ADC 数据寄存器 (ADC_DR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
14.13.10 ADC 校准系数 (ADC_CALFACT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
14.13.11 ADC 通用配置寄存器 (ADC_CCR) . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
14.13.12 ADC 寄存器映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
15 数模转换器 (DAC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
15.1 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
15.2 DAC1 主要特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
15.3 DAC 输出缓冲器使能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
15.4 DAC 通道使能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
15.5 单模式功能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
15.5.1 DAC 数据格式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
15.5.2 DAC 通道转换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
生成单个LFSR的独立触发 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .324
生成单个三角波的独立触发 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .324
15.5.3 DAC 输出电压 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
15.5.4 DAC 触发选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
15.6 双模式功能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
15.6.1 DAC 数据格式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
15.6.2 双模式下的 DAC 通道转换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
15.6.3 双转换模式说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
独立触发(不产生波形) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .327
独立触发(生成单个 LFSR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .327
独立触发(生成不同 LFSR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .327
独立触发(生成单个三角波). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .328
独立触发(生成不同三角波). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .328
同步软件启动 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .328
同步触发(不产生波形) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .328
同步触发(生成单个 LFSR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .329
同步触发(生成不同 LFSR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .329
同步触发(生成单个三角波). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .329
同步触发(生成不同三角波). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .330
目录 RM0367
14/952 文档 ID 025274 Rev 1 [English Rev 4]
15.6.4 DAC 输出电压 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
15.6.5 DAC 触发选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
15.7 生成噪声 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
15.8 生成三角波 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
15.9 DMA 请求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
DMA 下溢 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .332
15.10 DAC 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
15.10.1 DAC 控制寄存器 (DAC_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
15.10.2 DAC 软件触发寄存器 (DAC_SWTRIGR) . . . . . . . . . . . . . . . . . . . . . . . 336
15.10.3 DAC 1 通道 12 位右对齐数据保持寄存器 (DAC_DHR12R1) . . . . . . . . 337
15.10.4 DAC 1 通道 12 位左对齐数据保持寄存器 (DAC_DHR12L1) . . . . . . . . 337
15.10.5 DAC 1 通道 8 位右对齐数据保持寄存器 (DAC_DHR8R1) . . . . . . . . . . 338
15.10.6 DAC 2 通道 12 位右对齐数据保持寄存器 (DAC_DHR12R2) . . . . . . . . 338
15.10.7 DAC 2 通道 12 位左对齐数据保持寄存器 (DAC_DHR12L2) . . . . . . . . 339
15.10.8 DAC 2 通道 8 位右对齐数据保持寄存器 (DAC_DHR8R2) . . . . . . . . . . 339
15.10.9 双 DAC 12 位右对齐数据保持寄存器 (DAC_DHR12RD) . . . . . . . . . . . 340
15.10.10 双 DAC 12 位左对齐数据保持寄存器 (DAC_DHR12LD) . . . . . . . . . . . 340
15.10.11 双 DAC 8 位右对齐数据保持寄存器 (DAC_DHR8RD) . . . . . . . . . . . . . 341
15.10.12 DAC 1 通道 数据输出寄存器 (DAC_DOR1) . . . . . . . . . . . . . . . . . . . . . 341
15.10.13 DAC 2 通道数据输出寄存器 (DAC_DOR2) . . . . . . . . . . . . . . . . . . . . . 342
15.10.14 DAC 状态寄存器 (DAC_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
15.10.15 DAC 寄存器映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
16 比较器 (COMP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
16.1 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
16.2 COMP 主要特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
16.3 COMP 功能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
16.3.1 COMP 框图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
16.3.2 COMP 引脚和内部信号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
16.3.3 COMP 复位和时钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
16.3.4 比较器锁定机制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
16.3.5 功率模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
16.4 COMP 中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
16.5 COMP 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
16.5.1 比较器 1 控制和状态寄存器 (COMP1_CSR) . . . . . . . . . . . . . . . . . . . . 348
16.5.2 比较器 2 控制和状态寄存器 (COMP2_CSR) . . . . . . . . . . . . . . . . . . . . 349
文档 ID 025274 Rev 1 [English Rev 4] 15/952
RM0367 目录
38
16.5.3 COMP 寄存器映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
17 液晶显示控制器 (LCD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
17.1 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
词汇表. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .352
17.2 LCD 主要特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
17.3 LCD 实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
17.4 LCD 功能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
17.4.1 概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
17.4.2 频率发生器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
17.4.3 公用驱动器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
COM 信号偏置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .356
COM 信号占空比 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .356
8 选 1 多路复用器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .358
17.4.4 区段驱动器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
在 1/4 或 1/8 占空比的情况下 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .359
闪烁 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .363
17.4.5 电压发生器和对比度控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
LCD 电源 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .363
LCD 中间电压. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .363
LCD 驱动器选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .364
外部去耦 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .365
死区 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .365
17.4.6 双缓冲存储器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
17.4.7 COM 和 SEG 多路复用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
输出引脚与占空比模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .366
小型封装的重映射功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .366
COM 和 SEG 功能与占空比和重映射的关系汇总. . . . . . . . . . . . . . . . . . . . . . . .367
17.4.8 流程图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
17.5 LCD 低功耗模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
17.6 LCD 中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
帧起始 (SOF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .372
更新显示完成 (UDD). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .372
17.7 LCD 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
17.7.1 LCD 控制寄存器 (LCD_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
17.7.2 LCD 帧控制寄存器 (LCD_FCR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
17.7.3 LCD 状态寄存器 (LCD_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
17.7.4 LCD 清零寄存器 (LCD_CLR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
目录 RM0367
16/952 文档 ID 025274 Rev 1 [English Rev 4]
17.7.5 LCD 显示器存储器 (LCD_RAM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
17.7.6 LCD 寄存器映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
18 触摸感应控制器(TSC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
18.1 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
18.2 TSC 主要特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
18.3 TSC 功能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
18.3.1 TSC 框图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
18.3.2 表面电荷转移采集概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
18.3.3 复位和时钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
18.3.4 电荷转移采集序列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
18.3.5 扩频功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
18.3.6 最大计数错误 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
18.3.7 采样电容 I/O 和通道 I/O 模式选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
18.3.8 采集模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
18.3.9 I/O 滞后和模拟开关控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
18.4 TSC 低功耗模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
18.5 TSC 中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
18.6 TSC 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
18.6.1 TSC 控制寄存器 (TSC_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
18.6.2 TSC 中断使能寄存器 (TSC_IER) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
18.6.3 TSC 中断清零寄存器 (TSC_ICR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
18.6.4 TSC 中断状态寄存器 (TSC_ISR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
18.6.5 TSC I/O 滞后控制寄存器 (TSC_IOHCR) . . . . . . . . . . . . . . . . . . . . . . . 394
18.6.6 TSC I/O 模拟开关控制寄存器 (TSC_IOASCR) . . . . . . . . . . . . . . . . . . 395
18.6.7 TSC I/O 采样控制寄存器 (TSC_IOSCR) . . . . . . . . . . . . . . . . . . . . . . . 395
18.6.8 TSC I/O 通道控制寄存器 (TSC_IOCCRTSC_IOCCR) . . . . . . . . . . . . . 396
18.6.9 TSC I/O 组控制状态寄存器 (TSC_IOGCSR) . . . . . . . . . . . . . . . . . . . . 397
18.6.10 TSC I/O 组 x 计数器寄存器 (TSC_IOGxCR) (x = 1..8) . . . . . . . . . . . . 397
18.6.11 TSC 寄存器映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
19 高级加密标准硬件加速器 (AES) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
19.1 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
19.2 AES 主要特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
19.3 AES 功能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
19.4 加密和生成密钥 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
文档 ID 025274 Rev 1 [English Rev 4] 17/952
RM0367 目录
38
19.5 AES 链接算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
19.5.1 电子密码本 (ECB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
19.5.2 密码块链接 (CBC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
给定消息的挂起模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .405
19.5.3 计数器模式 (CTR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
CTR 模式下的挂起模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .408
19.6 数据类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
19.7 工作模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
19.7.1 模式 1:加密 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
19.7.2 模式 2:密钥生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
19.7.3 模式 3:解密 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
19.7.4 模式 4:密钥生成和解密 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
19.8 AES DMA 接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
19.9 错误标志 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
19.10 处理时间 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
19.11 AES 中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
19.12 AES 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
19.12.1 AES 控制寄存器 (AES_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
19.12.2 AES 状态寄存器 (AES_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
19.12.3 AES 数据输入寄存器 (AES_DINR) . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
19.12.4 AES 数据输出寄存器 (AES_DOUTR) . . . . . . . . . . . . . . . . . . . . . . . . . 418
19.12.5 AES 密钥寄存器 0 (AES_KEYR0) (LSB: key [31:0]) . . . . . . . . . . . . . . 419
19.12.6 AES 密钥寄存器 1 (AES_KEYR1) (Key[63:32]) . . . . . . . . . . . . . . . . . . 419
19.12.7 AES 密钥寄存器 2 (AES_KEYR2) (Key [95:64]) . . . . . . . . . . . . . . . . . 420
19.12.8 AES 密钥寄存器 3 (AES_KEYR3) (MSB: key[127:96]) . . . . . . . . . . . . 420
19.12.9 AES 初始化向量寄存器 0 (AES_IVR0)(LSB:IVR[31:0]) . . . . . . . . 421
19.12.10 AES 初始化向量寄存器 1 (AES_IVR1) (IVR[63:32]) . . . . . . . . . . . . . . 421
19.12.11 AES 初始化向量寄存器 2 (AES_IVR2) (IVR[95:64]) . . . . . . . . . . . . . . 422
19.12.12 AES 初始化向量寄存器 3 (AES_IVR3) (MSB: IVR[127:96]) . . . . . . . . 422
19.12.13 AES 寄存器映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
20 随机数发生器 (RNG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
20.1 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
20.2 RNG 主要特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
20.3 RNG 功能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
20.3.1 操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
目录 RM0367
18/952 文档 ID 025274 Rev 1 [English Rev 4]
20.3.2 错误管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
如果 CEIS 位的值为 1(时钟错误). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .425
如果 SEIS 位的值为 1(种子错误) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .425
20.4 RNG 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
20.4.1 RNG 控制寄存器 (RNG_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
20.4.2 RNG 状态寄存器 (RNG_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
20.4.3 RNG 数据寄存器 (RNG_DR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
20.4.4 RNG 寄存器映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
21 通用定时器 (TIM2/TIM3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
21.1 TIM2/TIM3 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
21.2 TIM2/TIM3 主要特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
21.3 TIM2/TIM3 功能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
21.3.1 时基单元 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
预分频器说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .431
21.3.2 计数器模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
递增计数模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .433
递减计数模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .436
中心对齐模式(递增/递减计数) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .439
21.3.3 时钟选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
内部时钟源 (CK_INT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .443
外部时钟源模式 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .444
外部时钟源模式 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .446
21.3.4 捕获/比较通道 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
21.3.5 输入捕获模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
21.3.6 PWM 输入模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
21.3.7 强制输出模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
21.3.8 输出比较模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
21.3.9 PWM 模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
PWM 边沿对齐模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .453
递减计数配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .454
PWM 中心对齐模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .454
21.3.10 单脉冲模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
特殊情况:OCx 快速使能: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .457
21.3.11 发生外部事件时清除 OCxREF 信号 . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
21.3.12 编码器接口模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
21.3.13 定时器输入异或功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
21.3.14 定时器与外部触发同步 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
文档 ID 025274 Rev 1 [English Rev 4] 19/952
RM0367 目录
38
从模式:复位模式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .460
从模式:门控模式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .461
从模式:触发模式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .462
从模式:外部时钟模式 2   触发模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .463
21.3.15 定时器同步 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
将一个定时器用作另一个定时器的预分频器 . . . . . . . . . . . . . . . . . . . . . . . . . . . .464
使用一个定时器使能另一个定时器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .465
使用一个定时器启动另一个定时器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .467
使用一个外部触发同步的启动 2 个定时器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .468
21.3.16 调试模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
21.4 TIM2/TIM3 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
21.4.1 TIMx 控制寄存器 1 (TIMx_CR1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
21.4.2 TIMx 控制寄存器 2 (TIMx_CR2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472
21.4.3 TIMx 从模式控制寄存器 (TIMx_SMCR) . . . . . . . . . . . . . . . . . . . . . . . . 473
21.4.4 TIMx DMA/中断使能寄存器 (TIMx_DIER) . . . . . . . . . . . . . . . . . . . . . . 475
21.4.5 TIMx 状态寄存器 (TIMx_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
21.4.6 TIMx 事件生成寄存器 (TIMx_EGR) . . . . . . . . . . . . . . . . . . . . . . . . . . . 478
21.4.7 TIMx 捕获/比较模式寄存器 1 (TIMx_CCMR1) . . . . . . . . . . . . . . . . . . . 479
输出比较模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .479
输入捕获模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .481
21.4.8 TIMx 捕获/比较模式寄存器 2 (TIMx_CCMR2) . . . . . . . . . . . . . . . . . . . 482
输出比较模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .482
输入捕获模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .483
21.4.9 TIMx 捕获/比较使能寄存器 (TIMx_CCER) . . . . . . . . . . . . . . . . . . . . . 483
21.4.10 TIMx 计数器 (TIMx_CNT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485
21.4.11 TIMx 预分频器 (TIMx_PSC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485
21.4.12 TIMx 自动重载寄存器 (TIMx_ARR) . . . . . . . . . . . . . . . . . . . . . . . . . . . 485
21.4.13 TIMx 捕获/比较寄存器 1 (TIMx_CCR1) . . . . . . . . . . . . . . . . . . . . . . . . 486
21.4.14 TIMx 捕获/比较寄存器 2 (TIMx_CCR2) . . . . . . . . . . . . . . . . . . . . . . . . 486
21.4.15 TIMx 捕获/比较寄存器 3 (TIMx_CCR3) . . . . . . . . . . . . . . . . . . . . . . . . 487
21.4.16 TIMx 捕获/比较寄存器 4 (TIMx_CCR4) . . . . . . . . . . . . . . . . . . . . . . . . 487
21.4.17 TIMx DMA 控制寄存器 (TIMx_DCR) . . . . . . . . . . . . . . . . . . . . . . . . . . 488
21.4.18 TIMx 全传输 DMA 地址 (TIMx_DMAR) . . . . . . . . . . . . . . . . . . . . . . . . 488
DMA 连续传送功能使用方法示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .489
21.4.19 TIM2 选项寄存器 (TIM2_OR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490
21.4.20 TIM3 选项寄存器 (TIM3_OR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
21.5 TIMx 寄存器映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492
目录 RM0367
20/952 文档 ID 025274 Rev 1 [English Rev 4]
22 通用定时器 (TIM21/22) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
22.1 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
22.2 TIM21/22 主要特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
22.2.1 TIM21/22 主要特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
22.3 TIM21/22 功能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496
22.3.1 时基单元 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496
预分频器说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .496
22.3.2 计数器模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498
递增计数模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .498
递减计数模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .502
中心对齐模式(递增/递减计数) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .504
22.3.3 时钟选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508
内部时钟源 (CK_INT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .508
外部时钟源模式 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .511
22.3.4 捕获/比较通道 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512
22.3.5 输入捕获模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514
22.3.6 PWM 输入模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515
22.3.7 强制输出模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516
22.3.8 输出比较模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516
22.3.9 PWM 模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518
PWM 中心对齐模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .519
中心对齐模式使用建议 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .520
22.3.10 发生外部事件时清除 OCxREF 信号 . . . . . . . . . . . . . . . . . . . . . . . . . . . 521
22.3.11 单脉冲模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522
特殊情况:OCx 快速使能. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .523
22.3.12 编码器接口模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
22.3.13 TIM21/22 外部触发同步 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525
从模式:复位模式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .525
从模式:门控模式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .526
从模式:触发模式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .527
22.3.14 定时器同步 (TIM21/22) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528
22.3.15 调试模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528
22.4 TIM21/22 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529
22.4.1 TIM21/22 控制寄存器 1 (TIMx_CR1) . . . . . . . . . . . . . . . . . . . . . . . . . . 529
22.4.2 TIM21/22 控制寄存器 2 (TIMx_CR2) . . . . . . . . . . . . . . . . . . . . . . . . . . 530
22.4.3 TIM21/22 从模式控制寄存器 (TIMx_SMCR) . . . . . . . . . . . . . . . . . . . . 531
22.4.4 TIM21/22 中断使能寄存器 (TIMx_DIER) . . . . . . . . . . . . . . . . . . . . . . . 533
22.4.5 TIM21/22 状态寄存器 (TIMx_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534
文档 ID 025274 Rev 1 [English Rev 4] 21/952
RM0367 目录
38
22.4.6 TIM21/22 事件生成寄存器 (TIMx_EGR) . . . . . . . . . . . . . . . . . . . . . . . 536
22.4.7 TIM21/22 捕获/比较模式寄存器 1 (TIMx_CCMR1) . . . . . . . . . . . . . . . 537
输出比较模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .537
输入捕获模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .539
22.4.8 TIM21/22 捕获/比较使能寄存器 (TIMx_CCER) . . . . . . . . . . . . . . . . . . 540
22.4.9 TIM21/22 计数器 (TIMx_CNT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541
22.4.10 TIM21/22 预分频器 (TIMx_PSC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541
22.4.11 TIM21/22 自动重载寄存器 (TIMx_ARR) . . . . . . . . . . . . . . . . . . . . . . . 541
22.4.12 TIM21/22 捕获/比较寄存器 1 (TIMx_CCR1) . . . . . . . . . . . . . . . . . . . . 542
22.4.13 TIM21/22 捕获/比较寄存器 2 (TIMx_CCR2) . . . . . . . . . . . . . . . . . . . . 542
22.4.14 TIM21 选项寄存器 (TIM21_OR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543
22.4.15 TIM22 选项寄存器 (TIM22_OR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544
22.4.16 TIM21/22 寄存器映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545
23 基本定时器 (TIM6/7) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547
23.1 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547
23.2 TIM6/7 主要特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547
23.3 TIM6/7 功能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548
23.3.1 时基单元 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548
预分频器说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .548
23.3.2 计数模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550
23.3.3 时钟源 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553
23.3.4 调试模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554
23.4 TIM6/7 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555
23.4.1 TIM6/7 控制寄存器 1 (TIMx_CR1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555
23.4.2 TIM6/7 控制寄存器 2 (TIMx_CR2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556
23.4.3 TIM6/7 DMA/中断使能寄存器 (TIMx_DIER) . . . . . . . . . . . . . . . . . . . . 556
23.4.4 TIM6/7 状态寄存器 (TIMx_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557
23.4.5 TIM6/7 事件产生寄存器 (TIMx_EGR) . . . . . . . . . . . . . . . . . . . . . . . . . 557
23.4.6 TIM6/7 计数器 (TIMx_CNT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557
23.4.7 TIM6/7 预分频器 (TIMx_PSC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558
23.4.8 TIM6/7 自动重载寄存器 (TIMx_ARR) . . . . . . . . . . . . . . . . . . . . . . . . . 558
23.4.9 TIM6/7 寄存器映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559
24 低功耗定时器 (LPTIM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560
24.1 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560
24.2 LPTIM 主要特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560
目录 RM0367
22/952 文档 ID 025274 Rev 1 [English Rev 4]
24.3 LPTIM 实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560
24.4 LPTIM 功能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561
24.4.1 LPTIM 框图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561
24.4.2 LPTIM 复位和时钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561
24.4.3 干扰滤波器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562
24.4.4 预分频器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563
24.4.5 触发多路复用器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563
24.4.6 工作模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564
24.4.7 超时功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565
24.4.8 生成波形 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566
24.4.9 寄存器更新 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567
24.4.10 计数器模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567
24.4.11 定时器使能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568
24.4.12 编码器模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568
24.5 LPTIM 中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569
24.6 LPTIM 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570
24.6.1 LPTIM 中断和状态寄存器 (LPTIMx_ISR) . . . . . . . . . . . . . . . . . . . . . . . 570
24.6.2 LPTIM 中断清零寄存器 (LPTIMx_ICR) . . . . . . . . . . . . . . . . . . . . . . . . 571
24.6.3 LPTIM 中断使能寄存器 (LPTIMx_IER) . . . . . . . . . . . . . . . . . . . . . . . . 572
24.6.4 LPTIM 配置寄存器 (LPTIMx_CFGR) . . . . . . . . . . . . . . . . . . . . . . . . . . 573
24.6.5 LPTIM 控制寄存器 (LPTIMx_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576
24.6.6 LPTIM 比较寄存器 (LPTIMx_CMP) . . . . . . . . . . . . . . . . . . . . . . . . . . . 577
24.6.7 LPTIM 自动重载寄存器 (LPTIMx_ARR) . . . . . . . . . . . . . . . . . . . . . . . . 577
24.6.8 LPTIM 计数器寄存器 (LPTIMx_CNT) . . . . . . . . . . . . . . . . . . . . . . . . . 578
24.6.9 LPTIM 寄存器映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579
25 独立看门狗 (IWDG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580
25.1 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580
25.2 IWDG 主要特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580
25.3 IWDG 功能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580
25.3.1 IWDG 框图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580
25.3.2 窗口选项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581
使能窗口选项时配置 IWDG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .581
禁止窗口选项时配置 IWDG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .581
25.3.3 硬件看门狗 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581
25.3.4 停止和待机模式下的行为 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581
25.3.5 寄存器访问保护 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581
文档 ID 025274 Rev 1 [English Rev 4] 23/952
RM0367 目录
38
25.3.6 调试模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582
25.4 IWDG 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582
25.4.1 键寄存器 (IWDG_KR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582
25.4.2 预分频器寄存器 (IWDG_PR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583
25.4.3 重载寄存器 (IWDG_RLR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584
25.4.4 状态寄存器 (IWDG_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585
25.4.5 窗口寄存器 (IWDG_WINR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586
25.4.6 IWDG 寄存器映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586
26 系统窗口看门狗 (WWDG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587
26.1 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587
26.2 WWDG 主要特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587
26.3 WWDG 功能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587
26.3.1 使能看门狗 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588
26.3.2 控制递减计数器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588
26.3.3 看门狗中断高级特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588
26.3.4 如何设置看门狗超时 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589
26.3.5 调试模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590
26.4 WWDG 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590
26.4.1 控制寄存器 (WWDG_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590
26.4.2 配置寄存器 (WWDG_CFR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591
26.4.3 状态寄存器 (WWDG_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591
26.4.4 WWDG 寄存器映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592
27 实时时钟 (RTC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593
27.1 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593
27.2 RTC 主要特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593
27.3 RTC 功能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594
27.3.1 RTC 框图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594
27.3.2 RTC 控制的 GPIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595
27.3.3 时钟和预分频器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596
27.3.4 实时时钟和日历 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597
27.3.5 可编程闹钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597
27.3.6 周期性自动唤醒 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598
27.3.7 RTC 初始化和配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598
RTC 寄存器访问 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .598
RTC 寄存器写保护 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .598
目录 RM0367
24/952 文档 ID 025274 Rev 1 [English Rev 4]
日历初始化和配置. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .599
夏令时. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .599
编程闹钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .599
编程唤醒定时器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .600
27.3.8 读取日历 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600
当 RTC_CR 寄存器中的 BYPSHAD 控制位清零时. . . . . . . . . . . . . . . . . . . . . . .600
当 RTC_CR 寄存器中的 BYPSHAD 控制位置 1 时(旁路影子寄存器) . . . . . .600
27.3.9 复位 RTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601
27.3.10 RTC 同步 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601
27.3.11 RTC 参考时钟检测 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602
27.3.12 RTC 精密数字校准 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602
PREDIV_A<3 条件下的校准 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .603
验证 RTC 校准 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .603
动态重校准 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .604
27.3.13 时间戳功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604
27.3.14 入侵检测 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604
RTC 备份寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .604
入侵检测初始化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .605
出现入侵事件时生成触发输出. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .605
入侵事件的时间戳. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .605
对入侵输入的边沿检测 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .605
对 RTC_TAMPx 输入的带过滤电平检测. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .606
27.3.15 校准时钟输出 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606
27.3.16 闹钟输出 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606
闹钟复用功能输出. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .606
27.4 RTC 低功耗模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607
27.5 RTC 中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607
27.6 RTC 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608
27.6.1 RTC 时间寄存器 (RTC_TR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608
27.6.2 RTC 日期寄存器 (RTC_DR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609
27.6.3 RTC 控制寄存器 (RTC_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610
27.6.4 RTC 初始化和状态寄存器 (RTC_ISR) . . . . . . . . . . . . . . . . . . . . . . . . . 613
27.6.5 RTC 预分频器寄存器 (RTC_PRER) . . . . . . . . . . . . . . . . . . . . . . . . . . . 615
27.6.6 RTC 唤醒定时器寄存器 (RTC_WUTR) . . . . . . . . . . . . . . . . . . . . . . . . 616
27.6.7 RTC 闹钟 A 寄存器 (RTC_ALRMAR) . . . . . . . . . . . . . . . . . . . . . . . . . 617
27.6.8 RTC 闹钟 B 寄存器 (RTC_ALRMBR) . . . . . . . . . . . . . . . . . . . . . . . . . 618
27.6.9 RTC 写保护寄存器 (RTC_WPR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619
27.6.10 RTC 亚秒寄存器 (RTC_SSR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619
文档 ID 025274 Rev 1 [English Rev 4] 25/952
RM0367 目录
38
27.6.11 RTC 平移控制寄存器 (RTC_SHIFTR) . . . . . . . . . . . . . . . . . . . . . . . . . 620
27.6.12 RTC 时间戳时间寄存器 (RTC_TSTR) . . . . . . . . . . . . . . . . . . . . . . . . . 621
27.6.13 RTC 时间戳日期寄存器 (RTC_TSDR) . . . . . . . . . . . . . . . . . . . . . . . . . 622
27.6.14 RTC 时间戳亚秒寄存器 (RTC_TSSSR) . . . . . . . . . . . . . . . . . . . . . . . . 622
27.6.15 RTC 校准寄存器 (RTC_CALR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623
27.6.16 RTC 入侵配置寄存器 (RTC_TAMPCR) . . . . . . . . . . . . . . . . . . . . . . . . 624
27.6.17 RTC 闹钟 A 亚秒寄存器 (RTC_ALRMASSR) . . . . . . . . . . . . . . . . . . . 627
27.6.18 RTC 闹钟 B 亚秒寄存器 (RTC_ALRMBSSR) . . . . . . . . . . . . . . . . . . . 628
27.6.19 RTC 选项寄存器 (RTC_OR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628
27.6.20 RTC 备份寄存器 (RTC_BKPxR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629
27.6.21 RTC 寄存器映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630
28 内部集成电路 (I2C) 接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632
28.1 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632
28.2 I2C 主要特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632
28.3 I2C 特性实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633
28.4 I2C 功能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633
28.4.1 I2C1/3 框图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634
28.4.2 I2C2 框图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635
28.4.3 I2C 时钟要求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635
28.4.4 模式选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636
通信流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .636
28.4.5 I2C 初始化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637
使能和禁止外设 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .637
噪声滤波器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .637
I2C 时序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .638
28.4.6 软件复位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641
28.4.7 数据传输 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642
接收 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .642
发送 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .643
硬件传输管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .643
28.4.8 I2C 从模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644
I2C 从模式初始化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .644
带时钟延长的从模式 (NOSTRETCH = 0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .645
不带时钟延长的从模式 (NOSTRETCH = 1) . . . . . . . . . . . . . . . . . . . . . . . . . . . .645
从器件字节控制模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .645
从发送器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .646
从接收器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .650
目录 RM0367
26/952 文档 ID 025274 Rev 1 [English Rev 4]
28.4.9 I2C 主模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652
I2C 主模式初始化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .652
主模式通信初始化(地址阶段) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .654
主接收器寻址 10 位地址从器件的初始化过程. . . . . . . . . . . . . . . . . . . . . . . . . . .655
主发送器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .656
主接收器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .660
28.4.10 I2C_TIMINGR 寄存器配置示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664
28.4.11 SMBus 特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665
简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .665
SMBUS 以 I2C 规范第 2.1 版为基础。. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .666
总线协议 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .666
地址解析协议 (ARP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .666
接收的命令和数据应答控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .666
主机通知协议 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .666
SMBus 报警 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .666
数据包错误校验 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .667
超时 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .667
总线空闲检测 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .668
28.4.12 SMBus 初始化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668
接收的命令和数据应答控制(从模式) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .668
特定地址(从模式) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .668
数据包错误校验 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .668
超时检测 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .669
总线空闲检测 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .669
28.4.13 SMBus:I2C_TIMEOUTR 寄存器配置示例 . . . . . . . . . . . . . . . . . . . . . 670
28.4.14 SMBus 从模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671
SMBus 从发送器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .671
SMBus 从接收器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .672
SMBus 主发送器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .674
SMBus 主接收器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .676
28.4.15 地址匹配时从停止模式唤醒 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677
28.4.16 错误条件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677
总线错误 (BERR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .677
仲裁丢失 (ARLO) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .678
上溢/下溢错误 (OVR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .678
数据包错误校验错误 (PECERR). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .678
超时错误 (TIMEOUT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .678
报警 (ALERT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .679
28.4.17 DMA 请求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679
使用 DMA 进行发送 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .679
使用 DMA 进行接收 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .679
文档 ID 025274 Rev 1 [English Rev 4] 27/952
RM0367 目录
38
28.4.18 调试模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 680
28.5 I2C 低功耗模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 680
28.6 I2C 中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 680
28.7 I2C 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682
28.7.1 控制寄存器 1 (I2C_CR1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682
28.7.2 控制寄存器 2 (I2C_CR2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685
28.7.3 设备自身地址 1 寄存器 (I2C_OAR1) . . . . . . . . . . . . . . . . . . . . . . . . . . 688
28.7.4 设备自身地址 2 寄存器 (I2C_OAR2) . . . . . . . . . . . . . . . . . . . . . . . . . . 689
28.7.5 时序寄存器 (I2C_TIMINGR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690
28.7.6 超时寄存器 (I2C_TIMEOUTR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691
28.7.7 中断和状态寄存器 (I2C_ISR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692
28.7.8 中断清零寄存器 (I2C_ICR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694
28.7.9 PEC 寄存器 (I2C_PECR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695
28.7.10 接收数据寄存器 (I2C_RXDR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696
28.7.11 发送数据寄存器 (I2C_TXDR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696
28.7.12 I2C寄存器映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697
29 通用同步异步收发器 (USART) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699
29.1 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699
29.2 USART 主要特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699
29.3 USART 扩展特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700
29.4 USART 实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700
29.5 USART 功能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701
29.5.1 USART 字符说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703
29.5.2 USART 发送器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705
字符发送 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .705
单字节通信 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .706
中断字符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .707
空闲字符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .707
29.5.3 USART 接收器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 708
起始位检测 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .708
字符接收 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .709
中断字符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .709
空闲字符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .709
上溢错误 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .710
选择合适的过采样方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .710
帧错误 (Framing error) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .712
接收期间可配置的停止位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .712
目录 RM0367
28/952 文档 ID 025274 Rev 1 [English Rev 4]
29.5.4 USART 波特率生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713
如何从 USARTx_BRR 寄存器中获取 USARTDIV . . . . . . . . . . . . . . . . . . . . . . .713
29.5.5 USART 接收器对时钟偏差的容差 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714
29.5.6 USART 自动波特率检测 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 716
29.5.7 使用 USART 进行多处理器通信 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717
空闲线路检测 (WAKE=0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .717
4 位/7 位地址标记检测 (WAKE=1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .718
29.5.8 使用 USART 进行 Modbus 通信 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718
Modbus/RTU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .718
Modbus/ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .719
29.5.9 USART 极性控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 719
偶校验. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .719
奇校验. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .719
接收时进行奇偶校验检查 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .719
发送时的奇偶校验生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .719
29.5.10 USART LIN(局域互连网络)模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . 720
LIN 发送 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .720
LIN 接收 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .720
29.5.11 USART 同步模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 722
29.5.12 USART 单线半双工通信 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725
29.5.13 USART 智能卡模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725
块模式 (T=1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .727
正向约定和反向约定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .728
29.5.14 USART IrDA SIR ENDEC 模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729
IrDA 低功耗模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .730
29.5.15 DMA 模式下的 USART 连续通信 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731
使用 DMA 进行发送 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .731
使用 DMA 进行接收 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .732
多缓冲区通信中的错误标志和中断生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .733
29.5.16 RS232 硬件流控制和 RS485 驱动器使能(使用 USART) . . . . . . . . . 733
RS232 RTS 流控制. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .734
RS232 CTS 流控制. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .734
RS485 驱动器使能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .735
29.5.17 使用 USART 从停止模式唤醒 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735
使用静默模式和停止模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .735
当 USART 时钟源为 HSI 时钟时,确定最大 USART 波特率允许
从停止模式正确唤醒 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .736
29.6 USART 低功耗模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736
29.7 USART 中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737
29.8 USART 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739
文档 ID 025274 Rev 1 [English Rev 4] 29/952
RM0367 目录
38
29.8.1 控制寄存器 1 (USARTx_CR1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739
29.8.2 控制寄存器 2 (USARTx_CR2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742
29.8.3 控制寄存器 3 (USARTx_CR3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745
29.8.4 波特率寄存器 (USARTx_BRR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749
29.8.5 保护时间和预分频器寄存器 (USARTx_GTPR) . . . . . . . . . . . . . . . . . . 750
29.8.6 接收器超时寄存器 (USARTx_RTOR) . . . . . . . . . . . . . . . . . . . . . . . . . . 751
29.8.7 请求寄存器 (USARTx_RQR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752
29.8.8 中断和状态寄存器 (USARTx_ISR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 753
29.8.9 中断标志清零寄存器 (USARTx_ICR) . . . . . . . . . . . . . . . . . . . . . . . . . . 757
29.8.10 接收数据寄存器 (USARTx_RDR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758
29.8.11 发送数据寄存器 (USARTx_TDR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759
29.8.12 USART 寄存器映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759
30 低功耗通用异步接收器 (LPUART) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 761
30.1 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 761
30.2 LPUART 主要特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 761
30.3 LPUART 特性实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 762
30.4 LPUART 功能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 762
30.4.1 LPUART 字符说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764
30.4.2 LPUART 发送器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 766
字符发送 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .766
单字节通信 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .767
中断字符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .768
空闲字符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .768
30.4.3 LPUART 接收器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 768
起始位检测 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .768
字符接收 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .768
中断字符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .769
空闲字符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .769
上溢错误 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .769
选择时钟源 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .770
帧错误 (Framing error) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .770
接收期间可配置的停止位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .770
30.4.4 LPUART 波特率生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 771
30.4.5 LPUART 接收器对时钟偏差的容差 . . . . . . . . . . . . . . . . . . . . . . . . . . . 771
30.4.6 使用 LPUART 进行多处理器通信 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 772
空闲线路检测 (WAKE=0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .773
4 位/7 位地址标记检测 (WAKE=1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .773
目录 RM0367
30/952 文档 ID 025274 Rev 1 [English Rev 4]
30.4.7 LPUART 极性控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774
偶校验. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .774
奇校验. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .775
接收时进行奇偶校验检查 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .775
发送时的奇偶校验生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .775
30.4.8 使用 LPUART 单线半双工通信 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 775
30.4.9 使用 LPUART 在 DMA 模式下进行连续通信 . . . . . . . . . . . . . . . . . . . . 775
使用 DMA 进行发送 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .776
使用 DMA 进行接收 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .777
多缓冲区通信中的错误标志和中断生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .777
30.4.10 RS232 硬件流控制和 RS485 驱动器使能(使用 LPUART) . . . . . . . . 778
RS232 RTS 流控制. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .778
RS232 CTS 流控制. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .778
RS485 驱动器使能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .779
30.4.11 使用 LPUART 从停止模式唤醒 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 779
使用静默模式和停止模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .780
当 LPUART 时钟源为 HSI 时钟时,确定最大 LPUART 波特率可使从停止模式正确
地唤醒. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .780
30.5 LPUART 低功耗模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 781
30.6 LPUART 中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 781
30.7 LPUART 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 783
30.7.1 控制寄存器 1 (LPUART_CR1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 783
30.7.2 控制寄存器 2 (LPUART_CR2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 786
30.7.3 控制寄存器 3 (LPUART_CR3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 788
30.7.4 波特率寄存器 (LPUART_BRR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 790
30.7.5 请求寄存器 (LPUART_RQR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 791
30.7.6 中断和状态寄存器 (LPUART_ISR) . . . . . . . . . . . . . . . . . . . . . . . . . . . 791
30.7.7 中断标志清零寄存器 (LPUART_ICR) . . . . . . . . . . . . . . . . . . . . . . . . . . 794
30.7.8 接收数据寄存器 (LPUART_RDR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 795
30.7.9 发送数据寄存器 (LPUART_TDR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796
30.7.10 LPUART 寄存器映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 797
31 串行外设接口/集成电路内置音频总线 (SPI/I2S) . . . . . . . . . . . . . . . . . . . 798
31.1 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798
31.1.1 SPI 主要特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798
31.1.2 SPI 扩展特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 799
31.1.3 I2S 功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 799
31.2 SPI/I2S 实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 799
文档 ID 025274 Rev 1 [English Rev 4] 31/952
RM0367 目录
38
31.3 SPI 功能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 800
31.3.1 概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 800
31.3.2 一个主器件和一个从器件之间的通信 . . . . . . . . . . . . . . . . . . . . . . . . . . 801
全双工通信 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .801
半双工通信 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .801
单工通信 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .802
31.3.3 标准多从器件通信 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803
31.3.4 多主器件通信 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 804
31.3.5 从器件选择 (NSS) 引脚管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 804
31.3.6 通信格式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 806
时钟相位和极性控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .806
数据帧格式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .807
31.3.7 SPI配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 808
31.3.8 使能 SPI 的步骤 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 808
31.3.9 数据发送和接收过程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 809
接收和发送缓冲区. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .809
发送缓冲区处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .809
接收缓冲区处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .809
序列处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .809
31.3.10 禁止 SPI 的步骤 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 811
31.3.11 使用 DMA(直接存储器寻址)进行通信 . . . . . . . . . . . . . . . . . . . . . . . 812
31.3.12 SPI 状态标志 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814
发送缓冲区为空 (TXE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .814
接收缓冲区非空 (RXNE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .814
忙标志 (BSY) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .814
31.3.13 SPI 错误标志 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814
上溢标志 (OVR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .814
模式故障 (MODF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .815
CRC 错误 (CRCERR). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .815
TI 模式帧格式错误 (FRE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .815
31.4 SPI 特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815
31.4.1 TI 模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815
主模式下的 TI 协议 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .815
31.4.2 CRC 计算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816
CRC 原理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .816
CPU 管理的 CRC 传输 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .817
DMA 管理的 CRC 传输. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .817
复位 SPIx_TXCRC 和 SPIx_RXCRC 值. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .817
31.5 SPI 中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 818
目录 RM0367
32/952 文档 ID 025274 Rev 1 [English Rev 4]
31.6 I2S 功能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 819
31.6.1 I2S 一般说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 819
31.6.2 支持的音频协议 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820
I
2S Philips 标准. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .821
MSB 对齐标准 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .823
LSB 对齐标准 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .824
PCM 标准 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .826
31.6.3 时钟发生器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826
31.6.4 I2S 主模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 829
步骤 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .829
发送序列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .829
接收序列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .829
31.6.5 I2S 从模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 830
发送序列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .830
接收序列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .831
31.6.6 I2S 状态标志 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831
忙标志 (BSY) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .831
发送缓冲区为空 (TXE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .832
接收缓冲区非空 (RXNE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .832
通道方向 (CHSIDE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .832
31.6.7 I2S 错误标志 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 832
下溢标志 (UDR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .832
上溢标志 (OVR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .832
帧错误标志 (FRE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .833
31.6.8 I2S 中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833
31.6.9 DMA 特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833
31.7 SPI 和 I2S 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 834
31.7.1 SPI 控制寄存器 1 (SPI_CR1)(不用于 I2S 模式) . . . . . . . . . . . . . . . 834
31.7.2 SPI 控制寄存器 2 (SPI_CR2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 836
31.7.3 SPI 状态寄存器 (SPI_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837
31.7.4 SPI 数据寄存器 (SPI_DR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 838
31.7.5 SPI CRC 多项式寄存器 (SPI_CRCPR)(不用于 I2S 模式) . . . . . . . . 839
31.7.6 SPI RX CRC 寄存器 (SPI_RXCRCR)(不用于 I2S 模式) . . . . . . . . . 839
31.7.7 SPI TX CRC 寄存器 (SPI_TXCRCR)(不用于 I2S 模式) . . . . . . . . . 840
31.7.8 SPI_I2S 配置寄存器 (SPI_I2SCFGR) . . . . . . . . . . . . . . . . . . . . . . . . . 841
31.7.9 SPI_I2S 预分频器寄存器 (SPI_I2SPR) . . . . . . . . . . . . . . . . . . . . . . . . 842
31.7.10 SPI 寄存器映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843
32 通用串行总线全速设备接口 (USB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 844
文档 ID 025274 Rev 1 [English Rev 4] 33/952
RM0367 目录
38
32.1 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 844
32.2 USB 主要特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 844
32.3 USB 实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 844
32.4 USB 功能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 845
32.4.1 USB 模块说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 846
32.5 编程注意事项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 847
32.5.1 通用 USB 设备编程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 847
32.5.2 系统复位和上电复位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 847
USB 复位(RESET 中断). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .847
数据包缓冲区的结构和用法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .848
端点初始化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .849
IN 数据包(数据传送). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .849
OUT 和 SETUP 数据包(数据接收). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .849
控制传输 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .850
32.5.3 双缓冲端点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 851
32.5.4 同步传输 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 853
32.5.5 挂起/恢复事件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 854
32.6 USB 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855
32.6.1 通用寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855
USB 控制寄存器 (USB_CNTR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .855
USB 中断状态寄存器 (USB_ISTR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .857
USB 帧数寄存器 (USB_FNR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .859
USB 设备地址 (USB_DADDR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .860
缓冲区表地址 (USB_BTABLE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .860
LPM 控制和状态寄存器 (USB_LPMCSR). . . . . . . . . . . . . . . . . . . . . . . . . . . . . .861
电池充电检测器 (USB_BCDR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .861
端点相关寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .862
USB 端点 n 寄存器 (USB_EPnR),n=[0..7] . . . . . . . . . . . . . . . . . . . . . . . . . . . .863
32.6.2 缓冲区描述符表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 866
发送缓冲区地址 n (USB_ADDRn_TX) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .866
发送字节数 n (USB_COUNTn_TX) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .867
接收缓冲区地址 n (USB_ADDRn_RX) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .867
接收字节数 n (USB_COUNTn_RX) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .867
32.6.3 USB 寄存器映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 869
33 调试支持 (DBG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 871
33.1 概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 871
33.2 ARM® 参考文档 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 872
目录 RM0367
34/952 文档 ID 025274 Rev 1 [English Rev 4]
33.3 引脚排列和调试端口引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 872
33.3.1 SWD 端口引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 872
33.3.2 SW-DP 引脚分配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 872
33.3.3 SWD 引脚上的内部上拉和下拉 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 872
33.4 ID 代码和锁定机制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 873
33.4.1 MCU 器件 ID 代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 873
DBG_IDCODE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .873
33.5 SWD 端口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 874
33.5.1 SWD 协议简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 874
33.5.2 SWD 协议序列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 874
33.5.3 SW-DP 状态机(复位、空闲状态、ID 代码) . . . . . . . . . . . . . . . . . . . 875
33.5.4 DP 和 AP 读/写访问 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 875
33.5.5 SW-DP 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 876
33.5.6 SW-AP 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 876
33.6 内核调试 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 877
33.7 BPU(断点单元) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 878
33.7.1 BPU 功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 878
33.8 DWT(数据观察点) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 878
33.8.1 DWT 功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 878
33.8.2 DWT 程序计数器采样寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 878
33.9 MCU 调试组件 (DBG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 878
33.9.1 对低功耗模式的调试支持 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 878
33.9.2 对定时器、看门狗和 I2C 的调试支持 . . . . . . . . . . . . . . . . . . . . . . . . . . 879
33.9.3 调试 MCU 配置寄存器(DBG_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . 879
33.9.4 调试 MCU APB1 冻结寄存器 (DBG_APB1_FZ) . . . . . . . . . . . . . . . . . 880
33.9.5 调试 MCU APB2 冻结寄存器 (DBG_APB2_FZ) . . . . . . . . . . . . . . . . . 882
33.10 DBG 寄存器映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 883
34 设备电子签名 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 884
34.1 存储器大小寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 884
34.1.1 Flash 大小寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 884
34.2 唯一设备 ID 寄存器(96 位) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 884
附录 A 代码示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 886
A.1 简介. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 886
A.2 NVM/RCC 操作代码示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 886
文档 ID 025274 Rev 1 [English Rev 4] 35/952
RM0367 目录
38
A.2.1 提高 CPU 频率的准备序列代码. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 886
A.2.2 降低 CPU 频率的准备序列代码. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 886
A.2.3 从 PLL 切换到 HSI16 的序列代码. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 887
A.2.4 切换到 PLL 的序列代码. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 887
A.3 NVM 操作代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 888
A.3.1 解锁数据 EEPROM 和 FLASH_PECR 寄存器的代码示例 . . . . . . . . . . 888
A.3.2 锁定数据 EEPROM 和 FLASH_PECR 寄存器的代码示例 . . . . . . . . . . 888
A.3.3 解锁 NVM 程序存储器的代码示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 888
A.3.4 解锁选项字节区域的代码示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 889
A.3.5 写入数据 EEPROM 的代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 889
A.3.6 擦除数据 EEPROM 的代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 889
A.3.7 编程选项字节的代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 890
A.3.8 擦除选项字节的代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 890
A.3.9 对 Flash 程序存储器中的单个字进行编程的代码示例. . . . . . . . . . . . . . 891
A.3.10 对 Flash 程序存储器的半页进行编程的代码示例 . . . . . . . . . . . . . . . . . 892
A.3.11 擦除 Flash 程序存储器中一页的代码示例. . . . . . . . . . . . . . . . . . . . . . . 893
A.3.12 批量擦除代码示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 894
A.4 时钟控制器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 895
A.4.1 HSE 启动序列代码示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 895
A.4.2 PLL 配置修改代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 896
A.4.3 MCO 选择代码示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 897
A.5 GPIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 897
A.5.1 锁定机制代码示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 897
A.5.2 复用功能选择序列代码示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 897
A.5.3 模拟 GPIO 配置代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 897
A.6 DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 898
A.6.1 DMA 通道配置序列代码示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 898
A.7 中断和事件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 898
A.7.1 NVIC 初始化示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 898
A.7.2 扩展中断选择代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 898
A.8 ADC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 899
A.8.1 校准代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 899
A.8.2 ADC 使能序列代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 899
A.8.3 ADC 禁止序列代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 900
A.8.4 MCO 时钟选择代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 900
A.8.5 单次转换序列代码示例 - 软件触发 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 900
目录 RM0367
36/952 文档 ID 025274 Rev 1 [English Rev 4]
A.8.6 连续转换序列代码示例 - 软件触发 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 901
A.8.7 单次转换序列代码示例 - 硬件触发 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 901
A.8.8 连续转换序列代码示例 - 硬件触发 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 902
A.8.9 DMA 单触发模式序列代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 902
A.8.10 DMA 循环模式序列代码示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 903
A.8.11 等待模式序列代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 903
A.8.12 自动关闭和无等待模式序列代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . 903
A.8.13 自动关闭和等待模式序列代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 904
A.8.14 模拟看门狗代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 904
A.8.15 过采样代码示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 905
A.8.16 温度配置代码示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 905
A.8.17 温度计算代码示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 905
A.9 DAC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 906
A.9.1 独立触发(不产生波形)代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 906
A.9.2 独立触发(生成单个三角波)代码示例. . . . . . . . . . . . . . . . . . . . . . . . . 906
A.9.3 DMA 初始化代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 906
A.10 TSC 代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 907
A.10.1 TSC 配置代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 907
A.10.2 TSC 中断代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 908
A.11 定时器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 908
A.11.1 TI2 上升沿递增计数器代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 908
A.11.2 每 2 个 ETR 上升沿递增计数器代码示例 . . . . . . . . . . . . . . . . . . . . . . . 908
A.11.3 输入捕捉配置代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 909
A.11.4 输入捕捉数据管理代码示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 909
A.11.5 PWM 输入配置代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 910
A.11.6 采用 DMA 的 PWM 输入配置代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . 910
A.11.7 输出比较配置代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 911
A.11.8 边沿对齐 PWM 配置示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 911
A.11.9 中心对齐 PWM 配置示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 912
A.11.10 清零 OCxREF 的 ETR 配置代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . 912
A.11.11 编码器接口代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 913
A.11.12 复位模式代码示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 913
A.11.13 门控模式代码示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 914
A.11.14 触发模式代码示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 914
A.11.15 外部时钟模式 2   触发模式代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . 915
A.11.16 单脉冲模式代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 915
A.11.17 将一个定时器用作另一个定时器的预分频器的代码示例 . . . . . . . . . . . . 916
文档 ID 025274 Rev 1 [English Rev 4] 37/952
RM0367 目录
38
A.11.18 使用一个定时器使能另一个定时器的代码示例 . . . . . . . . . . . . . . . . . . . 916
A.11.19 主器件和从器件同步代码示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 917
A.11.20 两个定时器通过一个外部触发信号同步的代码示例. . . . . . . . . . . . . . . . 919
A.11.21 DMA 连续传送功能代码示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 920
A.12 低功耗定时器 (LPTIM). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 921
A.12.1 脉冲计数器配置代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 921
A.13 IWDG 代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 921
A.13.1 IWDG 配置代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 921
A.13.2 IWDG 配置(带窗口)代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 921
A.14 WWDG 代码示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 922
A.14.1 WWDG 配置代码示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 922
A.15 RTC 代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 922
A.15.1 RTC 日历配置代码示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 922
A.15.2 RTC 闹钟配置代码示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 923
A.15.3 RTC WUT 配置代码示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 923
A.15.4 RTC 读日历代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 924
A.15.5 RTC 校准代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 924
A.15.6 RTC 入侵和时间戳配置代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 924
A.15.7 RTC 入侵和时间戳代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 925
A.15.8 RTC 时钟输出代码示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 925
A.16 I2C 代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 925
A.16.1 将 I2C 配置为从模式的代码示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 925
A.16.2 I2C 从发送器代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 926
A.16.3 I2C 从接收器代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 926
A.16.4 将 I2C 配置为主模式以进行接收的代码示例. . . . . . . . . . . . . . . . . . . . . 926
A.16.5 将 I2C 配置为主模式以进行发送的代码示例. . . . . . . . . . . . . . . . . . . . . 927
A.16.6 I2C 主发送器代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 927
A.16.7 I2C 主接收器代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 927
A.16.8 将 I2C 配置为主模式以通过 DMA 进行发送的代码示例 . . . . . . . . . . . . 927
A.16.9 将 I2C 配置为从模式以通过 DMA 进行接收的代码示例 . . . . . . . . . . . . 928
A.17 USART 代码示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 928
A.17.1 USART 发送器配置代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 928
A.17.2 USART 发送字节代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 928
A.17.3 USART 传输完成代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 928
A.17.4 USART 接收器配置代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 928
A.17.5 USART 接收字节代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 929
目录 RM0367
38/952 文档 ID 025274 Rev 1 [English Rev 4]
A.17.6 USART LIN 模式代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 929
A.17.7 USART 同步模式代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 929
A.17.8 USART 单线半双工代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 930
A.17.9 USART 智能卡模式代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 930
A.17.10 USART IrDA 模式代码示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 930
A.17.11 USART DMA 代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 931
A.17.12 USART 硬件流控制代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 931
A.18 LPUART 代码示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 932
A.18.1 LPUART 接收器配置代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 932
A.18.2 LPUART 接收字节代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 932
A.19 SPI 代码示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 932
A.19.1 SPI 主器件配置代码示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 932
A.19.2 SPI 从器件配置代码示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 932
A.19.3 SPI 全双工通信代码示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 932
A.19.4 SPI 主器件配置(采用 DMA)代码示例 . . . . . . . . . . . . . . . . . . . . . . . . 933
A.19.5 SPI 从器件配置(采用 DMA)代码示例 . . . . . . . . . . . . . . . . . . . . . . . . 933
A.19.6 SPI 中断代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 933
A.20 DBG 代码示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 933
A.20.1 DBG 读取器件 Id 代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 933
A.20.2 LPM 下的 DBG 调试代码示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 933
35 版本历史 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 934

标签: STM32 STM3 stm 32 ST

实例下载地址

RM0367 参考手册.pdf(stm32l0)

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警