2023年12月23日发(作者:)

STM32F10xxx参考手册

参考手册

小,中和大容量的STM32F101xx, STM32F102xx和STM32F103xx

ARM内核32位高性能微控制器

导言

本参考手册针对应用开发,提供关于如何使用小容量、中容量和大容量的STM32F101xx、STM32F102xx或者STM32F103xx微控制器的存储器和外设的详细信息。在本参考手册中STM32F101xx、STM32F102xx和STM32F103xx被统称为STM32F10xxx。

STM32F10xxx系列拥有不同的存储器容量,封装和外设配置。

关于订货编号、电气和物理性能参数,请参考STM32F101xx、STM32F102xx和STM32F103xx的数据手册。

关于芯片内部闪存的编程,擦除和保护操作,请参考STM32F10xxx闪存编程手册。

关于ARM Cortex™-M3内核的具体信息,请参考Cortex™-M3技术参考手册。

相关文档

● Cortex™-M3技术参考手册,可按下述链接下载:

/help/topic/0337e/DDI0337E_cortex_m3_r1p1_

下述文档可在ST网站下载(/mcu/):

● STM32F101xx、STM32F102xx和STM32F103xx的数据手册。

● STM32F10xxx闪存编程手册。

* 感谢南京万利提供原始翻译文档

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

目录 STM32F10xxx参考手册

目录

1

文中的缩写 16

1.1

1.2

1.3

寄存器描述表中使用的缩写列表 16

术语表

可用的外设

系统构架

存储器组织

存储器映像

2.3.1

2.3.2

2.3.3

2.4

16

16

17

18

19

2

存储器和总线构架 17

2.1

2.2

2.3

嵌入式SRAM 20

位段 20

嵌入式闪存 21

23

25

25

25

26

启动配置

CRC简介

CRC主要特性

CRC功能描述

CRC寄存器

3.4.1

3.4.2

3.4.3

3.4.4

3

CRC计算单元(CRC) 25

3.1

3.2

3.3

3.4

4

数据寄存器(CRC_DR) 26

独立数据寄存器(CRC_IDR) 26

控制寄存器(CRC_CR) 27

CRC寄存器映像 27

电源控制(PWR) 28

4.1 电源

4.1.1

4.1.2

4.1.3

4.2

4.2.1

4.2.2

4.3

4.3.1

4.3.2

4.3.3

4.3.4

4.3.5

4.3.6

4.4

4.4.1

4.4.2

4.4.3

28

独立的A/D转换器供电和参考电压 28

电池备份区域 29

电压调节器 29

29

上电复位(POR)和掉电复位(PDR) 29

可编程电压监测器(PVD) 30

30

降低系统时钟 31

外部时钟的控制 31

睡眠模式 31

停止模式 32

待机模式 33

低功耗模式下的自动唤醒(AWU) 34

电源管理器

低功耗模式

电源控制寄存器 35

5

电源控制寄存器(PWR_CR) 35

电源控制/状态寄存器 36

PWR寄存器地址映像 37

备份寄存器(BKP) 38

5.1

5.2

BKP简介

BKP特性

38

38

2/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

目录 STM32F10xxx参考手册

5.3 BKP功能描述

5.3.1

5.3.2

5.4

5.4.1

5.4.2

5.4.3

5.4.4

5.4.5

38

侵入检测 38

RTC校准 39

BKP寄存器描述 39

6

备份数据寄存器x(BKP_DRx) (x = 1 … 10) 39

RTC时钟校准寄存器(BKP_RTCCR) 39

备份控制寄存器(BKP_CR) 40

备份控制/状态寄存器(BKP_CSR) 40

BKP寄存器映像 42

复位和时钟控制(RCC) 45

6.1 复位

6.1.1

6.1.2

6.1.3

6.2 时钟

6.2.1

6.2.2

6.2.3

6.2.4

6.2.5

6.2.6

6.2.7

6.2.8

6.2.9

6.2.10

6.3

6.3.1

6.3.2

6.3.3

6.3.4

6.3.5

6.3.6

6.3.7

6.3.8

6.3.9

6.3.10

6.3.11

45

系统复位 45

电源复位 45

备份域复位 46

46

HSE时钟 48

HSI时钟 48

PLL 49

LSE时钟 49

LSI时钟 49

系统时钟(SYSCLK)选择 50

时钟安全系统(CSS) 50

RTC时钟 50

看门狗时钟 50

时钟输出 50

RCC寄存器描述 51

7

时钟控制寄存器(RCC_CR) 51

时钟配置寄存器(RCC_CFGR) 52

时钟中断寄存器 (RCC_CIR) 54

APB2外设复位寄存器 (RCC_APB2RSTR) 56

APB1外设复位寄存器 (RCC_APB1RSTR) 58

AHB外设时钟使能寄存器 (RCC_AHBENR) 60

APB2外设时钟使能寄存器(RCC_APB2ENR) 61

APB1外设时钟使能寄存器(RCC_APB1ENR) 62

备份域控制寄存器 (RCC_BDCR) 65

控制/状态寄存器 (RCC_CSR) 66

RCC寄存器地址映像 68

通用和复用功能I/O(GPIO和AFIO) 69

7.1 GPIO功能描述

7.1.1

7.1.2

7.1.3

7.1.4

7.1.5

7.1.6

7.1.7

7.1.8

7.1.9

7.1.10

69

通用I/O(GPIO) 70

单独的位设置或位清除 71

外部中断/唤醒线 71

复用功能(AF) 71

软件重新映射I/O复用功能 71

GPIO锁定机制 71

输入配置 71

输出配置 72

复用功能配置 73

模拟输入配置 73

3/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

目录 STM32F10xxx参考手册

7.2 GPIO寄存器描述 75

7.2.1

7.2.2

7.2.3

7.2.4

7.2.5

7.2.6

7.2.7

7.3

7.3.1

7.3.2

7.3.3

7.3.4

7.3.5

7.3.6

7.3.7

7.3.8

7.3.9

7.4

7.4.1

7.4.2

7.4.3

7.4.4

7.4.5

7.4.6

7.5

端口配置低寄存器(GPIOx_CRL) (x=A..E) 75

端口配置高寄存器(GPIOx_CRH) (x=A..E) 75

端口输入数据寄存器(GPIOx_IDR) (x=A..E) 76

端口输出数据寄存器(GPIOx_ODR) (x=A..E) 76

端口位设置/清除寄存器(GPIOx_BSRR) (x=A..E) 77

端口位清除寄存器(GPIOx_BRR) (x=A..E) 77

端口配置锁定寄存器(GPIOx_LCKR) (x=A..E) 77

把OSC32_IN/OSC32_OUT作为GPIO 端口PC14/PC15 78

把OSC_IN/OSC_OUT引脚作为GPIO端口PD0/PD1 78

CAN复用功能重映射 79

JTAG/SWD复用功能重映射 79

ADC复用功能重映射 80

定时器复用功能重映射 80

USART复用功能重映射 81

I2C 1 复用功能重映射 82

SPI 1复用功能重映射 82

事件控制寄存器(AFIO_EVCR) 83

复用重映射和调试I/O配置寄存器(AFIO_MAPR) 83

外部中断配置寄存器1(AFIO_EXTICR1) 86

外部中断配置寄存器2(AFIO_EXTICR2) 86

外部中断配置寄存器3(AFIO_EXTICR3) 87

外部中断配置寄存器4(AFIO_EXTICR4) 87

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

AFIO寄存器描述 83

GPIO 和AFIO寄存器地址映象 88

嵌套向量中断控制器 89

8.1.1

8.1.2

系统嘀嗒(SysTick)校准值寄存器 89

中断和异常向量 89

主要特性 91

框图 92

唤醒事件管理 92

功能说明 92

外部中断/事件线路映像 94

8

中断和事件 89

8.1

8.2 外部中断/事件控制器(EXTI) 91

8.2.1

8.2.2

8.2.3

8.2.4

8.2.5

8.3 EXTI 寄存器描述 95

8.3.1

8.3.2

8.3.3

8.3.4

8.3.5

8.3.6

8.3.7

9

中断屏蔽寄存器(EXTI_IMR) 95

事件屏蔽寄存器(EXTI_EMR) 95

上升沿触发选择寄存器(EXTI_RTSR) 96

下降沿触发选择寄存器(EXTI_FTSR) 96

软件中断事件寄存器(EXTI_SWIER) 97

挂起寄存器(EXTI_PR) 97

外部中断/事件寄存器映像 98

DMA 控制器(DMA) 99

9.1

9.2

9.3

DMA简介

DMA主要特性

功能描述

99

99

100

4/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

目录 STM32F10xxx参考手册

9.3.1

9.3.2

9.3.3

9.3.4

9.3.5

9.3.6

9.3.7

9.4

9.4.1

9.4.2

9.4.3

9.4.4

9.4.5

9.4.6

9.4.7

DMA处理 100

仲裁器 100

DMA 通道 101

可编程的数据传输宽度,对齐方式和数据大小端 102

错误管理 103

中断 103

DMA请求映像 104

107 DMA寄存器

10

DMA中断状态寄存器(DMA_ISR) 107

DMA中断标志清除寄存器(DMA_IFCR) 108

DMA通道x配置寄存器(DMA_CCRx)(x = 1…7) 108

DMA通道x传输数量寄存器(DMA_CNDTRx)(x = 1…7) 110

DMA通道x外设地址寄存器(DMA_CPARx)(x = 1…7) 110

DMA通道x存储器地址寄存器(DMA_CPARx)(x = 1…7) 110

DMA寄存器映像 111

模拟/数字转换(ADC) 113

10.1

10.2

10.3

ADC介绍

ADC主要特征

ADC功能描述

113

113

114

10.3.1

10.3.2

10.3.3

10.3.4

10.3.5

10.3.6

10.3.7

10.3.8

10.3.9

10.3.10

10.4

10.5

10.6

10.7

10.8

10.9

校准

ADC开关控制 115

ADC时钟 115

通道选择 115

单次转换模式 115

连续转换模式 116

时序图 116

模拟看门狗 116

扫描模式 117

注入通道管理 117

间断模式 118

119

119

120

121

121

数据对齐

外部触发转换

DMA请求

双ADC模式

可编程的通道采样时间 120

10.9.1

10.9.2

10.9.3

10.9.4

10.9.5

10.9.6

10.9.7

10.9.8

10.9.9

同步注入模式 122

同步规则模式 123

快速交替模式 123

慢速交替模式 124

交替触发模式 124

独立模式 125

混合的规则/注入同步模式 125

混合的同步规则+交替触发模式 125

混合同步注入+交替模式 126

126

127

10.10 温度传感器

10.11 ADC中断

10.12.1

10.12 ADC寄存器描述 128

ADC状态寄存器(ADC_SR) 128

5/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

目录 STM32F10xxx参考手册

ADC控制寄存器1(ADC_CR1) 129

ADC控制寄存器2(ADC_CR2) 131

ADC采样时间寄存器1(ADC_SMPR1) 133

ADC采样时间寄存器2(ADC_SMPR2) 133

ADC注入通道数据偏移寄存器x (ADC_JOFRx)(x=1..4) 134

ADC看门狗高阀值寄存器(ADC_HTR) 134

ADC看门狗低阀值寄存器(ADC_LRT) 134

ADC规则序列寄存器1(ADC_SQR1) 135

ADC规则序列寄存器2(ADC_SQR2) 135

ADC规则序列寄存器3(ADC_SQR3) 136

ADC注入序列寄存器(ADC_JSQR) 136

ADC 注入数据寄存器x (ADC_JDRx) (x= 1..4) 137

ADC规则数据寄存器(ADC_DR) 137

ADC寄存器地址映像 138

数字/模拟转换(DAC) 140

11.1

11.2

11.3

DAC简介

DAC主要特征

DAC功能描述

140

140

141

10.12.2

10.12.3

10.12.4

10.12.5

10.12.6

10.12.7

10.12.8

10.12.9

10.12.10

10.12.11

10.12.12

10.12.13

10.12.14

10.12.15

11

11.3.1

11.3.2

11.3.3

11.3.4

11.3.5

11.3.6

11.3.7

11.3.8

11.3.9

11.4

11.4.1

11.4.2

11.4.3

11.4.4

11.4.5

11.4.6

11.4.7

11.4.8

11.4.9

11.4.10

11.4.11

11.5

11.5.1

11.5.2

11.5.3

11.5.4

11.5.5

11.5.6

11.5.7

11.5.8

11.5.9

11.5.10

使能DAC通道 141

使能DAC输出缓存 141

DAC数据格式 142

DAC转换 142

DAC输出电压 143

选择DAC触发 143

DMA请求 144

噪声生成 144

三角波生成 145

无波形生成的独立触发 145

带相同LFSR生成的独立触发 146

