用户手册
User Manual
MM32F103xx
32 ARM Cortex M3
Ver1.15_o
保留不通知的情况下,更改相关资料的权利
目录
1 存储器和总线构架 1
1.1 系统构架 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 存储器组织 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.1 介绍 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.2 存储器映像和寄存器编址 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 内置的 SRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4 闪存存储器概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.5 启动配置 (Boot configuration) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2 嵌入式闪存 (FLASH) 8
2.1 闪存主要特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2
闪存功能描述
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2.1 闪存结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2.2 FLASH 读操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2.3 Flash 写和擦除操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3 存储保护 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.3.1 主空间写保护 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.3.2 选项字节的写保护 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.4 Flash 中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.5 选项字节说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.6 Flash 寄存器描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.6.1 闪存访问控制寄存器 (FLASH_ACR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.6.2 闪存访问控制寄存器 (FLASH_KEYR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.6.3 闪存 OPTKEY 寄存器 (FLASH_OPTKEYR) . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.6.4 闪存状态寄存器 (FLASH_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.6.5 闪存控制寄存器 (FLASH_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.6.6 闪存地址寄存器 (FLASH_AR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.6.7 选项字节寄存器 (FLASH_OBR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.6.8 写保护寄存器 (FLASH_WRPxR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3 循环冗余校验计算单元 (CRC) 27
3.1 CRC 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2 CRC 主要特征 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.3 CRC 功能介绍 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.4 CRC 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.4.1 CRC 数据寄存器 (CRC_DR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.4.2 CRC 独立数据寄存器 (CRC_IDR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.4.3 CRC 控制寄存器 (CRC_CTRL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4 电源控制 (PWR) 30
4.1 电源 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.1.1 独立的 A/D 转换器供电和参考电压 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.1.2 电池备份区域 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.1.3 电压调节器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
1
4.2 电源管理器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.2.1 上电复位 (POR) 和掉电复位 (PDR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.2.2 可编程电压监测器 (PVD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.3 低功耗模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.3.1 降低系统时钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.3.2 外部时钟的控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.3.3 睡眠模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.3.4 停机模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.3.5 待机模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.3.6 低功耗模式下的自动唤醒 (AWU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.4 电源控制寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.4.1 电源控制寄存器 (PWR_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.4.2 电源控制/状态寄存器 (PWR_CSR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
5 备份寄存器 (BKP) 43
5.1 BKP 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.2 BKP 特征 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.3 BKP 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.3.1 侵入检测 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.3.2 RTC 校准 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.4 BKP 寄存器描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.4.1 备份数据寄存器 n(BKP_DRn)(n = 1...20) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.4.2 RTC 时钟校准寄存器 (BKP_RTCCR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.4.3 RTC 时钟校准寄存器 (BKP_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.4.4 备份控制/状态寄存器 (BKP_CSR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
6 复位和时钟控制 (RCC) 48
6.1 复位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
6.1.1 系统复位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
6.1.2 电源复位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
6.1.3 备份域复位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
6.2 时钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
6.2.1 HSE 时钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
6.2.2 HSI 时钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
6.2.3 PLL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
6.2.4 LSE 时钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
6.2.5 LSI 时钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
6.2.6 系统时钟 (SYSCLK) 选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
6.2.7 时钟安全系统 (CSS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
6.2.8 RTC 时钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
6.2.9 看门狗时钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
6.2.10 时钟输出 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
6.3 RCC 寄存器堆与存储器映射描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
6.3.1 时钟控制寄存器 (RCC_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
6.3.2 时钟配置寄存器 (RCC_CFGR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
2
6.3.3 时钟中断寄存器 (RCC_CIR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
6.3.4 AHB3 外设复位寄存器 (RCC_AHB3RSTR) . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
6.3.5 AHB2 外设复位寄存器 (RCC_AHB2RSTR) . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
6.3.6 AHB1 外设复位寄存器 (RCC_AHB1RSTR) . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
6.3.7 APB2 外设复位寄存器 (RCC_APB2RSTR) . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.3.8 APB1 外设复位寄存器 (RCC_APB1RSTR) . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
6.3.9 AHB3 外设时钟使能寄存器 (RCC_AHB3ENR) . . . . . . . . . . . . . . . . . . . . . . . . . 67
6.3.10 AHB2 外设时钟使能寄存器 (RCC_AHB2ENR) . . . . . . . . . . . . . . . . . . . . . . . . . 68
6.3.11 AHB1 外设时钟使能寄存器 (RCC_AHB1ENR) . . . . . . . . . . . . . . . . . . . . . . . . . 68
6.3.12 APB2 外设时钟使能寄存器 (RCC_APB2ENR) . . . . . . . . . . . . . . . . . . . . . . . . . 70
6.3.13 APB1 外设时钟使能寄存器 (RCC_APB1ENR) . . . . . . . . . . . . . . . . . . . . . . . . . 71
6.3.14 备份域控制寄存器器 (RCC_BDCR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
6.3.15 控制状态寄存器寄存器 (RCC_CSR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
6.3.16 系统配置寄存器 (RCC_SYSCFG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
7 通用功能 I/O(GPIO) 79
7.1 GPIO 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
7.1.1 通用 I/O(GPIO) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
7.1.2 单独的位设置或位清除 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
7.1.3 外部中断/唤醒线 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
7.1.4 复用功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
7.1.5 软件重新映射 I/O 复用功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
7.1.6 GPIO 锁定机制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
7.1.7 输入配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
7.1.8 输出配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
7.1.9 复用功能配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
7.1.10 模拟输入配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
7.1.11 外设的 GPIO 配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
7.2 复用功能 I/O 和调试配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
7.2.1 把 OSC_IN/OSC_OUT 作为 GPIO 端口 PD0/PD1 . . . . . . . . . . . . . . . . . . . . . . . 87
7.2.2 SWD 复用功能重映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
7.3 GPIO 寄存器描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
7.3.1
端口配置低寄存器
(GPIOx_CRL)(x = A..E) . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
7.3.2 端口配置高寄存器 (GPIOx_CRH)(x = A..E) . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
7.3.3 端口输入数据寄存器 (GPIOx_IDR)(x = A..E) . . . . . . . . . . . . . . . . . . . . . . . . . . 89
7.3.4 端口输出数据寄存器 (GPIOx_ODR)(x = A..E) . . . . . . . . . . . . . . . . . . . . . . . . . 90
7.3.5 端口设置/清除寄存器 (GPIOx_BSRR)(x = A..E) . . . . . . . . . . . . . . . . . . . . . . . . 90
7.3.6 端口位清除寄存器 (GPIOx_BRR)(x = A..E) . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
7.3.7 端口配置锁定寄存器 (GPIOx_LCKR)(x = A..E) . . . . . . . . . . . . . . . . . . . . . . . . . 91
7.3.8 端口复用功能低位寄存器 (GPIOx_AFRL)(x = A..E) . . . . . . . . . . . . . . . . . . . . . . 92
7.3.9 端口复用功能高位寄存器 (GPIOx_AFRH)(x = A..E) . . . . . . . . . . . . . . . . . . . . . . 93
8 中断和事件 (EXTI) 95
8.1 嵌套向量中断控制器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
8.1.1 系统嘀嗒 (SysTick) 校准值寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
3
8.1.2 中断和异常向量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
8.2 外部中断/事件控制器 (EXTI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
8.2.1 主要特征 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
8.2.2 框图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
8.2.3 唤醒事件管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
8.2.4 功能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
8.2.5 外部中断/事件线路映像 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
8.3 EXTI 寄存器描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
8.3.1 中断屏蔽寄存器 (EXTI_IMR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
8.3.2 事件屏蔽寄存器 (EXTI_EMR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
8.3.3 上升沿触发选择寄存器 (EXTI_RTSR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
8.3.4 下降沿触发选择寄存器 (EXTI_FTSR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
8.3.5 软件中断事件寄存器 (EXTI_SWIER) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
8.3.6 软件中断事件寄存器 (EXTI_PR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
9 DMA 控制器 (DMA) 105
9.1 DMA 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
9.2 DMA 主要特征 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
9.3 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
9.3.1 DMA 处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
9.3.2 仲裁器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
9.3.3 DMA 通道 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
9.3.4 可编程的数据传输宽度,对齐方式和数据大小端 . . . . . . . . . . . . . . . . . . . . . . . . 108
9.3.5 错误管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
9.3.6 中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
9.3.7 DMA 请求映像 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
9.4 DMA 寄存器描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
9.4.1 DMA 中断状态寄存器 (DMA_ISR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
9.4.2 DMA 中断标志清除寄存器 (DMA_IFCR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
9.4.3 DMA 通道 x 配置寄存器 (DMA_CCRx) (x = 1…7) . . . . . . . . . . . . . . . . . . . . . . . 114
9.4.4 DMA 通道 x 传输数量寄存器 (DMA_CNDTRx) (x = 1…7) . . . . . . . . . . . . . . . . . . . 116
9.4.5 DMA 通道 x 外设地址寄存器 (DMA_CPARx) (x = 1…7) . . . . . . . . . . . . . . . . . . . . 117
9.4.6 DMA
通道
x
存储器地址寄存器
(DMA_CMARx) (x = 1
…
7) . . . . . . . . . . . . . . . . . . 117
10 模拟/数字转换 (ADC) 118
10.1 ADC 介绍 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
10.2 ADC 主要特征 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
10.3 ADC 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
10.3.1 ADC 开关控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
10.3.2 通道选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
10.4 ADC 工作模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
10.4.1 单次转换模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
10.4.2 单周期扫描模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
10.4.3 连续扫描模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
10.4.4 DMA 请求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
4