第1章 ARM处理器概述 1
1.1 什么是ARM处理器 1
1.2 ARM处理器的发展史 1
1.3 ARM处理器的系列产品 2
1.3.1 ARM Cortex-A5系列产品 3
1.3.2 ARM Cortex-A8系列产品 4
1.3.3 ARM Cortex-A9系列产品 4
1.3.4 ARM Cortex-A15系列产品 5
1.4 ARM处理器的架构 5
1.5 STM32系列ARM处理器的特点与性能 7
1.6 ARM处理器系统的开发要点 11
1.7 如何学习ARM处理器课程 12
1.8 如何提高ARM处理器的开发技能 13
第2章 STM32应用基础 15
2.1 STM32系列处理器选型指南 15
2.1.1 STM32系列处理器的命名规则 15
2.1.2 STM32系列处理器的选型 16
2.1.3 STM32系列处理器的引脚信息 22
2.2 STM32系列处理器内部结构 29
2.3 STM32系列处理器的电源管理 31
2.3.1 电源结构 31
2.3.2 电源电压监视 32
2.3.3 复位电路 32
2.3.4 低功耗模式 34
2.3.5 STM32的启动 35
2.4 STM32系列处理器的时钟系统 36
2.4.1 高速时钟(HSE、HSI) 38
2.4.2 锁相环时钟(PLL) 38
2.4.3 低速时钟(LSE、LSI) 39
2.4.4 系统时钟(SYSCLK) 39
2.4.5 RCC寄存器配置 40
2.5 STM32系列处理器的存储结构与映射 48
2.5.1 存储器结构 49
2.5.2 存储器映射 50
2.5.3 系统存储器的地址重映射 52
第3章 STM32常用固件库的使用与编程 54
3.1 STM32固件库概述 54
3.2 STM32外设库函数调用基础 55
3.3 通用输入/输出(GPIO)库函数 57
3.3.1 GPIO初始化相关函数 57
3.3.2 GPIO引脚读写函数 60
3.3.3 GPIO端口读写函数 63
3.3.4 GPIO管脚事件输出配置使能函数 64
3.3.5 GPIO管脚中断管理函数 64
3.4 复位和时钟设置(RCC)库函数 65
3.4.1 RCC初始化相关函数 67
3.4.2 配置高速(HSE、HSI)相关函数 68
3.4.3 设置PLL时钟源及倍频系数相关函数 70
3.4.4 设置系统时钟(SYSCLK)相关函数 71
3.4.5 设置AHB时钟相关函数 72
3.4.6 设置USB、ADC时钟相关函数 75
3.4.7 设置低速晶振(LSE、LSI)相关函数 76
3.4.8 设置RTC时钟相关函数 77
3.4.9 RCC相关中断函数 78
3.5 异步通信(USART)串口库函数 79
3.5.1 USART初始化相关函数 81
3.5.2 USART设置检查相关函数 84
3.5.3 USART输入/输出相关函数 86
3.5.4 USART相关中断函数 87
3.6 通用定时器库函数 89
3.6.1 定时器初始化与使能函数 91
3.6.2 定时器时钟设置类函数 97
3.6.3 定时器配置类函数 99
3.6.4 定时器参数获取或清除标志类函数 103
3.6.5 定时器中断类相关函数 104
3.7 系统时基定时器(SysTick)库函数 105
3.8 实时时钟(RTC)库函数 108
3.8.1 RTC设置读取类函数 109
3.8.2 RTC等待检查类函数 111
3.8.3 RTC状态检查与中断类函数 112
3.9 后备域(BKP)库函数 114
3.10 独立看门狗(IWDG)库函数 117
3.11 窗口看门狗(WWDG)库函数 120
3.12 模/数转换器(ADC)库函数 123
3.12.1 ADC初始化与使能类函数 125
3.12.2 ADC设置获取类函数 130
3.12.3 ADC转换结果类函数 133
3.12.4 ADC标志与中断类函数 134
3.13 I2C总线接口库函数 136
3.13.1 I2C初始化类函数 137
3.13.2 I2C使能类函数 140
3.13.3 I2C传输类函数 142
3.13.4 I2C标志与中断类函数 145
3.14 SPI总线接口库函数 148
3.14.1 SPI初始化与使能类函数 149
3.14.2 SPI传输与CRC校验类函数 153
3.14.3 SPI标志与中断类函数 155
3.15 局域网(CAN)库函数 157
3.15.1 CAN初始化与使能类函数 158
3.15.2 CAN传输类函数 162
3.15.3 CAN标志与中断类函数 167
3.16 DMA控制器库函数 169
3.17 外部中断/事件控制器(EXTI)库函数 173
3.18 嵌套向量中断控制器(NVIC)库函数 178
3.18.1 NVIC初始化设置类函数 179
3.18.2 NVIC使能类函数 183
3.18.3 NVIC检查选择类函数 184
3.19 存储器(FLASH)库函数 186
3.19.1 FLASH设置使能类函数 187
3.19.2 FLASH检查擦除类函数 189
3.19.3 FLASH数据写入读出与保护类函数 191
3.19.4 FLASH中断标志类函数 194
第4章 GPIO端口的结构与编程应用 197
4.1 GPIO的硬件结构和功能 197
4.1.1 GPIO复用与输入功能 198
4.1.2 GPIO输出功能 199
4.1.3 GPIO速度选择与输入保护功能 201
4.2 GPIO锁定与配置机制 202
4.3 I/O端口外设的映射 203
4.4 GPIO寄存器 207
4.5 GPIO编程应用 210
4.5.1 GPIO驱动的普通应用 210
4.5.2 流水灯的控制与编程 211
4.5.3 通过74HC595实现的数码管显示器 214
第5章 STM32处理器的中断技术 218
5.1 STM32中断通道的管理 218
5.2 STM32中断优先级的设置 221
5.3 STM32外部中断/事件控制器 223
5.3.1 EXTI硬件结构 223
5.3.2 EXTI的寄存器 226
5.4 STM32中断编程实例 228
第6章 STM32定时/计数器的编程应用 233
6.1 STM32定时器概述 233
6.2 通用定时器TIMx的结构 234
6.2.1 时钟源的选择 235
6.2.2 定时器的时基单元 237
6.2.3 捕获和比较通道 238
6.2.4 计数器与定时时间的计算 239
6.3 RTC的功能与操作 240
6.3.1 RTC的基本功能 241
6.3.2 RTC的基本操作 241
6.3.3 RTC的供电与唤醒 243
6.3.4 BKP与侵入检测 243
6.4 系统时钟SysTick的功能与使用 244
6.4.1 SysTick内部结构 244
6.4.2 SysTick定时器的使用 245
6.5 看门狗定时器的功能与操作 246
6.5.1 独立看门狗定时器的操作 246
6.5.2 窗口看门狗定时器的操作 247
6.6 定时器的编程应用实例 249
6.6.1 定时器的基本应用 249
6.6.2 频率信号测量的应用 254
6.6.3 通过RTC实现日历程序的应用 256
6.6.4 通过SysTick实现精确延时 258
6.6.5 看门狗定时器的应用 261
第7章 串口通信技术与编程应用 262
7.1 USART的功能和内部结构 262
7.1.1 USART的主要功能 262
7.1.2 USART的内部结构 263
7.2 USART的寄存器 265
7.3 USART的收发格式 266
7.3.1 USART的发送器 267
7.3.2 USART的接收器 269
7.4 USART波特率的设置 270
7.5 USART硬件流控制 271
7.6 USART中断请求与模式配置 272
7.7 USART编程应用实例 274
7.7.1 串口通信应用基础 274
7.7.2 串口通信编程指导 275
7.7.3 串口1与PC的通信应用 286
第8章 A/D转换器的接口与编程应用 289
8.1 ADC的主要特征与架构 289
8.2 ADC的通道选择与工作模式 292
8.3 ADC的校准与数据对齐 294
8.4 ADC的寄存器与中断 295
8.5 ADC应用编程实例 296
8.5.1 ADC的应用基础 296
8.5.2 热电阻温度的测量应用 298
8.5.3 芯片内部温度的采集 303
第9章 STM32处理器综合应用实例 307
9.1 LED点阵显示器的设计与编程 307
9.2 SHT1x温湿度传感器的接口与应用 314
9.3 直流电机的调速与编程应用 321
9.4 RS485通信的硬件设计与编程应用 325
9.5 中断优先级与看门狗定时器的测试应用 332
9.6 处理器Flash与串行Flash的编程应用 338
9.6.1 STM32处理器Flash编程应用 339
9.6.2 串行Flash的编程应用 341
9.7 STM32处理器与W5200网络模块的接口应用 348
9.7.1 W5200性能特点与硬件接口 348
9.7.2 W5200接口软件设计 353
附录 369
参考文献 374