带不同LFSR生成的独立触发 146

带相同三角波生成的独立触发 146

带不同三角波生成的独立触发 146

同时软件启动 147

不带波形生成的同时触发 147

带相同LFSR生成的同时触发 147

带不同LFSR生成的同时触发 147

带相同三角波生成的同时触发 147

带不同三角波生成的同时触发 148

149

DAC控制寄存器(DAC_CR) 149

DAC软件触发寄存器(DAC_SWTRIGR) 151

DAC通道1的12位右对齐数据保持寄存器(DAC_DHR12R1) 152

DAC通道1的12位左对齐数据保持寄存器(DAC_DHR12L1) 152

DAC通道1的8位右对齐数据保持寄存器(DAC_DHR8R1) 152

DAC通道2的12位右对齐数据保持寄存器(DAC_DHR12R2) 153

DAC通道2的12位左对齐数据保持寄存器(DAC_DHR12L2) 153

DAC通道2的8位右对齐数据保持寄存器(DAC_DHR8R2) 153

双DAC的12位右对齐数据保持寄存器(DAC_DHR12RD) 154

双DAC的12位左对齐数据保持寄存器(DAC_DHR12LD) 154

6/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

双DAC通道转换 145

DAC寄存器

目录 STM32F10xxx参考手册

双DAC的8位右对齐数据保持寄存器(DAC_DHR8RD) 154

DAC通道1数据输出寄存器(DAC_DOR1) 155

DAC通道2数据输出寄存器(DAC_DOR2) 155

DAC寄存器映像 156

高级控制定时器(TIM1和TIM8) 157

12.1

12.2

12.3

TIM1和TIM8简介 157

TIM1和TIM8主要特性 157

TIM1和TIM8功能描述 158

时基单元 158

计数器模式 160

重复计数器 167

时钟选择 168

捕获/比较通道 171

输入捕获模式 173

PWM输入模式 174

强置输出模式 174

输出比较模式 175

PWM模式 176

互补输出和死区插入 178

使用刹车功能 179

在外部事件时清除OCxREF信号 180

产生六步PWM输出 181

单脉冲模式 182

编码器接口模式 183

定时器输入异或功能 185

与霍尔传感器的接口 185

TIMx定时器和外部触发的同步 187

定时器同步 190

调试模式 190

控制寄存器1(TIMx_CR1) 191

控制寄存器2(TIMx_CR2) 192

从模式控制寄存器(TIMx_SMCR) 193

DMA/中断使能寄存器(TIMx_DIER) 195

状态寄存器(TIMx_SR) 196

事件产生寄存器(TIMx_EGR) 197

捕获/比较模式寄存器1(TIMx_CCMR1) 198

捕获/比较模式寄存器2(TIMx_CCMR2) 200

捕获/比较使能寄存器(TIMx_CCER) 202

计数器(TIMx_CNT) 203

预分频器(TIMx_PSC) 204

自动重装载寄存器(TIMx_ARR) 204

重复计数寄存器(TIMx_RCR) 204

捕获/比较寄存器1(TIMx_CCR1) 205

捕获/比较寄存器2(TIMx_CCR2) 205

捕获/比较寄存器3(TIMx_CCR3) 205

捕获/比较寄存器(TIMx_CCR4) 206

刹车和死区寄存器(TIMx_BDTR) 206

DMA控制寄存器(TIMx_DCR) 208

连续模式的DMA地址(TIMx_DMAR) 208

7/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

11.5.11

11.5.12

11.5.13

11.5.14

12

12.3.1

12.3.2

12.3.3

12.3.4

12.3.5

12.3.6

12.3.7

12.3.8

12.3.9

12.3.10

12.3.11

12.3.12

12.3.13

12.3.14

12.3.15

12.3.16

12.3.17

12.3.18

12.3.19

12.3.20

12.3.21

12.4

12.4.1

12.4.2

12.4.3

12.4.4

12.4.5

12.4.6

12.4.7

12.4.8

12.4.9

12.4.10

12.4.11

12.4.12

12.4.13

12.4.14

12.4.15

12.4.16

12.4.17

12.4.18

12.4.19

12.4.20

TIM1和TIM8寄存器描述 191

目录 STM32F10xxx参考手册

13

TIM1和TIM8寄存器图 209

通用定时器(TIMx) 211

13.1

13.2

13.3

TIMx简介

TIMx主要功能

TIMx功能描述

211

211

212

12.4.21

13.3.1

13.3.2

13.3.3

13.3.4

13.3.5

13.3.6

13.3.7

13.3.8

13.3.9

13.3.10

13.3.11

13.3.12

13.3.13

13.3.14

13.3.15

13.3.16

13.4

13.4.1

13.4.2

13.4.3

13.4.4

13.4.5

13.4.6

13.4.7

13.4.8

13.4.9

13.4.10

13.4.11

13.4.12

13.4.13

13.4.14

13.4.15

13.4.16

13.4.17

13.4.18

13.4.19

时基单元 212

计数器模式 213

时钟选择 221

捕获/比较通道 223

输入捕获模式 225

PWM输入模式 225

强置输出模式 226

输出比较模式 226

PWM 模式 227

单脉冲模式 229

在外部事件时清除OCxREF信号 231

编码器接口模式 231

定时器输入异或功能 233

定时器和外部触发的同步 233

定时器同步 235

调试模式 239

TIMx寄存器描述 240

14

控制寄存器1(TIMx_CR1) 240

控制寄存器2(TIMx_CR2) 241

从模式控制寄存器(TIMx_SMCR) 242

DMA/中断使能寄存器(TIMx_DIER) 243

状态寄存器(TIMx_SR) 244

事件产生寄存器(TIMx_EGR) 245

捕获/比较模式寄存器1(TIMx_CCMR1) 246

捕获/比较模式寄存器2(TIMx_CCMR2) 249

捕获/比较使能寄存器(TIMx_CCER) 251

计数器(TIMx_CNT) 252

预分频器(TIMx_PSC) 252

自动重装载寄存器(TIMx_ARR) 252

捕获/比较寄存器1(TIMx_CCR1) 252

捕获/比较寄存器2(TIMx_CCR2) 253

捕获/比较寄存器3(TIMx_CCR3) 253

捕获/比较寄存器4(TIMx_CCR4) 253

DMA控制寄存器(TIMx_DCR) 254

连续模式的DMA地址(TIMx_DMAR) 254

TIMx寄存器图 255

基本定时器(TIM6和TIM7) 257

14.1

14.2

14.3

TIM6和TIM7简介 257

TIM6和TIM7的主要特性 257

TIM6和TIM7的功能 258

时基单元 258

计数模式 259

时钟源 261

调试模式 262

8/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

14.3.1

14.3.2

14.3.3

14.3.4

目录 STM32F10xxx参考手册

14.4 TIM6和TIM7寄存器 262

15

控制寄存器1(TIMx_CR1) 262

控制寄存器2(TIMx_CR2) 263

DMA/中断使能寄存器(TIMx_DIER) 263

状态寄存器(TIMx_SR) 264

事件产生寄存器(TIMx_EGR) 264

计数器(TIMx_CNT) 264

预分频器(TIMx_PSC) 265

自动重装载寄存器(TIMx_ARR) 265

TIM6和TIM7寄存器图 266

实时时钟(RTC) 267

15.1

15.2

15.3

RTC简介

主要特性

功能描述

267

267

267

14.4.1

14.4.2

14.4.3

14.4.4

14.4.5

14.4.6

14.4.7

14.4.8

14.4.9

15.3.1

15.3.2

15.3.3

15.3.4

15.3.5

15.4

15.4.1

15.4.2

15.4.3

15.4.4

15.4.5

15.4.6

15.4.7

概述 267

复位过程 268

读RTC寄存器 268

配置RTC寄存器 269

RTC标志的设置 269

RTC寄存器描述 270

16

RTC控制寄存器高位(RTC_CRH) 270

RTC控制寄存器低位(RTC_CRL) 270

RTC预分频装载寄存器(RTC_PRLH/RTC_PRLL) 271

RTC预分频器余数寄存器(RTC_DIVH / RTC_DIVL) 272

RTC计数器寄存器 (RTC_CNTH / RTC_CNTL) 272

RTC闹钟寄存器(RTC_ALRH/RTC_ALRL) 273

RTC寄存器映像 275

独立看门狗(IWDG) 276

16.1

16.2

16.3

简介

IWDG主要性能

IWDG功能描述

276

276

276

16.3.1

16.3.2

16.3.3

16.4

16.4.1

16.4.2

16.4.3

16.4.4

16.4.5

硬件看门狗 276

寄存器访问保护 276

调试模式 276

IWDG寄存器描述 277

17

键寄存器(IWDG_KR) 277

预分频寄存器(IWDG_PR) 278

重装载寄存器(IWDG_RLR) 278

状态寄存器(IWDG_SR) 279

IWDG寄存器映像 279

窗口看门狗(WWDG) 280

17.1

17.2

17.3

17.4

17.5

17.6

WWDG简介 280

WWDG主要特性 280

WWDG功能描述 280

如何编写看门狗超时程序 281

调试模式

寄存器描述

282

282

9/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

目录 STM32F10xxx参考手册

控制寄存器(WWDG_CR) 282

配置寄存器(WWDG_CFR) 283

状态寄存器(WWDG_SR) 283

WWDG寄存器映像 284

灵活的静态存储器控制器(FSMC) 285

18.1

18.2

18.3

18.4

FSMC功能描述

框图

AHB接口

285

285

286

支持的存储器和操作 286

NOR和PSRAM地址映像 288

NAND和PC卡地址映像 288

外部存储器接口信号 290

支持的存储器及其操作 291

时序规则 291

NOR闪存和PSRAM时序图 291

同步的成组读 304

NOR闪存和PSRAM控制器寄存器 308

外部存储器接口信号 313

NAND闪存/PC卡支持的存储器及其操作 314

NAND闪存、ATA和PC卡时序图 314

NAND闪存操作 315

NAND闪存预等待功能 316

NAND闪存的纠错码ECC计算(NAND闪存) 317

NAND闪存和PC卡控制器寄存器 317

17.6.1

17.6.2

17.6.3

17.6.4

18

18.3.1

18.4.1

18.4.2

18.5

18.5.1

18.5.2

18.5.3

18.5.4

18.5.5

18.5.6

18.6

18.6.1

18.6.2

18.6.3

18.6.4

18.6.5

18.6.6

18.6.7

18.7

外部设备地址映像 287

NOR闪存和PSRAM控制器 289

NAND闪存和PC卡控制器 313

FSMC寄存器地址映象 324

SDIO主要功能

SDIO总线拓扑

SDIO功能描述

325

325

328

19

SDIO接口(SDIO) 325

19.1

19.2

19.3

19.3.1

19.3.2

19.4

19.4.1

19.4.2

19.4.3

19.4.4

19.4.5

19.4.6

19.4.7

19.4.8

19.4.9

19.4.10

19.4.11

19.4.12

19.4.13

SDIO适配器 329

SDIO AHB接口 336

336

卡识别模式 336

卡复位 336

操作电压范围确认 337

卡识别过程 337

写数据块 338

读数据块 338

数据流操作,数据流写入和数据流读出(只适用于多媒体卡) 338

擦除:成组擦除和扇区擦除 339

宽总线选择和解除选择 340

保护管理 340

卡状态寄存器 342

SD状态寄存器 344

SD I/O模式 347

10/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

卡功能描述

目录 STM32F10xxx参考手册

19.4.14

19.5

19.5.1

19.5.2

19.5.3

19.5.4

19.5.5

19.5.6

19.5.7

19.5.8

19.6

19.6.1

19.6.2

19.6.3

19.6.4

19.7

19.7.1

19.7.2

19.7.3

19.7.4

19.8

19.9

命令与响应 348

350

R1(普通响应命令) 351

R1b 351

R2(CID、CSD寄存器) 351

R3(OCR寄存器) 351

R4(快速I/O) 352

R4b 352

R5(中断请求) 352

R6(中断请求) 353

使用SDIO_D2信号线的SDIO I/O读等待操作 353

使用停止SDIO_CK的SDIO读等待操作 353

SDIO暂停/恢复操作 354

SDIO中断 354

命令完成指示关闭 354

命令完成指示使能 354

CE-ATA中断 354

中止CMD61 354

354

355

响应格式

SDIO I/O卡特定的操作 353

CE-ATA特定操作 354

硬件流控制

SDIO寄存器

20

SDIO电源控制寄存器(SDIO_POWER) 355

SDIO时钟控制寄存器(SDIO_CLKCR) 355

SDIO参数寄存器(SDIO_ARG) 356

SDIO命令寄存器(SDIO_CMD) 356

SDIO命令响应寄存器(SDIO_RESPCMD) 357

