图书目录

目录Contents

第1章STM32微控制器1

1.1STM32微控制器3

1.1.1CortexM3的MCU3

1.1.2CortexM3的主要优势3

1.1.3CortexM3系列4

1.2STM32系统架构及命名规则5

1.2.1STM32系统架构5

1.2.2STM32命名规则6

1.3STM32的应用领域8

练习与拓展9

第2章STM32硬件开发平台11

2.1STM32F103最小系统板13

2.2I/O扩展模块18

练习与拓展21

第3章开发环境搭建与工程模板创建23

3.1STM32固件库概述25

3.2MDK软件及支持包安装28

3.2.1MDK软件安装28

3.2.2支持包安装31

3.3CH340驱动安装33

3.4程序下载方法1: ISP串口程序下载34

3.4.1ISP串口程序下载硬件连接34

3.4.2下载工具FlyMcu配置35

3.5程序下载方法2: STLINK程序下载37

3.5.1STLINK V2的硬件连接38

3.5.2STLINK驱动的安装38STM32嵌入式原理及应用——基于STM32F103微控制器的进阶式项目实战3.5.3STLINK固件升级39

3.5.4MDK软件上配置STLINK40

3.6基础项目实践44

3.6.1项目1: 新建基于库函数的MDK5模板44

3.6.2项目考核评价表65

练习与拓展66

第4章STM32 GPIO原理与项目实践69

4.1GPIO概述71

4.2GPIO工作模式与输出速度71

4.2.1GPIO工作模式71

4.2.2GPIO输出速度76

4.3STM32时钟系统77

4.3.1时钟源77

4.3.2外设及系统时钟77

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

4.4STM32 GPIO相关配置寄存器80

4.5端口复用和重映射86

4.5.1端口复用功能86

4.5.2端口重映射87

4.6位操作88

4.6.1位操作基本原理88

4.6.2位带操作定义90

4.7GPIO相关的库函数91

4.8基本项目实践95

4.8.1项目2: 基于库函数操作的I/O口输出控制LED灯闪烁95

4.8.2项目3: 基于寄存器的I/O口输出控制LED灯闪烁106

4.8.3项目4: 基于位操作的I/O口输出控制LED灯闪烁112

4.8.4项目考核评价表115

4.9拓展项目实践116

4.9.1项目5: I/O口输出控制LED流水灯116

4.9.2项目6: I/O口输出控制蜂鸣器和LED亮灭120

4.9.3项目7: 单按键控制LED灯和蜂鸣器123

4.9.4项目8: I/O口输入/输出综合项目127

4.9.5项目9: 数码管显示独立式按键值134

4.9.6项目10: 数码管显示矩阵式键盘按键值140

练习与拓展147

第5章STM32中断系统原理与项目实践151

5.1中断概述153

5.1.1中断的概念153

5.1.2NVIC介绍153

5.2NVIC嵌套向量中断控制器153

5.2.1STM32F103中断向量表153

5.2.2NVIC中断优先级分组156

5.2.3中断优先级分组函数157

5.2.4抢占优先级和响应优先级158

5.2.5中断设置相关寄存器158

5.2.6中断优先级设置步骤160

5.3外部中断/事件控制器160

5.3.1外部中断/事件控制器结构161

5.3.2外部中断/事件输入线162

5.4STM32中断相关库函数164

5.4.1NVIC相关库函数164

5.4.2EXTI相关库函数169

5.4.3EXTI中断线GPIO引脚映射库函数172

5.5基本项目实践172

5.5.1外部中断的一般配置步骤172

5.5.2项目11: 按键中断控制流水灯和蜂鸣器172

5.5.3项目考核评价表180

5.6拓展项目实践180

5.6.1项目12: 三路抢答器180

5.6.2项目13: 七路医院输液呼叫器186

练习与拓展194

第6章STM32定时器原理与项目实践197

6.1STM32F103定时器概述199

6.2基本定时器200

