内容简介
本书涵盖了基于ARM的STM32 HAL库的基本概念、基本原理、应用技术。硬件原理的阐述以学生"适用、易学、掌握”为原则,降低读者入门和理解的难度。STM32的软件设计基于HAL库,方便读者上手。本书在内容组织和框架设计上具有两个鲜明特点:全案例、基于读者学习。从读者学习的角度,组织每个章节的内容体系,对STM32常用的典型外设模块的原理及其应用设计均以若干个完整案例呈现,同时也给出了一个完整的综合性工程案例,这些都十分有利于学习者学习和模仿。
目录
目 录
第一篇 基于HAL + STM32CubeIDE
第1章 如何学习STM32 2
1.1 学习STM32必须具备的基础知识 2
1.2 STM32的基本架构和基本原理 3
1.2.1 嵌入式与ARM 3
1.2.2 什么是STM32 4
1.2.3 STM32的内部结构 5
1.2.4 STM32的时钟树 6
1.2.5 STM32典型芯片 9
1.3 STM32的开发 10
1.3.1 STM32的4种开发模式 10
1.3.2 HAL库的文件结构 12
1.3.3 基于HAL库开发中必须掌握的几个概念 14
1.3.4 如何学习STM32 16
1.3.5 学习STM32所需工具和平台 16
1.4 STM32的最小系统―学习和开发的最小平台 18
1.5 本章小结 20
思考与实践 21
第2章 STM32的工程创建和调试 22
2.1 STM32CubeMX与STM32CubeIDE 22
2.1.1 什么是STM32CubeMX 22
2.1.2 STM32CubeIDE与STM32CubeMX的区别 22
2.2 STM32CubeIDE开发平台的搭建 23
2.2.1 IDE平台的安装 23
2.2.2 Packs包下载与安装 26
2.3 新建工程流程 29
2.4 STM32CubeIDE的功能及其基本操作 37
2.4.1 工具栏介绍 37
2.4.2 Debug调试模式 38
2.4.3 窗口和文本设置 39
2.5 本章小结 41
思考与实践 41
第3章 通用输入/输出(GPIO)口 42
3.1 STM32 GPIO口概述 42
3.2 GPIO口的工作原理 42
3.2.1 GPIO引脚介绍 42
3.2.2 GPIO口的内部结构 43
3.2.3 GPIO口的工作模式 46
3.3 GPIO口配置与应用 50
3.3.1 GPIO口配置解析 50
3.3.2 GPIO函数 51
3.4 GPIO应用实例 52
3.4.1 GPIO输出控制 52
3.4.2 单功能按键输入 57
3.4.3 复用功能按键输入 61
3.5 本章小结 63
思考与实践 64
第4章 中断 65
4.1 中断及其基本原理 65
4.1.1 什么是中断 65
4.1.2 中断系统 66
4.1.3 中断处理流程 67
4.2 嵌套向量中断控制器 68
4.2.1 嵌套向量中断控制器的主要功能 68
4.2.2 异常和中断 69
4.2.3 EXTI 71
4.3 EXTI的配置与应用 73
4.3.1 EXTI配置解析 73
4.3.2 EXTI函数 76
4.4 EXTI应用实例 76
4.4.1 EXTI控制LED翻转 76
4.4.2 EXTI嵌套LED控制 83
4.5 本章小结 89
思考与实践 90
第5章 串口(USART) 91
5.1 串行通信 91
5.1.1 嵌入式系统中的通信 91
5.1.2 同步/异步串行通信 92
5.1.3 UART 93
5.2 STM32的USART 95
5.2.1 USART接口 95
5.2.2 5路USART的引脚关系 96
5.2.3 USART的应用步骤 97
5.3 串口通信配置 97
5.3.1 串口设备配置解析 97
5.3.2 常用的UART函数 99
5.3.3 串口重定向 100
5.3.4 串口调试助手 101
5.4 串口应用实例 102
5.4.1 串口收发轮询方式 102
5.4.2 串口收发中断方式 109
5.4.3 串口空闲中断方式 111
5.5 本章小结 112
思考与实践 112
第6章 I2C和SPI 113
6.1 STM32的I2C总线 113
6.1.1 I2C总线概述 113
6.1.2 I2C总线的工作原理和注意事项 114
6.1.3 STM32的I2C总线的基本特点 116
6.2 STM32的I2C总线的应用要领 117
6.2.1 关于STM32的I2C模块 117
6.2.2 I2C总线死锁的原因及其解决办法 118
6.2.3 STM32的I2C接收和发送流程 118
6.3 硬件I2C与软件I2C 119
6.3.1 硬件I2C设备配置流程 119
6.3.2 接口函数及其应用 123
6.3.3 软件I2C实现 126
6.4 STM32的SPI 129
6.4.1 硬件结构与时序 129
6.4.2 STM32 SPI的构成 131
6.4.3 STM32的SPI的主要工作流程 132
6.4.4 SPI函数及其应用 132
6.4.5 设备配置流程 133
6.5 I2C和SPI应用实例 135
6.5.1 I2C读写AT24C02 135
6.5.2 基于SPI总线实现OLED显示 140
6.6 本章小结 152
思考与实践 153
第7章 定时器 154
7.1 STM32定时器 154
7.1.1 高级定时器 154
7.1.2 通用定时器 155
7.1.3 基本定时器 156
7.2 PWM 157
7.2.1 什么是PWM 157
7.2.2 PWM的主要参数 157
7.2.3 PWM的工作原理 157
7.2.4 PWM的应用 158
7.3 定时器配置 159
7.3.1 定时器模式 159
7.3.2 定时器参数 160
7.3.3 定时器中断 161
7.4 主要接口函数 162
7.4.1 定时器启停 162
7.4.2 比较输出 162
7.4.3 PWM输出 163
7.4.4 输入捕获 164
7.5 定时器应用实例 165
7.5.1 定时器控制LED 165
7.5.2 PWM呼吸灯 166
7.5.3 输入捕获 168
7.6 本章小结 171
思考与实践 173
第8章 直接存储器访问(DMA) 174
8.1 STM32的DMA 174
8.1.1 什么是DMA 174
8.1.2 DMA控制器的功能框图 174
8