SDIO响应1..4寄存器(SDIO_RESPx) 357

SDIO数据定时器寄存器(SDIO_DTIMER) 358

SDIO数据长度寄存器(SDIO_DLEN) 358

SDIO数据控制寄存器(SDIO_DCTRL) 358

SDIO数据计数器寄存器(SDIO_DCOUNT) 360

SDIO状态寄存器(SDIO_STA) 360

SDIO清除中断寄存器(SDIO_ICR) 361

SDIO中断屏蔽寄存器(SDIO_MASK) 362

SDIO FIFO计数器寄存器(SDIO_FIFOCNT) 364

SDIO数据FIFO寄存器(SDIO_FIFO) 364

SDIO寄存器映像 365

USB全速设备接口(USB) 366

20.1

20.2

20.3

20.4

USB简介

USB主要特征

USB功能描述

366

366

367

19.9.1

19.9.2

19.9.3

19.9.4

19.9.5

19.9.6

19.9.7

19.9.8

19.9.9

19.9.10

19.9.11

19.9.12

19.9.13

19.9.14

19.9.15

19.9.16

20.3.1

20.4.1

20.4.2

20.4.3

20.4.4

20.4.5

USB功能模块描述 368

通用USB设备编程 369

系统复位和上电复位 369

双缓冲端点 372

同步传输 373

挂起/恢复事件 374

11/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

编程中需要考虑的问题 369

目录 STM32F10xxx参考手册

20.5 USB寄存器描述 375

21

通用寄存器 375

端点寄存器 380

缓冲区描述表 382

USB寄存器映像 385

控制器局域网(bxCAN) 387

21.1

21.2

21.3

bxCAN简介 387

bxCAN主要特点 387

总体描述 388

初始化模式 390

正常模式 390

睡眠模式(低功耗) 390

测试模式 390

静默模式 390

环回模式 391

环回静默模式 391

发送处理 392

时间触发通信模式 393

接收管理 393

标识符过滤 395

报文存储 398

出错管理 399

位时间特性 400

402

bxCAN工作模式 389

20.5.1

20.5.2

20.5.3

20.5.4

21.2.1

21.3.1

21.3.2

21.3.3

21.3.4

21.3.5

21.3.6

21.3.7

21.4

21.4.1

21.4.2

21.4.3

21.4.4

21.4.5

21.4.6

21.4.7

21.5

21.6

bxCAN功能描述 392

bxCAN中断

CAN 寄存器描述 403

22

寄存器访问保护 403

控制和状态寄存器 403

邮箱寄存器 411

CAN过滤器寄存器 415

bxCAN寄存器列表 419

串行外设接口(SPI) 422

22.1

22.2

SPI简介

SPI特征

I2S功能

422

422

423

424

SPI和I2S主要特征 422

21.6.1

21.6.2

21.6.3

21.6.4

21.6.5

22.2.1

22.2.2

22.3

22.3.1

22.3.2

22.3.3

22.3.4

22.3.5

22.3.6

22.3.7

22.3.8

22.3.9

22.3.10

SPI功能描述

概述 424

SPI从模式 426

SPI主模式 427

单工通信 428

状态标志 428

CRC计算 429

利用DMA的SPI通信 429

错误标志 430

关闭SPI 430

SPI中断 430

12/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

目录 STM32F10xxx参考手册

22.4 I2S功能描述 431

I2S功能描述 431

支持的音频协议 432

时钟发生器 437

I2S主模式 438

I2S从模式 439

状态标志位 440

错误标志位 441

I2S中断 441

DMA功能 441

SPI控制寄存器1(SPI_CR1)(I2S模式下不使用) 442

SPI控制寄存器2(SPI_CR2) 443

SPI 状态寄存器(SPI_SR) 444

SPI 数据寄存器(SPI_DR) 445

SPI CRC多项式寄存器(SPI_CRCPR) 446

SPI Rx CRC寄存器(SPI_RXCRCR) 446

SPI Tx CRC寄存器(SPI_TXCRCR) 446

SPI_I2S配置寄存器(SPI_I2S_CFGR) 447

SPI_I2S预分频寄存器(SPI_I2SPR) 448

SPI 寄存器地址映象 449

450

450

450

451

22.4.1

22.4.2

22.4.3

22.4.4

22.4.5

22.4.6

22.4.7

22.4.8

22.4.9

22.5

22.5.1

22.5.2

22.5.3

22.5.4

22.5.5

22.5.6

22.5.7

22.5.8

22.5.9

22.5.10

SPI和I2S寄存器描述 442

23

I2C接口

23.1

23.2

23.3

I2C简介

I2C主要特点

I2C功能描述

23.3.1

23.3.2

23.3.3

23.3.4

23.3.5

23.3.6

23.3.7

23.3.8

23.4

23.5

23.6

模式选择 451

I2C从模式 452

I2C主模式 454

错误条件 456

SDA/SCL线控制 457

SMBus 457

DMA请求 459

包错误校验(PEC) 460

461

462

462

I2C中断请求

I2C调试模式

I2C寄存器描述

24

控制寄存器1(I2C_CR1) 462

控制寄存器2(I2C_CR2) 464

自身地址寄存器1(I2C_OAR1) 465

自身地址寄存器2(I2C_OAR2) 465

数据寄存器(I2C_DR) 465

状态寄存器1(I2C_SR1) 466

状态寄存器2 (I2C_SR2) 468

时钟控制寄存器(I2C_CCR) 469

TRISE寄存器(I2C_TRISE) 470

I2C寄存器地址映象 471

通用同步异步收发器(USART) 472

24.1

24.2

USART介绍 472

13/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

23.6.1

23.6.2

23.6.3

23.6.4

23.6.5

23.6.6

23.6.7

23.6.8

23.6.9

23.6.10

USART主要特性 472

目录 STM32F10xxx参考手册

24.3 USART功能概述 473

USART 特性描述 474

发送器 475

接收器 477

分数波特率的产生 480

多处理器通信 481

校验控制 482

LIN(局域互联网)模式 483

USART 同步模式 485

单线半双工通信 487

智能卡 487

IrDA SIR ENDEC 功能块 488

利用DMA连续通信 490

硬件流控制 491

24.3.1

24.3.2

24.3.3

24.3.4

24.3.5

24.3.6

24.3.7

24.3.8

24.3.9

24.3.10

24.3.11

24.3.12

24.3.13

24.4

24.5

24.6

USART中断请求 492

USART模式配置 493

USART寄存器描述 494

25

状态寄存器(USART_SR) 494

数据寄存器(USART_DR) 495

波特比率寄存器(USART_BRR) 496

控制寄存器1(USART_CR1) 496

控制寄存器2(USART_CR2) 498

控制寄存器3(USART_CR3) 499

保护时间和预分频寄存器(USART_GTPR) 501

USART寄存器地址映象 502

器件电子签名 503

25.1

25.2

存储器容量寄存器 503

闪存容量寄存器 503

产品唯一身份标识寄存器(96位) 503

概况

ARM参考文献

505

506

25.1.1

24.6.1

24.6.2

24.6.3

24.6.4

24.6.5

24.6.6

24.6.7

24.6.8

26

调试支持(DBG) 505

26.1

26.2

26.3

26.4

SWJ调试端口(serial wire and JTAG) 506

JTAG-DP和SW-DP切换的机制 507

SWJ调试端口脚 507

灵活的SWJ-DP脚分配 507

JTAG脚上的内部上拉和下拉 508

利用串行接口并释放不用的调试脚作为普通I/O口 508

引脚分布和调试端口脚 507

26.3.1

26.4.1

26.4.2

26.4.3

26.4.4

26.5

26.6

STM32F10xxx JTAG TAP 连接 509

ID 代码和锁定机制 509

微控制器设备ID编码 509

边界扫描TAP 510

Cortex-M3 TAP 510

Cortex-M3 JEDEC-106 ID代码 511

511

512

14/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

26.6.1

26.6.2

26.6.3

26.6.4

26.7

26.8

JTAG调试端口

SW调试端口

目录 STM32F10xxx参考手册

26.8.1

26.8.2

26.8.3

26.8.4

26.8.5

26.8.6

26.9

SW协议介绍 512

SW协议序列 512

SW-DP状态机(Reset, idle states, ID code) 513

DP和AP读/写访问 513

SW-DP寄存器 513

SW-AP寄存器 514

515

对于JTAG-DP或SWDP都有效的AHB-AP (AHB 访问端口) 514

26.10 内核调试

26.11 调试器主机在系统复位下的连接能力 515

26.12 FPB (Flash patch breakpoint) 515

26.13 DWT(data watchpoint trigger) 516

26.14 ITM (instrumentation trace macrocell) 516

26.14.1 概述 516

26.14.2 时间戳包,同步和溢出包 516

26.15 MCU调试模块(MCUDBG) 517

26.15.1

26.15.2

26.15.3

低功耗模式的调试支持 517

支持定时器、看门狗、bxCAN和I2C的调试 518

调试MCU配置寄存器 518

26.16 TPIU (trace port interface unit) 520

26.16.1 导言 520

26.16.2 跟踪引脚分配 520

26.16.3 TPUI格式器 522

26.16.4 TPUI帧异步包 522

26.16.5 同步帧包的发送 522

26.16.6 同步模式 522

26.16.7 异步模式 523

26.16.8 TRACECLKIN在STM32F10xxx内部的连接 523

26.16.9 TPIU寄存器 523

26.16.10 配置的例子 524

26.17 DBG寄存器地址映象 524

15/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

存储器和总线架构 STM32F10xxx参考手册

1

1.1

文中的缩写

寄存器描述表中使用的缩写列表

在对寄存器的描述中使用了下列缩写:

read / write (rw)

Read-only (r)

write-only (w)

read/clear (rc_w1)

read / clear (rc_w0)

toggle (t)

Reserved(Res.)

软件能读写此位。

软件只能读此位。

软件只能写此位,读此位将返回复位值。

软件可以读此位,也可以通过写’1’清除此位,写’0’对此位无影响。

软件可以读此位,也可以通过写’0’清除此位,写’1’对此位无影响。

软件只能通过写’1’来翻转此位,写’0’对此位无影响。

保留位,必须保持默认值不变

1.2 术语表

● 小容量产品是指闪存存储器容量在16K至32K字节之间的STM32F101xx、STM32F102xx和STM32F103xx微控制器。

● 中容量产品是指闪存存储器容量在64K至128K字节之间的STM32F101xx、STM32F102xx和STM32F103xx微控制器。

● 大容量产品是指闪存存储器容量在256K至512K字节之间的STM32F101xx和STM32F103xx微控制器。

1.3 可用的外设

有关STM32微控制器系列全部型号中,某外设存在与否及其数目,请查阅相应的小容量、中容量或者大容量STM32F101xx和STM32F103xx以及小容量和中容量STM32F102xx的数据手册。

16/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

存储器和总线架构 STM32F10xxx参考手册

2

2.1

存储器和总线构架

系统构架

主系统由以下部分构成:

● 四个驱动单元:

─ Cortex™-M3内核DCode总线(D-bus),和系统总线(S-bus)

─ 通用DMA1和通用DMA2

● 四个被动单元

─ 内部SRAM

─ 内部闪存存储器

─ FSMC

─ AHB到APB的桥(AHB2APBx),它连接所有的APB设备

这些都是通过一个多级的AHB总线构架相互连接的,如图1所示:

图1 系统结构

ICode总线

该总线将Cortex™-M3内核的指令总线与闪存指令接口相连接。指令预取在此总线上完成。

DCode总线

该总线将Cortex™-M3内核的DCode总线与闪存存储器的数据接口相连接(常量加载和调试访问)。

系统总线

此总线连接Cortex™-M3内核的系统总线(外设总线)到总线矩阵,总线矩阵协调着内核和DMA间的访问。

17/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

存储器和总线架构 STM32F10xxx参考手册

DMA总线

此总线将DMA的AHB主控接口与总线矩阵相联,总线矩阵协调着CPU的DCode和DMA到

SRAM、闪存和外设的访问。

总线矩阵

此总线矩阵协调内核系统总线和DMA主控总线之间的访问仲裁。此仲裁利用轮换算法。此总线矩阵由四个驱动部件(CPU的DCode、系统总线、DMA1总线和DMA2总线)和四个被动部件(闪存存储器接口(FLITF)、SRAM、FSMC和AHB2APB桥)构成。

AHB外设通过总线矩阵与系统总线相连,允许DMA访问。

AHB/APB桥(APB)

两个AHB/APB桥在AHB和2个APB总线间提供同步连接。APB1操作速度限于36MHz,APB2操作于全速(最高72MHz)。

有关连接到每个桥的不同外设的地址映射请参考表1。在每一次复位以后,所有除SRAM和FLITF以外的外设都被关闭,在使用一个外设之前,必须设置寄存器RCC_AHBENR来打开该外设的时钟。