6.2.1基本定时器结构200

6.2.2基本定时器的计数模式203

6.3通用定时器203

6.3.1通用定时器结构203

6.3.2通用定时器的计数模式209

6.3.3通用定时器主要寄存器210

6.4定时器相关库函数214

6.5基本项目实践218

6.5.1项目14: 定时器中断控制LED闪烁218

6.5.2项目15: 输入信号脉冲宽度测量221

6.5.3项目16: PWM控制LED实现呼吸灯225

6.5.4项目考核评价表230

6.6拓展项目实践230

项目17: 城市交通灯230

练习与拓展237

第7章STM32串口通信原理与项目实践239

7.1串口通信概述241

7.2STM32 USART工作原理242

7.2.1数据帧格式243

7.2.2波特率243

7.2.3数据收/发过程244

7.2.4USART内部结构245

7.2.5数据传输状态获取方式245

7.2.6USART硬件连接246

7.2.7USART寄存器介绍247

7.3USART的相关库函数252

7.4基本项目实践253

7.4.1项目18: 串口控制LED灯亮灭253

7.4.2项目考核评价表261

7.5拓展项目实践261

项目19: 手机——蓝牙——STM32控制家庭照明灯261

练习与拓展269

第8章STM32 IIC原理与项目实践270

8.1IIC概述 273

8.2IIC基本原理273

8.2.1IIC总线结构273

8.2.2IIC总线协议273

8.2.3IIC的寻址与读写过程275

8.3STM32的IIC特点及内部结构277

8.3.1STM32的IIC主要特点277

8.3.2STM32的IIC内部结构278

8.4OLED显示屏279

8.4.1OLED简介279

8.4.20.96英寸OLED IIC显示屏模块280

8.4.3STM32与0.96英寸OLED IIC接口连接280

8.5STM32F103的IIC相关库函数281

8.6基本项目实践284

8.6.1项目20: STM32控制IIC OLED屏显示“我爱中国”284

8.6.2项目考核评价表290

8.7拓展项目实践290

项目21: STM32温湿度检测及控制器290

练习与拓展296

第9章STM32 DMA原理与项目实践299

9.1DMA概述301

9.2STM32F103 DMA的工作原理302

9.2.1DMA的基本结构302

9.2.2DMA功能模块介绍303

9.2.3DMA数据搬移过程304

9.2.4DMA请求映射307

9.2.5DMA主要寄存器介绍309

9.3DMA的相关库函数313

9.4基本项目实践317

9.4.1项目22: DMA实现存储器内部数据转运317

9.4.2项目考核评价表323

9.5拓展项目实践324

项目23: 存储器到外设数据搬移进度监测324

练习与拓展332

第10章STM32 ADC原理与项目实践333

10.1STM32的ADC概述335

10.2STM32的ADC工作原理336

10.2.1STM32F103的ADC主要特征336

10.2.2STM32的ADC内部结构336

10.2.3ADC校准343

10.2.4ADC转换模式343

10.2.5ADC外部触发转换344

10.3STM32的ADC相关库函数345

10.4基本项目实践353

10.4.1ADC1的通道1进行单次转换步骤353

10.4.2项目24: 直流数字电压表353

10.4.3项目考核评价表357

10.5拓展项目实践358

10.5.1项目25: 光敏电阻的照明灯控制系统358

10.5.2项目26: MQ3酒精传感器检测及显示363

练习与拓展368

第11章综合应用371

11.1项目27: 超声波传感器测距仪371

11.2项目28: STM32校园上课铃响系统374

11.3项目29: 土壤湿度传感器检测及显示376

11.4项目30: STM32室内环境检测与控制系统379

参考文献384

附录A大容量STM32F103xx产品系列引脚定义表385

附录BMDK下C语言基础392

B.1位操作392

B.2define宏定义393

B.3ifdef条件编译393

B.4extern变量声明394

B.5typedef类型别名395

B.6结构体395

B.7static关键字396