第1章 概述 1
1.1 STM32F1xx系列概述 1
1.1.1 STM32F1xx的多个子系列 1
1.1.2 STM32F1xx系列特点 2
1.1.3 内核简介 3
1.2 封装 3
1.3 接口 4
1.4 选型指南 5
1.5 开发环境 7
第2章 STM32F103最小系统 9
2.1 最小系统设计 9
2.1.1 最小系统 9
2.1.2 电源 10
2.1.3 复位控制 11
2.1.4 系统启动模式 12
2.1.5 振荡器 12
2.2 JTAG接口 13
第3章 寄存器及存储器 14
3.1 内部通用工作寄存器 14
3.2 STM32F1xx存储器空间 19
3.2.1 存储器映像 19
3.2.2 外设管理寄存器 20
3.2.3 内嵌Flash存储器 22
3.2.4 内嵌SRAM存储器 23
3.2.5 系统存储器 23
3.3 堆栈及栈区 24
3.4 数据格式 25
3.4.1 数据的大端和小端 25
3.4.2 地址对准 26
3.5 位段(bit-banding)操作 28
3.5.1 位操作概念和位操作分区 28
3.5.2 位段操作 30
3.5.3 位段操作应用举例 32
第4章 最小系统管理 36
4.1 电源系统管理 36
4.1.1 电压监测器PVD 37
4.1.2 低功耗模式 38
4.1.3 实时时钟的自动唤醒AWU方式 40
4.1.4 电源控制寄存器组介绍 41
4.2 复位系统 42
4.2.1 系统复位 43
4.2.2 系统复位源的识别和应用 44
4.2.3 外部设备复位 46
4.3 时钟系统管理 49
4.3.1 独立看门狗(IWDG)时钟 50
4.3.2 实时时钟RTC 51
4.3.3 系统主时钟 53
4.3.4 外部设备时钟 59
4.3.5 输出时钟源 62
4.3.6 时钟管理寄存器组 63
第5章 中断和事件 66
5.1 中断和事件概述 66
5.2 中断向量表 68
5.3 内核中断 70
5.3.1 内核中断介绍 71
5.3.2 内核中断的应用 71
5.3.3 内核中断的管理 72
5.4 外部中断/事件 75
5.4.1 外部中断/事件概述 76
5.4.2 外部中断/事件管理 78
5.5 外设中断 81
5.5.1 外设中断概述 82
5.5.2 系统中断设置/使能寄存器 82
5.6 中断优先权和中断过程 84
5.6.1 中断优先权寄存器 85
5.6.2 中断过程 86
第6章 汇编语言编程方法 89
6.1 汇编语言程序组成 90
6.1.1 汇编语言程序 90
6.1.2 汇编语言程序要素 92
6.2 汇编语言书写规则 97
6.3 汇编语言中的表达式 97
6.3.1 变量 97
6.3.2 字符串表达式 98
6.3.3 数字表达式 100
6.3.4 逻辑表达式 102
6.3.5 以PC为基址和以寄存器为基址的地址表达式 104
6.3.6 编译时的运算顺序 105
6.4 第2操作数 105
6.4.1 第2操作数表达 105
6.4.2 第2操作数规范 107
6.5 地址的前缀和后缀 107
6.6 指令可选后缀 108
6.7 条件指令的应用(条件后缀) 109
6.7.1 条件标志的变化 110
6.7.2 条件标志位 110
6.7.3 条件的判断和程序的转移(条件后缀) 111
6.8 数据栈的应用 113
第7章 汇编语言工程项目 115
7.1 汇编语言启动代码 115
7.1.1 标准的启动代码 116
7.1.2 自编的启动代码 125
7.2 汇编语言工程项目 126
7.2.1 建立一个工程项目 126
7.2.2 编制主程序 129
7.2.3 建立一个中断处理文件 133
7.2.4 建立一个子文件 136
第8章 Thumb-2指令集 138
8.1 存储器访问指令 139
8.2 通用数据处理指令 147
8.3 乘法和除法指令 155
8.4 饱和运算指令SSAT和USAT 157
8.5 位段操作指令 160
8.6 分支和分支控制指令 163
8.7 其他指令 167
第9章 伪指令 171
9.1 概述 171
9.2 符号声明类伪指令 172
9.3 数据定义类伪指令 174
9.4 控制程序流向的伪指令 179
9.5 其他伪指令 185
第10章 C语言编程方法 189
10.1 C语言的两种编程方法 189
10.2 创建一个C语言工程项目 191
10.3 寄存器编程方法 194
10.3.1 寄存器定义和寄存器赋值 194
10.3.2 逻辑判断语句的应用 198
10.3.3 Contex-M3的位段操作在C语言中的应用 199
10.4 工程项目组成 200
10.4.1 创建和添加一个扩展名为h的头文件 201
10.4.2 创建和添加一个中断服务程序文件 201
第11章 混合编程方法 204
11.1 嵌入式汇编语法 204
11.2 参数传递 206
第12章 通用外部端口GPIO和复用外部端口AFIO 209
12.1 通用输入/输出端口概述 209
12.2 通用I/O端口应用 212
12.3 复用I/O端口 218
12.4 复用功能的重新映射 221
12.5 寄存器组说明 225
第13章 模拟/数字转换器ADC 227
13.1 ADC信号源 228
13.2 A/D信号源分组 228
13.2.1 概述 228
13.2.2 信号源分组 229
13.2.3 分组寄存器介绍 231
13.2.4 分组方法举例 234
13.3 使用ADC的几个概念 235
13.3.1 采样时间及采样时间寄存器 235
13.3.2 数据对齐 237
13.3.3 校准 238
13.3.4 ADC时钟 238
13.3.5 内部触发和外部触发 239
13.3.6 中断 240
13.3.7 ADC复位后状态 241
13.4 单次转换和连续转换 242
13.5 扫描模式 243
13.6 间断模式 245
13.7 ADC的其他特性 247
13.7.1 模拟看门狗 247
13.7.2 双ADC模式 248
13.7.3 不同型号产品ADC的区别 252
13.8 ADC寄存器组 253
13.9 ADC程序实例 260
第14章 通用异步同步收发器USART 264
14.1 异步通信概述 264
14.2 波特率设置 266
14.3 数据发送 267
14.4 数据接收 269
14.5 异步串行通信中的中断 270
14.6 异步串行通信应用举例 271
14.7 USART寄存器介绍 273
参考文献 276