注意:

当对APB寄存器进行8位或者16位访问时,该访问会被自动转换成32位的访问:桥会自动将8位或者32位的数据扩展以配合32位的向量。

2.2 存储器组织

程序存储器、数据存储器、寄存器和输入输出端口被组织在同一个4GB的线性地址空间内。

数据字节以小端格式存放在存储器中。一个字里的最低地址字节被认为是该字的最低有效字节,而最高地址字节是最高有效字节。

外设寄存器的映像请参考相关章节。

可访问的存储器空间被分成8个主要块,每个块为512MB。

其他所有没有分配给片上存储器和外设的存储器空间都是保留的地址空间,请参考相应器件的数据手册中的存储器映像图。

18/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

存储器和总线架构 STM32F10xxx参考手册

2.3 存储器映像

请参考相应器件的数据手册中的存储器映像图。表1列出了所用STM32F10xxx中内置外设的起始地址。

表1 寄存器组起始地址

外设

保留

CRC

闪存存储器接口

保留

复位和时钟控制(RCC)

保留

DMA2

DMA1

保留

SDIO

保留

ADC3

USART1

TIM8定时器

SPI1

TIM1定时器

ADC2

ADC1

GPIO端口G

GPIO端口F

GPIO端口E

GPIO端口D

GPIO端口C

GPIO端口B

GPIO端口A

EXTI

AFIO

保留

DAC

电源控制(PWR)

后备寄存器(BKP)

保留

bxCAN

USB/CAN共享的SRAM 512字节

USB全速设备寄存器

I2C2

I2C1

APB1APB2AHB总线 寄存器映像

参见3.4.4节

参见6.3.11节

参见9.4.7节

参见9.4.7节

参见19.9.16节

参见10.12.15节

参见24.6.8节

参见12.4.21节

参见22.5节

参见12.4.21节

参见10.12.15节

参见10.12.15节

参见7.5节

参见7.5节

参见7.5节

参见7.5节

参见7.5节

参见7.5节

参见7.5节

参见8.3.7节

参见7.5节

参见11.5.14节

参见4.4.3节

参见5.4.5节

参见21.6.5节

参见20.5.4节

参见23.6.10节

参见23.6.10节

起始地址

0x4002 3400 - 0x4002 3FFF

0x4002 3000 - 0x4002 33FF

0x4002 2000 - 0x4002 23FF

0x4002 1400 - 0x4002 1FFF

0x4002 1000 - 0x4002 13FF

0x4002 0800 - 0x4002 0FFF

0x4002 0400 - 0x4002 07FF

0x4002 0000 - 0x4002 03FF

0x4001 8400 - 0x4001 7FFF

0x4001 8000 - 0x4001 83FF

0x4001 4000 - 0x4001 7FFF

0x4001 3C00 - 0x4001 3FFF

0x4001 3800 - 0x4001 3BFF

0x4001 3400 - 0x4001 37FF

0x4001 3000 - 0x4001 33FF

0x4001 2C00 - 0x4001 2FFF

0x4001 2800 - 0x4001 2BFF

0x4001 2400 - 0x4001 27FF

0x4001 2000 - 0x4001 23FF

0x4001 2000 - 0x4001 23FF

0x4001 1800 - 0x4001 1BFF

0x4001 1400 - 0x4001 17FF

0x4001 1000 - 0x4001 13FF

0X4001 0C00 - 0x4001 0FFF

0x4001 0800 - 0x4001 0BFF

0x4001 0400 - 0x4001 07FF

0x4001 0000 - 0x4001 03FF

0x4000 7800 - 0x4000FFFF

0x4000 7400 - 0x4000 77FF

0x4000 7000 - 0x4000 73FF

0x4000 6C00 - 0x4000 6FFF

0x4000 6800 - 0x4000 6BFF

0x4000 6400 - 0x4000 67FF

0x4000 6000 - 0x4000 63FF

0x4000 5C00 - 0x4000 5FFF

0x4000 5800 - 0x4000 5BFF

0x4000 5400 - 0x4000 57FF

19/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

存储器和总线架构 STM32F10xxx参考手册

0x4000 5000 - 0x4000 53FF

0x4000 4C00 - 0x4000 4FFF

0x4000 4800 - 0x4000 4BFF

0x4000 4400 - 0x4000 47FF

0x4000 4000 - 0x4000 3FFF

0x4000 3C00 - 0x4000 3FFF

0x4000 3800 - 0x4000 3BFF

0x4000 3400 - 0x4000 37FF

0x4000 3000 - 0x4000 33FF

0x4000 2C00 - 0x4000 2FFF

0x4000 2800 - 0x4000 2BFF

0x4000 1800 - 0x4000 27FF

0x4000 1400 - 0x4000 17FF

0x4000 1000 - 0x4000 13FF

0x4000 0C00 - 0x4000 0FFF

0x4000 0800 - 0x4000 0BFF

0x4000 0400 - 0x4000 07FF

0x4000 0000 - 0x4000 03FF

UART5

UART4

USART3

USART2

保留

SPI3/I2S3

SPI2/I2S3

保留

独立看门狗(IWDG)

窗口看门狗(WWDG)

RTC

保留

TIM7定时器

TIM6定时器

TIM5定时器

TIM4定时器

TIM3定时器

TIM2定时器

参见24.6.8节

参见24.6.8节

参见24.6.8节

参见24.6.8节

参见22.5节

参见22.5节

参见16.4.5节

参见17.6.4节

参见15.4.7节

参见13.4.19节

参见13.4.19节

参见13.4.19节

参见13.4.19节

参见13.4.19节

参见13.4.19节

2.3.1 嵌入式SRAM

STM32F10xxx内置64K字节的静态SRAM。它可以以字节、半字(16位)或全字(32位)访问。SRAM的起始地址是0x2000 0000。

2.3.2 位段

Cortex™-M3存储器映像包括两个位段(bit-band)区。这两个位段区将别名存储器区中的每个字映射到位段存储器区的一个位,在别名存储区写入一个字具有对位段区的目标位执行读-改-写操作的相同效果。

在STM32F10xxx里,外设寄存器和SRAM都被映射到一个位段区里,这允许执行单一的位段的写和读操作。

下面的映射公式给出了别名区中的每个字是如何对应位带区的相应位的:

bit_word_addr = bit_band_base + (byte_offset x 32) + (bit_number × 4)

其中:

bit_word_addr是别名存储器区中字的地址,它映射到某个目标位。

bit_band_base是别名区的起始地址。

byte_offset是包含目标位的字节在位段里的序号

bit_number是目标位所在位置(0-31)

例子:

下面的例子说明如何映射别名区中SRAM地址为0x20000300的字节中的位2:

0x22006008 = 0x22000000 + (0x300*32) + (2*4).

对0x22006008地址的写操作与对SRAM中地址0x20000300字节的位2执行读-改-写操作有着相同的效果。

读0x22006008地址返回SRAM中地址0x20000300字节的位2的值(0x01 或 0x00)。

请参考《Cortex™-M3技术参考手册》以了解更多有关位段的信息。

20/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

存储器和总线架构 STM32F10xxx参考手册

2.3.3 嵌入式闪存

高性能的闪存模块有以下的主要特性:

● 高达512K字节闪存存储器结构:闪存存储器有主存储块和信息块组成:

─ 主存储块容量:

小容量产品主存储块为4Kbx64位,每个主存储块划分为32个1K字节的页。

中容量产品主存储块为16Kbx64位,每个主存储块划分为128个1K字节的页。

大容量产品主存储块为64Kbx64位,每个主存储块划分为256个2K字节的页。

─ 信息块为258x64位,每个信息块划分为一个2K字节的页和一个16字节的页。

闪存存储器接口的特性为:

● 带预取缓冲器的读接口(每字为2x64位)

● 选择字节加载器

● 闪存编程/擦除操作

● 访问/写保护

表2

模块

闪存模块的组织(小容量产品)

名称

页0

页1

页2

地址

0x0800 0000 - 0x0800 03FF

0x0800 0400 - 0x0800 07FF

0x0800 0800 - 0x0800 0BFF

0x0800 0C00 - 0x0800 0FFF

0x0800 1000 - 0x0800 13FF

0x0800 1000 - 0x0800 13FF

0x1FFF F000 - 0x1FFF F7FF

0x1FFF F800 - 0x1FFF F80F

0x4002 2000 - 0x4002 2003

0x4002 2004 - 0x4002 2007

0x4002 2008 - 0x4002 200B

0x4002 200C - 0x4002 200F

0x4002 2010 - 0x4002 2013

0x4002 2014 - 0x4002 2017

0x4002 2018 - 0x4002 201B

0x4002 201C - 0x4002 201F

0x4002 2020 - 0x4002 2023

大小(字节)

1K

1K

1K

1K

1K

1K

2K

16

4

4

4

4

4

4

4

4

4

主存储块

页3

页4

页31

系统存储器

用户选择字节

FLASH_ACR

FALSH_KEYR

FLASH_OPTKEYR

FLASH_SR

FLASH_CR

FLASH_AR

保留

FLASH_OBR

FLASH_WRPR

信息块

闪存存储器

接口寄存器

表3

模块

闪存模块的组织(中容量产品)

名称

页0

页1

页2

地址

0x0800 0000 - 0x0800 03FF

0x0800 0400 - 0x0800 07FF

0x0800 0800 - 0x0800 0BFF

0x0800 0C00 - 0x0800 0FFF

0x0800 1000 - 0x0800 13FF

0x0801 FC00 - 0x0801 FFFF

大小(字节)

1K

1K

1K

1K

1K

1K

主存储块

页3

页4

页127

21/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

存储器和总线架构 STM32F10xxx参考手册

信息块

系统存储器

用户选择字节

FLASH_ACR

FALSH_KEYR

FLASH_OPTKEYR

闪存存储器

接口寄存器

FLASH_SR

FLASH_CR

FLASH_AR

保留

FLASH_OBR

FLASH_WRPR

0x1FFF F000 - 0x1FFF F7FF

0x1FFF F800 - 0x1FFF F80F

0x4002 2000 - 0x4002 2003

0x4002 2004 - 0x4002 2007

0x4002 2008 - 0x4002 200B

0x4002 200C - 0x4002 200F

0x4002 2010 - 0x4002 2013

0x4002 2014 - 0x4002 2017

0x4002 2018 - 0x4002 201B

0x4002 201C - 0x4002 201F

0x4002 2020 - 0x4002 2023

2K

16

4

4

4

4

4

4

4

4

4

表4

模块

闪存模块的组织(大容量产品)

名称

页0

页1

页2

地址

0x0800 0000 - 0x0800 07FF

0x0800 0800 - 0x0800 0FFF

0x0800 1000 - 0x0800 17FF

0x0800 0C00 - 0x0800 0FFF

0x0800 1800 - 0x0800 1FFF

0x0801 F800 - 0x0801 FFFF

0x1FFF F000 - 0x1FFF F7FF

0x1FFF F800 - 0x1FFF F80F

0x4002 2000 - 0x4002 2003

0x4002 2004 - 0x4002 2007

0x4002 2008 - 0x4002 200B

0x4002 200C - 0x4002 200F

0x4002 2010 - 0x4002 2013

0x4002 2014 - 0x4002 2017

0x4002 2018 - 0x4002 201B

0x4002 201C - 0x4002 201F

0x4002 2020 - 0x4002 2023

大小(字节)

2K

2K

2K

2K

2K

2K

2K

16

4

4

4

4

4

4

4

4

4

主存储块

页3

页4

页127

系统存储器

用户选择字节

FLASH_ACR

FALSH_KEYR

FLASH_OPTKEYR

FLASH_SR

FLASH_CR

FLASH_AR

保留

FLASH_OBR

FLASH_WRPR

信息块

闪存存储器

接口寄存器

注:

有关闪存寄存器的详细信息,请参考《STM32F10xxx闪存编程手册》

闪存读取

闪存的指令和数据访问是通过AHB总线完成的。预取模块是用于通过ICode总线读取指令的。仲裁是作用在闪存接口,并且DCode总线上的数据访问优先。

读访问可以有以下配置选项:

● 等待时间:可以随时更改的用于读取操作的等待状态的数量。

● 预取缓冲区(2个64位):在每一次复位以后被自动打开,由于每个缓冲区的大小(64位)与闪存的带宽相同,因此只通过需一次读闪存的操作即可更新整个缓冲区的内容。由于预取缓冲区的存在,CPU可以工作在更高的主频。CPU每次取指最多为32位的字,取一条指令时,下一条指令已经在缓冲区中等待。

● 半周期:用于功耗优化。

注: 1.

这些选项应与闪存存储器的访问时间一起使用。等待周期体现了系统时钟(SYSCLK)频率与闪存访问时间的关系:

22/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

存储器和总线架构 STM32F10xxx参考手册

0等待周期,当 0 < SYSCLK < 24MHz

1等待周期,当 24MHz < SYSCLK

≤ 48MHz

2等待周期,当 48MHz < SYSCLK

≤ 72MHz

半周期配置不能与使用了预分频器的AHB一起使用,时钟系统应该等于HCLK时钟。该特性 2 .

只能用在时钟频率为8MHz或低于8MHz时,可以直接使用的内部RC振荡器(HSI),或者是主振荡器(HSE),但不能用PLL。

当AHB预分频系数不为1时,必须置预取缓冲区处于开启状态。

3.

预取缓冲器的打开和关闭操作只有在系统时钟(SYSCLK)小于24MHz时才能执行。一般而言, 4.

预取缓冲器的打开和关闭操作在初始化过程中执行,这时微控制器的时钟由8MHz的内部RC振荡器(HSI)提供。

使用DMA:DMA在DCode总线上访问闪存存储器,它的优先级比ICode上的取指高。DMA在 5.

每次传送完成后具有一个空余的周期。有些指令可以和DMA传输一起执行。

编程和擦除闪存

闪存编程一次可以写入16位(半字)。

闪存擦除操作可以按页面擦除或完全擦除(全擦除)。全擦除不影响信息块。

为了确保不发生过度编程, 闪存编程和擦除控制器块是由一个固定的时钟控制的。

写操作(编程或擦除)结束时可以触发中断。仅当闪存控制器接口时钟开启时,此中断可以用来从WFI模式退出。

注:

有关闪存存储器的操作和寄存器配置,请参考STM32F10xxx闪存编程手册。

2.4 启动配置

表5 启动模式

在STM32F10xxx里,可以通过BOOT[1:0]引脚选择三种不同启动模式。

启动模式选择管脚

BOOT1 BOOT0

启动模式 说明

用户闪存存储器被选为启动区域

系统存储器被选为启动区域

内嵌SRAM被选为启动区域

X 0 用户闪存存储器

0 1 系统存储器

1 1 内嵌SRAM

在系统复位后,SYSCLK的第4个上升沿,BOOT管脚的值将被锁存。用户可以通过设置BOOT1和BOOT0引脚的状态,来选择在复位后的启动模式。

在从待机模式退出时,BOOT管脚的值将被被重新锁存;因此,在待机模式下BOOT管脚应保持为需要的启动配置。在启动延迟之后,CPU从地址0x0000 0000获取堆栈顶的地址,并从启动存储器的0x0000 0004指示的地址开始执行代码。

因为固定的存储器映像,代码区始终从地址0x0000 0000开始(通过ICode和DCode总线访问),而数据区(SRAM)始终从地址0x2000 0000开始(通过系统总线访问)。Cortex-M3的CPU始终从ICode总线获取复位向量,即启动仅适合于从代码区开始(典型地从Flash启动)。STM32F10xxx微控制器实现了一个特殊的机制,系统可以不仅仅从Flash存储器或系统存储器启动,还可以从内置SRAM启动。

根据选定的启动模式,主闪存存储器、系统存储器或SRAM可以按照以下方式访问:

● 从主闪存存储器启动:主闪存存储器被映射到启动空间(0x0000 0000),但仍然能够在它原有的地址(0x0800 0000)访问它,即闪存存储器的内容可以在两个地址区域访问,0x0000

0000或0x0800 0000。

● 从系统存储器启动:系统存储器被映射到启动空间(0x0000 0000),但仍然能够在它原有的地址(0x1FFF F000)访问它。

● 从内置SRAM启动:只能在0x2000 0000开始的地址区访问SRAM。

23/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

存储器和总线架构 STM32F10xxx参考手册

注意: 当从内置SRAM启动,在应用程序的初始化代码中,必须使用NVIC的异常表和偏移寄存器,从新映射向量表之SRAM中。

内嵌的自举程序

内嵌的自举程序用于通过USART1串行接口对闪存存储器进行重新编程。这个程序位于系统存储器中,由ST在生产线上写入。进一步的细节请查询AN2606。

24/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

CRC计算单元(CRC) STM32F10xxx参考手册

3 CRC计算单元(CRC)

小容量产品是指闪存存储器容量在16K至32K字节之间的STM32F101xx、STM32F102xx和STM32F103xx微控制器。

中容量产品是指闪存存储器容量在64K至128K字节之间的STM32F101xx、STM32F102xx和STM32F103xx微控制器。

大容量产品是指闪存存储器容量在256K至512K字节之间的STM32F101xx和STM32F103xx微控制器。

除非特别说明,本章节描述的模块应用于整个STM32F10xxx微控制器系列。

3.1 CRC简介

循环冗余校验(CRC)计算单元是根据固定的生成多项式得到任一32位全字的CRC计算结果。

在其他的应用中, CRC技术主要应用于核实数据传输或者数据存储的正确性和完整性。标准EN/IEC 60335-1即提供了一种核实闪存存储器完整性的方法。CRC计算单元可以在程序运行时计算出软件的标识,之后与在连接时生成的参考标识比较,然后存放在指定的存储器空间。

3.2 CRC主要特性

● 使用CRC-32(以太网)多项式:0x4C11DB7

─ X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 + X8 + X7 + X4 + X2 + X +1

● 一个32位数据寄存器用于输入 / 输出

● CRC计算时间:4个AHB时钟周期(HCLK)

● 通用8位寄存器(可用于存放临时数据)

下图为CRC计算单元框图

图2 CRC计算单元框图

3.3 CRC功能描述

CRC计算单元含有1个32位数据寄存器:

● 对该寄存器进行写操作时,作为输入寄存器,可以输入要进行CRC计算的新数据。

● 对该寄存器进行读操作时,返回上一次CRC计算的结果。

每一次写入数据寄存器,其计算结果是前一次CRC计算结果和新计算结果的组合(对整个32位字进行CRC计算,而不是逐字节地计算)。

计算进行时会暂停CPU,无需加入软件等待周期,因此可以对寄存器CRC_DR进行背靠背写入或者连续地写-读操作。

25/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

CRC计算单元(CRC) STM32F10xxx参考手册

可以通过把寄存器CRC_CR的RESET位置’0’来重置寄存器CRC_DR为0xFFFF FFFF。该操作不影响寄存器CRC_IDR内的数据。

3.4 CRC寄存器

CRC计算单元包括2个数据寄存器和1个控制寄存器

3.4.1 数据寄存器(CRC_DR)

地址偏移:0x00

复位值:0x0000 0000

31rw1530rw1429rw1328rw1227rw1126rw1025rw924rw823rw722rw621rw520rw419rw318rw217rw116rw0DR[31:16]DR[15:0]rwrwrw位31: 0

rwrwrwrwrwrwrwrwrwrwrwrwrw

数据寄存器位

写入CRC计算器的新数据时作为输入寄存器

读取时返回CRC计算的结果

3.4.2 独立数据寄存器(CRC_IDR)

地址偏移:0x04

复位值:0x0000 0000

3134保留1514131211保留rw位31:8

位7:0

保留。

通用8位数据寄存器位

可用于临时存放1字节的数据。

寄存器CRC_CR的RESET位产生的CRC复位对本寄存器没有影响

23222IDR[7:0]rwrwrwrwrwrwrw

26/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

CRC计算单元(CRC)

STM32F10xxx参考手册

3.4.3 控制寄存器(CRC_CR)

地址偏移:0x08

复位值:0x0000 0000

3134保留098保留位31:1 保留。

复位CRC计算单元,设置数据寄存器为0xFFFF FFFF

该位只能置’1’,它由硬件自动清’0’

232221243210RESETw

位0 RESET位

3.4.4 CRC寄存器映像

下表列出了CRC的寄存器映像和复位值

表6 CRC计算单元寄存器映像和复位值

偏移寄存器CRC_DR复位值0x000x04CRC_IDR复位值CRC_CR复位值0x08保留

27/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

RESET31312111DR1111111111保留IDR[7:0]000000000

电源控制(PWR) STM32F10xxx参考手册

4 电源控制(PWR)

小容量产品是指闪存存储器容量在16K至32K字节之间的STM32F101xx、STM32F102xx和STM32F103xx微控制器。

中容量产品是指闪存存储器容量在64K至128K字节之间的STM32F101xx、STM32F102xx和STM32F103xx微控制器。

大容量产品是指闪存存储器容量在256K至512K字节之间的STM32F101xx和STM32F103xx微控制器。

除非特别说明,本章节描述的模块应用于整个STM32F10xxx微控制器系列。

4.1 电源

STM32的工作电压(VDD)为2.0~3.6V。通过内置的电压调节器提供所需的1.8V电源。

当主电源VDD掉电后,通过VBAT脚为实时时钟(RTC)和备份寄存器提供电源。

图3 电源框图

注: VDDA和VSSA必须分别联到VDD和VSS。

4.1.1 独立的A/D转换器供电和参考电压

为了提高转换的精确度,ADC使用一个独立的电源供电,过滤和屏蔽来自印刷电路板上的毛刺干扰。

● ADC的电源引脚为VDDA

● 独立的电源地VSSA

如果有VREF-引脚(根据封装而定),它必须连接到VSSA。

28/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

电源控制(PWR) STM32F10xxx参考手册

100脚和144脚封装:

为了确保输入为低压时获得更好精度,用户可以连接一个独立的外部参考电压ADC到VREF+和VREF-脚上。在VREF+的电压范围为2.4V~VDDA。

64脚或更少封装:

没有VREF+和VREF-引脚,他们在芯片内部与ADC的电源(VDDA)和地(VSSA)相联。

4.1.2 电池备份区域

使用电池或其他电源连接到VBAT脚上,当VDD断电时,可以保存备份寄存器的内容和维持RTC的功能。

VBAT脚也为RTC、LSE振荡器和PC13至PC15供电,这保证当主要电源被切断时RTC能继续工作。切换到VBAT供电由复位模块中的掉电复位功能控制。

如果应用中没有使用外部电池,VBAT必须连接到VDD引脚上。

注意:

在VDD上升阶段(tRSTTEMPO)或者探测到PVD之后,VBAT和VDD之间的电源开关仍会保持连接在VBAT。在VDD上升阶段,如果VDD在小于tRSTTEMPO的时间内达到稳定状态(关于tRSTTEMPO可参考数据手册中的相关部分),且VDD

> VBAT

+ 0.6V时,电流可能通过VDD和VBAT之间的内部二极管注入到VBAT。

如果与VBAT连接的电源或者电池不能承受这样的注入电流,强烈建议在外部VBAT和电源之间连接一个低压降二极管。

如果在应用中没有外部电池,建议VBAT在外部通过一个100nF的陶瓷电容与VDD相连,更多细节参阅AN2586。

当备份区域由VDD(内部模拟开关连到VDD)供电时,下述功能可用:

● PC14和PC15可以用于GPIO或LSE引脚

● PC13可以作为通用I/O口、TAMPER引脚、RTC校准时钟、RTC闹钟或秒输出(参见后备寄存器(BKP)部分)

注:

因为模拟开关只能通过少量的电流(3mA),使用PC13至PC15的I/O口功能是有限制的:同一时间内只有一个I/O口可以作为输出,速度必须限制在2MHz以下,最大负载为30pF,而且这些I/O口绝不能当作电流源(如驱动LED)。

当后备区域由VBAT供电时(VDD消失后模拟开关连到VBAT),可以使用下述功能:

● PC14和PC15只能用于LSE引脚

● PC13可以作为TAMPER引脚、RTC闹钟或秒输出(参见RTC时钟校准寄存器(BKP_RTCCR))

4.1.3 电压调节器

复位后调节器总是使能的。根据应用方式它以3种不同的模式工作。

● 运转模式:调节器以正常功耗模式提供1.8V电源(内核,内存和外设)。

● 停止模式:调节器以低功耗模式提供1.8V电源,以保存寄存器和SRAM的内容。

● 待机模式:调节器停止供电。除了备用电路和备份域外,寄存器和SRAM的内容全部丢失。

4.2

4.2.1

电源管理器

上电复位(POR)和掉电复位(PDR)

STM32内部有一个完整的上电复位(POR)和掉电复位(PDR)电路,当供电电压达到2V时系统既能正常工作。

29/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

电源控制(PWR) STM32F10xxx参考手册

当VDD/VDDA低于指定的限位电压VPOR/VPDR时,系统保持为复位状态,而无需外部复位电路。关于上电复位和掉电复位的细节请参考数据手册的电气特性部分。

图4 上电复位和掉电复位的波形图

4.2.2 可编程电压监测器(PVD)

用户可以利用PVD对VDD电压与电源控制寄存器(PWR_CR)中的PLS[2:0]位进行比较来监控电源,这几位选择监控电压的阀值。

通过设置PVDE位来使能PVD。

电源控制/状态寄存器(PWR_CSR)中的PVDO标志用来表明VDD是高于还是低于PVD的电压阀值。该事件在内部连接到外部中断的第16线,如果该中断在外部中断寄存器中是使能的,该事件就会产生中断。当VDD下降到PVD阀值以下和(或)当VDD上升到PVD阀值之上时,根据外部中断第16线的上升/下降边沿触发设置,就会产生PVD中断。例如,这一特性可用于用于执行紧急关闭任务。

图5 PVD的门限

4.3 低功耗模式

在系统或电源复位以后,微控制器处于运行状态。运行状态下的HCLK为CPU提供时钟,内核执行程序代码。当CPU不需继续运行时,可以利用多个低功耗模式来节省功耗,例如等待某个外30/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

电源控制(PWR) STM32F10xxx参考手册

部事件时。用户需要根据最低电源消耗,最快速启动时间和可用的唤醒源等条件,选定一个最佳的低功耗模式。

STM32F10xxx有三中低功耗模式:

● 睡眠模式(Cortex™-M3内核停止,外设仍在运行)

● 停止模式(所有的时钟都以停止)

● 待机模式(1.8V电源关闭)

此外,在运行模式下,可以通过以下方式中的一种降低功耗:

● 降低系统时钟

● 关闭APB和AHB总线上未被使用的外设的时钟。

表7 低功耗模式一览

模式 进入操作 唤醒

任一中断

唤醒事件

对1.8V区域

时钟的影响

CPU时钟关,对其他时钟和ADC时钟无影响

对VDD区域时钟的影响

电压调节器

WFI

睡眠

(SLEEP-NOW或SLEEP-ON-EXIT)

WFE

PDDS和LPDS位+SLEEPDEEP位+WFI或WFE

停机

待机

PDDS位

+SLEEPDEEP位+WFI或WFE

任一外部中断(在外部中断寄存器中设所有使用1.8V无

置)

的区域的时钟WKUP引脚的上升都已关闭,HSI

沿、RTC警告事和HSE的振荡件、NRST引脚上的器关闭

外部复位、IWDG复位

在低功耗模式下可进行开/关设置(依据电源控制寄存器(PWR_CR)的设定)关

4.3.1 降低系统时钟

在运行模式下,通过对预分频寄存器进行编程,可以降低任意一个系统时钟(SYSCLK、HCLK、PCLK1、PCLK2)的速度。进入睡眠模式前,也可以利用预分频器来降低外设的时钟。

详见6.3.2节。

4.3.2 外部时钟的控制

在运行模式下,任何时候都可以通过停止为外设和内存提供时钟(HCLK和PCLKx)来减少功耗。

为了在睡眠模式下更多地减少功耗,可在执行WFI或WFE指令前关闭所有外设的时钟。

通过设置AHB外设时钟使能寄存器(RCC_AHBENR)、APB1外设的时钟使能寄存器(RCC_APB1ENR)和APB1外设的时钟使能寄存器(RCC_APB2ENR)来开关外设部时钟。

4.3.3 睡眠模式

进入睡眠模式

通过执行WFI或WFE指令进入睡眠状态。根据Cortex™-M3系统控制寄存器中的SLEEPONEXIT位的值,有两种选项可用于选择睡眠模式进入机制:

● SLEEP-NOW:如果SLEEPONEXIT位被清除,当WRI或WFE被执行时,微控制器立即进入睡眠模式。

● SLEEP-ON-EXIT:如果SLEEPONEXIT位被置位,系统从最低优先级的中断处理程序中退出时,微控制器就立即进入睡眠模式。

关于如何进入睡眠模式,更多的细节参考表8和表9。

31/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

电源控制(PWR) STM32F10xxx参考手册

退出睡眠模式

如果执行WFI指令进入睡眠模式,任意一个被嵌套向量中断控制器响应的外设中断都能将系统从睡眠模式唤醒。

如果执行WFE指令进入睡眠模式,则一旦发生唤醒事件时,微处理器都将从睡眠模式退出。唤醒事件可以通过下述方式产生:

● 在外设控制寄存器中使能一个中断,而不是在NVIC(嵌套向量中断控制器)中使能,并且在Cortex-M3系统控制寄存器中使能SEVONPEND位。当MCU从WFE中唤醒后,外设的中断挂起位和外设的NVIC中断通道挂起位(在NVIC中断清除挂起寄存器中)必须被清除。

● 配置一个外部或内部的EXIT线为事件模式。当MCU从WFE中唤醒后,因为与事件线对应的挂起位未被设置,不必清除外设的中断挂起位或外设的NVIC中断通道挂起位。

该模式唤醒所需的时间最短,因为没有时间损失在中断的进入或退出上。

关于如何退出睡眠模式,更多的细节参考表8和表9。

表8 SLEEP-NOW模式

说明

在以下条件下执行WFI或WFE指令:

进入

– SLEEPDEEP = 0 和

– SLEEPONEXIT = 0

参考Cortex-M3系统控制寄存器。

如果执行WFI进入睡眠模式:

退出

中断:参考中断向量表

如果执行WFE进入睡眠模式:

唤醒事件:参考唤醒事件管理

唤醒延时 无

SLEEP-NOW模式

表9 SLEEP-ON-EXIT模式

说明

在以下条件下执行WFI或WFE指令:

– SLEEPDEEP = 0和

– SLEEPONEXIT = 1

参考Cortex™-M3系统控制寄存器

如果执行WFI进入睡眠模式:

中断或清除Cortex-M3控制寄存器位1

如果执行WFE进入睡眠模式:

唤醒事件:参考唤醒事件管理

SLEEP-ON_EXIT模式

进入

退出

唤醒延时

4.3.4 停止模式

停止模式是在Cortex™-M3的深睡眠模式基础上结合了外设的时钟控制机制,在停止模式下电压调节器可运行在正常或低功耗模式。此时在1.8V供电区域的的所有时钟都被停止,PLL、HSI和HSE RC振荡器的功能被禁止,SRAM和寄存器内容被保留下来。

进入停止模式

关于如何进入停止模式,详见表10。

在停止模式下,通过设置电源控制寄存器(PWR_CR)的LPDS位使内部调节器进入低功耗模式,能够降低更多的功耗。

如果正在进行闪存编程,直到对内存访问完成,系统才进入停止模式。

如果正在进行对APB的访问,直到对APB访问完成,系统才进入停止模式。

32/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

电源控制(PWR) STM32F10xxx参考手册

可以通过对独立的控制位进行编程,可选择以下功能:

● 独立看门狗(IWDG):可通过写入看门狗的键寄存器或硬件选择来启动IWDG。一旦启动了独立看门狗,除了系统复位,它不能再被停止。详见16.3节。

● 实时时钟(RTC):通过备用区域控制寄存器(RCC_BDCR)的RTCEN位来设置。

● 内部RC振荡器(LSI RC):通过控制/状态寄存器(RCC_CSR)的LSION位来设置。

● 外部32.768kHz振荡器(LSE):通过备用域控制寄存器(RCC_BDCR)的LSEON位设置。

在停止模式下,如果在进入该模式前ADC和DAC没有被关闭,那么这些外设仍然消耗电流。通过设置寄存器ADC_CR2的ADON位和寄存器DAC_CR的ENx位为0可关闭这2个外设。

退出停止模式

关于如何退出停止模式,详见下表。

当一个中断或唤醒事件导致退出停止模式时,HSI RC振荡器被选为系统时钟。

当电压调节器处于低功耗模式下,当系统从停止模式退出时,将会有一段额外的启动延时。如果在停止模式期间保持内部调节器开启,则退出启动时间会缩短,但相应的功耗会增加。

表10 停止模式

停止模式 说明

在以下条件下执行WFI或WFE指令:

– 设置Cortex-M3系统控制寄存器中的SLEEPDEEP位

进入

– 清除电源控制寄存器(PWR_CR)中的PDDS位

– 通过设置PWR_CR中LPDS位选择电压调节器的模式

注:为了进入停止模式,所有的外部中断的请求位(挂起寄存器(EXTI_PR))和RTC的闹钟标志都必须被清除,否则停止模式的进入流程将会被跳过,程序继续运行。

在以下条件下执行WFI指令:

退出

任一外部中断引线被设置为中断模式(相应的外部中断向量在NVIC中必须使能)。参见中断向量表

在以下条件下执行WFE指令:

任一外部中断引线被设置为事件模式。参见唤醒事件管理。

唤醒延时 HSI RC唤醒时间 + 电压调节器从低功耗唤醒的时间。

4.3.5 待机模式

待机模式可实现系统的最低功耗。该模式是在Cortex-M3深睡眠模式时关闭电压调节器。整个1.8V供电区域被断电。PLL、HSI和HSE振荡器也被断电。SRAM和寄存器内容丢失。只有备份的寄存器和待机电路维持供电。

进入待机模式

关于如何进入待机模式,详见表11。

可以通过设置独立的控制位,选择以下待机模式的功能:

● 独立看门狗(IWDG):可通过写入看门狗的键寄存器或硬件选择来启动IWDG。一旦启动了独立看门狗,除了系统复位,它不能再被停止。详见16.3节。

● 实时时钟(RTC):通过备用区域控制寄存器(RCC_BDCR)的RTCEN位来设置。

● 内部RC振荡器(LSI RC):通过控制/状态寄存器(RCC_CSR)的LSION位来设置。

● 外部32.768kHz振荡器(LSE):通过备用区域控制寄存器(RCC_BDCR)的LSEON位设置。

退出待机模式

当一个外部复位(NRST引脚)、IWDG复位、WKUP引脚上的上升沿或RTC闹钟事件发生时,微控制器从待机模式退出。从待机唤醒后,除了电源控制/状态寄存器(PWR_CSR),所有寄存器被复位。

33/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

电源控制(PWR) STM32F10xxx参考手册

从待机模式唤醒后的代码执行等同于复位后的执行(采样启动模式引脚,读取复位向量等)。电源控制/状态寄存器(PWR_CSR)将会指示内核由待机状态退出。

关于如何退出待机模式,详见下表。

表11 待机模式

待机模式 说明

在以下条件下执行WFI或WFE指令:

进入

– 设置Cortex™-M3系统控制寄存器中的SLEEPDEEP位

– 设置电源控制寄存器(PWR_CR)中的PDDS位

– 清除电源控制/状态寄存器(PWR_CSR)中的WUF位被

退出

唤醒延时

WKUP引脚的上升沿、RTC闹钟、NRST引脚上外部复位、IWDG复位。

复位阶段时电压调节器的启动。

待机模式下的输入/输出端口状态

在待机模式下,所有的I/O引脚处于高阻态,除了以下的引脚:

● 复位引脚(始终有效)

● 当被设置为防侵入或校准输出时的TAMPER引脚

● 被使能的唤醒引脚

调试模式

默认情况下,如果在进行调试微处理器时,使微处理器进入停止或待机模式,将失去调试连接。这是因为Cortex™-M3的内核失去了时钟。

然而,通过设置DBGMCU_CR寄存器中的某些配置位,可以在使用低功耗模式下调试软件。更多的细节参考低功耗模式下的调试。

4.3.6 低功耗模式下的自动唤醒(AWU)

RTC可以在不需要依赖外部中断的情况下唤醒低功耗模式下的微控制器(自动唤醒模式)。RTC提供一个可编程的时间基数,用于周期性从停止或待机模式下唤醒。通过对备份区域控制寄存器(RCC_BDCR)的RTCSEL[1:0]位的编程,三个RTC时钟源中的二个时钟源可以选作实现此功能。

● 低功耗32.768kHz外部晶振(LSE)

该时钟源提供了一个低功耗且精确的时间基准。(在典型情形下消耗小于1µA)

● 低功耗内部RC振荡器(LSI RC)

使用该时钟源,节省了一个32.768kHz晶振的成本。但是RC振荡器将少许增加电源消耗。

为了用RTC闹钟事件将系统从停止模式下唤醒,必须进行如下操作:

● 配置外部中断线17为上升沿触发。

● 配置RTC使其可产生RTC闹钟事件。

如果要从待机模式中唤醒,不必配置外部中断线17。

34/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

电源控制(PWR)

STM32F10xxx参考手册

4.4

4.4.1

电源控制寄存器

电源控制寄存器(PWR_CR)

地址偏移:0x00

复位值:0x0000 0000 (从待机模式唤醒时清除)

319181716保留098DBPrwrw76PLS[2:0]rw54PVDE3CSBF2CWUF1PDDSrw0LPDSrw保留

位 31:9

位 8

保留。始终读为0。

rwrwrc_w1rc_w1DBP:取消后备区域的写保护

在复位后,RTC和后备寄存器处于被保护状态以防意外写入。设置这位允许写入这些寄存器。

0:禁止写入RTC和后备寄存器

1:允许写入RTC和后备寄存器

位 7:5 PLS[2:0]:PVD电平选择

这些位用于选择电源电压监测器的电压阀值

000:2.2V 100:2.6V

001:2.3V 101:2.7V

010:2.4V 110:2.8V

011:2.5V 111:2.9V

注:详细说明参见数据手册中的电气特性部分。

位 4 PVDE:电源电压监测器(PVD)使能

0:禁止PVD

1:开启PVD

位 3 CSBF:清除待机位

始终读出为0

0:无功效

1:清除SBF待机位(写)

位 2 CWUF:清除唤醒位

始终读出为0

0:无功效

1:2个系统时钟周期后清除WUF唤醒位(写)

位 1 PDDS:掉电深睡眠

与LPDS位协同操作

0:当CPU进入深睡眠时进入停机模式,调压器的状态由LPDS位控制。

1:CPU进入深睡眠时进入待机模式。

位 0 LPDS:深睡眠下的低功耗

PDDS=0时,与PDDS位协同操作

0:在停机模式下电压调压器开启

1:在停机模式下电压调压器处于低功耗模式

35/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

电源控制(PWR) STM32F10xxx参考手册

4.4.2 电源控制/状态寄存器

地址偏移:0x04

复位值:0x0000 0000 (从待机模式唤醒时不被清除)

与标准的APB读相比,读此寄存器需要额外的APB周期

319181716保留098EWUPrw765432PVDOr1SBFr0WUFr保留

位31:9

位 8

保留。始终读为0。

EWUP:使能WKUP管脚

保留0:WKUP管脚为通用I/O。WKUP管脚上的事件不能将CPU从待机模式唤醒

1:WKUP管脚用于将CPU从待机模式唤醒,WKUP管脚被强置为输入下拉的配置(WKUP管脚上的上升沿将系统从待机模式唤醒)

注:在系统复位时清除这一位。

位 7:3

位 2

保留。始终读为0。

PVDO:PVD输出

当PVD被PVDE位使能后该位才有效

0:VDD/VDDA高于由PLS[2:0]选定的PVD阀值

1:VDD/VDDA低于由PLS[2:0]选定的PVD阀值

注:在待机模式下PVD被停止。因此,待机模式后或复位后,直到设置PVDE位之前,该位为0。

位 1 SBF:待机标志

该位由硬件设置,并只能由POR/PDR(上电/掉电复位)或设置电源控制寄存器(PWR_CR)的CSBF位清除。

0:系统不在待机模式

1:系统进入待机模式

位 0 WUF:唤醒标志

该位由硬件设置,并只能由POR/PDR(上电/掉电复位)或设置电源控制寄存器(PWR_CR)的CWUF位清除。

0:没有发生唤醒事件

1:在WKUP管脚上发生唤醒事件或出现RTC闹钟事件。

注:当WKUP管脚已经是高电平时,在(通过设置EWUP位)使能WKUP管脚时,会检测到一个额外的事件。

36/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

电源控制(PWR)

STM32F10xxx参考手册

4.4.3 PWR寄存器地址映像

以下表格列出所有PWR寄存器。

表12 PWR寄存器地址映像和复位值

偏移000h寄存器PWR_CR复位值保留000000000EWUP保留保留PVDOSBFWUF000004hPWR_CSR复位值0

关于寄存器的起始地址,参见表1。

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

PVDECSBFCWUFPDDSLPDSDBP31312111PLS[2:0]37/524

复位和时钟控制 STM32F10xxx参考手册

5 备份寄存器(BKP)

小容量产品是指闪存存储器容量在16K至32K字节之间的STM32F101xx、STM32F102xx和STM32F103xx微控制器。

中容量产品是指闪存存储器容量在64K至128K字节之间的STM32F101xx、STM32F102xx和STM32F103xx微控制器。

大容量产品是指闪存存储器容量在256K至512K字节之间的STM32F101xx和STM32F103xx微控制器。

除非特别说明,本章节描述的模块应用于整个STM32F10xxx微控制器系列。

5.1 BKP简介

备份寄存器是42个16位的寄存器,可用来存储84个字节的用户应用程序数据。他们处在备份域里,当VDD电源被切断,他们仍然由VBAT维持供电。当系统在待机模式下被唤醒,或系统复位或电源复位时,他们也不会被复位。

此外,BKP控制寄存器用来管理侵入检测和RTC校准功能。

复位后,对备份寄存器和RTC的访问被禁止,并且备份域被保护以防止可能存在的意外的写操作。执行以下操作可以使能对备份寄存器和RTC的访问。

● 通过设置寄存器RCC_APB1ENR的PWREN和BKPEN位来打开电源和后备接口的时钟

● 电源控制寄存器(PWR_CR)的DBP位来使能对后备寄存器和RTC的访问。

5.2 BKP特性

● 20字节数据后备寄存器(中容量和小容量产品),或84字节数据后备寄存器(大容量产品)

● 用来管理防侵入检测并具有中功能的状态/控制寄存器

● 用来存储RTC校验值的校验寄存器。

● 在PC13管脚(当该管脚不用于侵入检测时)上输出RTC校准时钟,RTC闹钟脉冲或者秒脉冲

5.3

5.3.1

BKP功能描述

侵入检测

当TAMPER引脚上的信号从0变成1或者从1变成0(取决于备份控制寄存器BKP_CR的TPAL位),会产生一个侵入检测事件。侵入检测事件将所有数据备份寄存器内容清除。

然而为了避免丢失侵入事件,侵入检测信号是边沿检测的信号与侵入检测允许位的逻辑与,从而在侵入检测引脚被允许前发生的侵入事件也可以被检测到。

● 当TPAL=0时:如果在启动侵入检测TAMPER引脚前(通过设置TPE位)该引脚已经为高电平,一旦启动侵入检测功能,则会产生一个额外的侵入事件(尽管在TPE位置’1’后并没有出现上升沿)。

● 当TPAL=1时:如果在启动侵入检测引脚TAMPER前(通过设置TPE位)该引脚已经为低电平,一旦启动侵入检测功能,则会产生一个额外的侵入事件(尽管在TPE位置’1’后并没有出现下降沿)。

设置BKP_CSR寄存器的TPIE位为’1’,当检测到侵入事件时就会产生一个中断。

在一个侵入事件被检测到并被清除后,侵入检测引脚TAMPER应该被禁止。然后,在再次写入备份数据寄存器前重新用TPE位启动侵入检测功能。这样,可以阻止软件在侵入检测引脚上仍然有侵入事件时对备份数据寄存器进行写操作。这相当于对侵入引脚TAMPER进行电平检测。

注:

当VDD电源断开时,侵入检测功能仍然有效。为了避免不必要的复位数据备份寄存器,TAMPER引脚应该在片外连接到正确的电平。

38/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

复位和时钟控制 STM32F10xxx参考手册

5.3.2 RTC校准

为方便测量,RTC时钟可以经64分频输出到侵入检测引脚TAMPER上。通过设置RTC校验寄存器(BKP_RTCCR)的CCO位来开启这一功能。

通过配置CAL[6:0]位,此时钟可以最多减慢121ppm。

关于RTC校准和如何提高精度,请看AN2604“STM32F101xx和STM32F103xx的RTC校准”

5.4

5.4.1

BKP寄存器描述

关于在寄存器描述里面所用到的缩写,可参考1.1节

备份数据寄存器x(BKP_DRx) (x = 1 … 10)

地址偏移:0x04 到 0x28,0x40到0xBC

复位值:0x0000 0000

D[15:0]rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

位15:0 D[15:0]:备份数据

这些位可以被用来写入用户数据。

注意:BKP_DRx寄存器不会被系统复位、电源复位、从待机模式唤醒所复位。

它们可以由备份域复位来复位或(如果侵入检测引脚TAMPER功能被开启时)由侵入引脚事件复位。

5.4.2 RTC时钟校准寄存器(BKP_RTCCR)

地址偏移:0x2C

复位值:0x0000 0000

151413保留1211109ASOSrw8ASOErw7CCOrw6543CAL[6:0]210rwrwrwrwrwrwrw

位15:8

位9

保留,始终读为0。

ASOS:闹钟或秒输出选择

当设置了ASOE位,ASOS位可用于选择在TAMPER引脚上输出的是RTC秒脉冲还是闹钟脉冲信号。

0:输出RTC闹钟脉冲

1:输出秒脉冲

注:该位只能被后备区的复位所清除

位8 ASOE:允许输出闹钟或秒脉冲

根据ASOS位的设置,该位允许RTC闹钟或秒脉冲输出到TAMPER引脚上。

输出脉冲的宽度为一个RTC时钟的周期。设置了ASOE位时不能开启TAMPER的功能。

注:该位只能被后备区的复位所清除

位7 CCO:校准时钟输出

0:无影响

1:此位置1可以在侵入检测引脚输出经64分频后的RTC时钟。当CCO位置1时,必须关闭侵入检测功能以避免检测到无用的侵入信号。

注:当VDD供电断开时,该位被清除。

39/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

复位和时钟控制

位6:0 CAL[6:0]:校准值

STM32F10xxx参考手册

校准值表示在每220个时钟脉冲内将有多少个时钟脉冲被跳过。这可以用来对RTC进行校准,以1000000/(220)ppm的比例减慢时钟。

RTC时钟可以被减慢0~121ppm。

5.4.3 备份控制寄存器(BKP_CR)

偏移地址:0x30

复位值:0x0000 0000

09保留87654321TPALrw0TPErw

位15:2

位1

保留,始终读为0。

TPAL:侵入检测TAMPER引脚有效电平

0:侵入检测TAMPER引脚上的高电平会清除所有数据备份寄存器(如果TPE位为1)

1:侵入检测TAMPER引脚上的低电平会清除所有数据备份寄存器(如果TPE位为1)

位0 TPE:启动侵入检测TAMPER引脚

0:侵入检测TAMPER引脚作为通用IO口使用

1:开启侵入检测引脚作为侵入检测使用

注:

同时设置TPAL和TPE位总是安全的。然而,同时清除两者会产生一个假的侵入事件。因此,推荐只在TPE为0时才改变TPAL位的状态。

5.4.4 备份控制/状态寄存器(BKP_CSR)

偏移地址:0x34

复位值:0x0000 0000

151413保留1211109TIFr8TEFr765保留432TPIErw1CTIrw0CTErw

位15:10

位9

保留,始终读为0。

TIF:侵入中断标志

当检测到有侵入事件且TPIE位为1时,此位由硬件置1。通过向CTI位写1来清除此标志位(同时也清除了中断)。如果TPIE位被清除,则此位也会被清除。

0:无侵入中断

1:产生侵入中断

注意:仅当系统复位或由待机模式唤醒后才复位该位

位8 TEF:侵入事件标志

当检测到侵入事件时此位由硬件置1。通过向CTE位写1可清除此标志位

0:无侵入事件

1:检测到侵入事件

注:侵入事件会复位所有的BKP_DRx寄存器。只要TEF为1,所有的BKP_DRx寄存器就一直保持复位状态。当此位被置1时,若对BKP_DRx进行写操作,写入的值不会被保存。

位7:3 保留,始终读为0。

40/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

复位和时钟控制

位2 TPIE:允许侵入TAMPER引脚中断

0:禁止侵入检测中断

1:允许侵入检测中断(BKP_CR寄存器的TPE位也必须被置1)

注1:侵入中断无法将系统内核从低功耗模式唤醒。

注2:仅当系统复位或由待机模式唤醒后才复位该位。

位1 CTI:清除侵入检测中断

此位只能写入,读出值为0。

0:无效

1:清除侵入检测中断和TIF侵入检测中断标志

位0 CTE:清除侵入检测事件

此位只能写入,读出值为0。

0:无效

1:清除TEF侵入检测事件标志(并复位侵入检测器)。

STM32F10xxx参考手册

41/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

复位和时钟控制

STM32F10xxx参考手册

5.4.5 BKP寄存器映像

BKP寄存器是16位的可寻址寄存器。

表13 BKP寄存器映像和复位值

偏移000h寄存器004hBKP_DR1复位值008hBKP_DR2复位值00ChBKP_DR3复位值010hBKP_DR4复位值014hBKP_DR5复位值018hBKP_DR6复位值01ChBKP_DR7复位值020hBKP_DR8复位值024hBKP_DR9复位值028hBKP_DR10复位值ASOSASOECCO02ChBKP_RTCCR复位值030hRTC_CR复位值保留TIFTFE034hRTC_CSR复位值保留保留保留保留00038h03Ch040hBKP_DR11复位值保留D[15:0]0000

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

TPIECTICTE00042/524

TPALTPE262524232221241312111保留保留保留保留保留保留保留保留保留保留保留保留D[15:0]0000D[15:0]0000D[15:0]0000D[15:0]0000D[15:0]0000D[15:0]0000D[15:0]0000D[15:0]0000D[15:0]0000D[15:0]0000CAL[6:0]

复位和时钟控制

偏移044h寄存器BKP_DR12复位值STM32F10xxx参考手册

048hBKP_DR13复位值04ChBKP_DR14复位值050hBKP_DR15复位值054hBKP_DR16复位值058hBKP_DR17复位值05ChBKP_DR18复位值060hBKP_DR19复位值064hBKP_DR20复位值068hBKP_DR21复位值06ChBKP_DR22复位值070hBKP_DR23复位值074hBKP_DR24复位值078hBKP_DR25复位值07ChBKP_DR26复位值080hBKP_DR27复位值084hBKP_DR28复位值参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

31312111保留保留保留保留保留保留保留保留保留保留保留保留保留保留保留保留保留D[15:0]0000D[15:0]0000D[15:0]0000D[15:0]0000D[15:0]0000D[15:0]0000D[15:0]0000D[15:0]0000D[15:0]0000D[15:0]0000D[15:0]0000D[15:0]0000D[15:0]0000D[15:0]0000D[15:0]0000D[15:0]0000D[15:0]0000

43/524

复位和时钟控制

偏移088h寄存器BKP_DR29复位值STM32F10xxx参考手册

08ChBKP_DR30复位值090hBKP_DR31复位值094hBKP_DR32复位值098hBKP_DR33复位值09ChBKP_DR34复位值0A0hBKP_DR35复位值0A4hBKP_DR36复位值0A8hBKP_DR37复位值0AChBKP_DR38复位值0B0hBKP_DR39复位值0B4hBKP_DR40复位值0B8hBKP_DR41复位值0BChBKP_DR42复位值有关寄存器的起始地址,请参考表1。

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

31312111保留保留保留保留保留保留保留保留保留保留保留保留保留保留D[15:0]0000D[15:0]0000D[15:0]0000D[15:0]0000D[15:0]0000D[15:0]0000D[15:0]0000D[15:0]0000D[15:0]0000D[15:0]0000D[15:0]0000D[15:0]0000D[15:0]0000D[15:0]0000

44/524

复位和时钟控制 STM32F10xxx参考手册

6 复位和时钟控制(RCC)

小容量产品是指闪存存储器容量在16K至32K字节之间的STM32F101xx,STM32F102xx和STM32F103xx微控制器。

中容量产品是指闪存存储器容量在64K至128K字节之间的STM32F101xx,STM32F102xx和STM32F103xx微控制器。

大容量产品是指闪存存储器容量在256K至512K字节之间的STM32F101xx和STM32F103xx微控制器。

除非特别说明,本章节描述的模块应用于整个STM32F10xxx微控制器系列。

6.1

6.1.1

复位

STM32F10xxx支持三种复位形式,分别为系统复位、上电复位和备份区域复位。

系统复位

系统复位将复位除时钟控制寄存器CSR中的复位标志和备份区域中的寄存器以外的所有寄存器(见图3)。

当以下事件中的一件发生时,产生一个系统复位:

1. NRST管脚上的低电平(外部复位)

2. 窗口看门狗计数终止(WWDG复位)

3. 独立看门狗计数终止(IWDG复位)

4. 软件复位(SW复位)

5. 低功耗管理复位

可通过查看RCC_CSR控制状态寄存器中的复位状态标志位识别复位事件来源。

软件复位

通过将Cortex™-M3中断应用和复位控制寄存器中的SYSRESETREQ位置’1’,可实现软件复位。请参考Cortex™-M3技术参考手册获得进一步信息。

低功耗管理复位

在以下两种情况下可产生低功耗管理复位:

1. 在进入待机模式时产生低功耗管理复位:

通过将用户选择字节中的nRST_STDBY位置’1’将使能该复位。这时,即使执行了进入待机模式的过程,系统将被复位而不是进入待机模式。

2. 在进入停止模式时产生低功耗管理复位:

通过将用户选择字节中的nRST_STOP位置’1’将使能该复位。这时,即使执行了进入停机模式的过程,系统将被复位而不是进入停机模式。

关于用户选择字节的进一步信息,请参考STM32F10xxx闪存编程手册。

6.1.2 电源复位

当以下事件中之一发生时,产生电源复位:

1. 上电/掉电复位(POR/PDR复位)

2. 从待机模式中返回

电源复位将复位除了备份区域外的所有寄存器。(见图3)

图中复位源将最终作用于RESET管脚,并在复位过程中保持低电平。复位入口矢量被固定在地址0x0000_0004。更多细节,参阅表36。

45/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

复位和时钟控制

图6 复位电路

STM32F10xxx参考手册

备份区域拥有两个专门的复位,它们只影响备份区域。

6.1.3 备份域复位

当以下事件中之一发生时,产生备份区域复位。

1. 软件复位,备份区域复位可由设置备份区域控制寄存器RCC_BDCR中的BDRST位产生。

2. 在VDD和VBAT两者掉电的前提下,VDD或VBAT上电将引发备份区域复位。

6.2 时钟

三种不同的时钟源可被用来驱动系统时钟(SYSCLK):

● HSI振荡器时钟

● HSE振荡器时钟

● PLL时钟

这些设备有以下2种二级时钟源:

● 40kHz低速内部RC,可以用于驱动独立看门狗和通过程序选择驱动RTC。RTC用于从停机/待机模式下自动唤醒系统。

● 32.768kHz低速外部晶体也可用来通过程序选择驱动RTC(RTCCLK)。

当不被使用时,任一个时钟源都可被独立地启动或关闭,由此优化系统功耗。

46/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

复位和时钟控制

图7 时钟树

STM32F10xxx参考手册

1当HSI被用于作为PLL时钟的输入时,系统时钟的最大频率不得超过64MHz。

用户可通过多个预分频器配置AHB、高速APB(APB2)和低速APB(APB1)域的频率。AHB和APB2域的最大频率是72MHZ。APB1域的最大允许频率是36MHZ。SDIO接口的时钟频率固定为HCLK/2。

RCC通过AHB时钟8分频后供给Cortex系统定时器的(SysTick)外部时钟。通过对SysTick控制与状态寄存器的设置,可选择上述时钟或Cortex AHB时钟作为SysTick时钟。ADC时钟由高速APB2时钟经2、4、6或8分频后获得。

定时器时钟频率分配由硬件按以下2种情况自动设置:

1. 如果相应的APB预分频系数是1,定时器的时钟频率与所在APB总线频率一致。

2. 否则,定时器的时钟频率被设为与其相连的APB总线频率的2倍。

FCLK是Cortex™-M3的自由运行时钟。详情见ARM的Cortex™-M3技术参考手册。

47/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

复位和时钟控制 STM32F10xxx参考手册

6.2.1 HSE时钟

高速外部时钟信号(HSE)由以下两种时钟源产生:

● HSE外部晶体/陶瓷谐振器

● HSE用户外部时钟

为了减少时钟输出的失真和缩短启动稳定时间,晶体/陶瓷谐振器和负载电容器必须尽可能地靠近振荡器管脚。负载电容值必须根据所选择的振荡器来调整。

图8

HSE/LSE时钟源

硬件配置

外部时钟

晶体/陶瓷谐振器

外部时钟源(HSE旁路)

在这个模式里,必须提供外部时钟。它的频率最高可达25MHz。用户可通过设置在时钟控制寄存器中的HSEBYP和HSEON位来选择这一模式。外部时钟信号(50%占空比的方波、正弦波或三角波)必须连到SOC_IN管脚,同时保证OSC_OUT管脚悬空。见图8。

外部晶体/陶瓷谐振器(HSE晶体)

4~16Mz外部振荡器可为系统提供更为精确的主时钟。相关的硬件配置可参考图8,进一步信息可参考数据手册的电气特性部分。

在时钟控制寄存器RCC_CR中的HSERDY位用来指示高速外部振荡器是否稳定。在启动时,直到这一位被硬件置’1’,时钟才被释放出来。如果在时钟中断寄存器RCC_CIR中允许产生中断,将会产生相应中断。

HSE晶体可以通过设置时钟控制寄存器里RCC_CR中的HSEON位被启动和关闭。

6.2.2 HSI时钟

HSI时钟信号由内部8MHz的RC振荡器产生,可直接作为系统时钟或在2分频后作为PLL输入。

HSI RC振荡器能够在不需要任何外部器件的条件下提供系统时钟。它的启动时间比HSE晶体振荡器短。然而,即使在校准之后它的时钟频率精度仍较差。

校准

制造工艺决定了不同芯片的RC振荡器频率会不同,这就是为什么每个芯片的HSI时钟频率在出厂前已经被ST校准到1%(25°C)的原因。系统复位时,工厂校准值被装载到时钟控制寄存器的HSICAL[7:0]位。

如果用户的应用基于不同的电压或环境温度,这将会影响RC振荡器的精度。你可以通过利用在时钟控制寄存器里的HSITRIM[4:0]位来调整HSI频率。

48/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

复位和时钟控制 STM32F10xxx参考手册

时钟控制寄存器中的HSIRDY位用来指示HSI RC振荡器是否稳定。在时钟启动过程中,直到这一位被硬件置’1’,HSI RC输出时钟才被释放。HSI RC可由时钟控制寄存器中的HSION位来启动和关闭。

如果HSE晶体振荡器失效,HSI时钟会被作为备用时钟源。参考6.2.7节时钟安全系统。

6.2.3 PLL

内部PLL可以用来倍频HSI RC的输出时钟或HSE晶体输出时钟。参考图7和时钟控制寄存器。

PLL的设置(选择HIS振荡器除2或HSE振荡器为PLL的输入时钟,和选择倍频因子)必须在其被激活前完成。一旦PLL被激活,这些参数就不能被改动。

如果PLL中断在时钟中断寄存器里被允许,当PLL准备就绪时,可产生中断申请。

如果需要在应用中使用USB接口,PLL必须被设置为输出48或72MHZ时钟,用于提供48MHz的USBCLK时钟。

6.2.4 LSE时钟

LSE晶体是一个32.768kHz的低速外部晶体或陶瓷谐振器。它为实时时钟或者其他定时功能提供一个低功耗且精确的时钟源。

LSE晶体通过在备份域控制寄存器(RCC_BDCR)里的LSEON位启动和关闭。

在备份域控制寄存器(RCC_BDCR)里的LSERDY指示LSE晶体振荡是否稳定。在启动阶段,直到这个位被硬件置’1’后,LSE时钟信号才被释放出来。如果在时钟中断寄存器里被允许,可产生中断申请。

外部时钟源(LSE旁路)

在这个模式里必须提供一个32.768kHz频率的外部时钟源。你可以通过设置在备份域控制寄存器(RCC_BDCR)里的LSEBYP和LSEON位来选择这个模式。具有50%占空比的外部时钟信号(方波、正弦波或三角波)必须连到OSC32_IN管脚,同时保证OSC32_OUT管脚悬空。见图8。

6.2.5 LSI时钟

LSI RC担当一个低功耗时钟源的角色,它可以在停机和待机模式下保持运行,为独立看门狗和自动唤醒单元提供时钟。LSI时钟频率大约40kHz(在30kHz和60kHz之间)。进一步信息请参考数据手册中有关电气特性部分。

LSI RC可以通过控制/状态寄存器(RCC_CSR)里的LSION位来启动或关闭。

在控制/状态寄存器(RCC_CSR)里的LSIRDY位指示低速内部振荡器是否稳定。在启动阶段,直到这个位被硬件设置为’1’后,此时钟才被释放。如果在时钟中断寄存器(RCC_CIR)里被允许,将产生LSI中断申请。

注意:

只有大容量产品可以进行LSI校准

LSI校准

可以通过校准内部低速振荡器LSI来补偿其频率偏移,从而获得精度可接受的RTC时间基数,以及独立看门狗(IWDG)的超时时间(当这些外设以LSI为时钟源)。

校准可以通过使用TIM5的输入时钟(TIM5_CLK)测量LSI时钟频率实现。测量以HSE的精度为保证,软件可以通过调整RTC的20位预分频器来获得精确的RTC时钟基数,以及通过计算得到精确的独立看门狗(IWDG)的超时时间。

LSI校准步骤如下:

1.

2.

3.

4.

打开TIM5,设置通道4为输入捕获模式;

设置AFIO_MAPR的TIM5_CH4_IREMAP位为’1’,在内部把LSI连接到TIM5的通道4;

通过TIM5的捕获/比较4事件或者中断来测量LSI时钟频率;

根据测量结果和期望的RTC时间基数和独立看门狗的超时时间,设置20位预分频器。

49/524

参照2008年12月 RM0008 Reference Manual 英文第7版

本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本