本书首先以Cortex-M3内核为例,介绍了STM32内核架构、存储空间、中断方式、指令集等ARM基础内容。随后以微处理器STM32F103ZET6为例,结合配套的开发板硬件,有针对性地介绍STM32内部资源、最小系统设计,并从面上分析STM32芯片的引脚配置、常用片上资源、外围接口电路设计等内容,从而让读者对STM32系统有一个整体认识。然后以“LED闪烁”典型例程为引导,由浅入深,逐步讲述了MDK开发环境、工程建立、程序编译、库函数、端口配置等软硬件使用方法。结合CPU片上资源配置,采用具体实验例程,详细介绍各个模块的功能和使用方法。最后以两轮自平衡小车控制系统设计为例,从实际工程开发的角度,介绍STM32应用系统软硬件的设计和实现。
样章试读
目录
- 目录
第1章 绪论 1
1.1 概述 1
1.2 典型STM32处理器简介 1
1.3 STM32系列MCU的优点 2
1.4 STM32应用领域 4
1.5 STM32学习方法 5
习题与思考题 5
第2章 STM32内核架构 6
2.1 概述 6
2.2 内部功能结构 7
2.2.1 总体结构及功能模块概述 7
2.2.2 总线结构 8
2.2.3 流水线 9
2.3 寄存器组及CPU运行模式 10
2.3.1 寄存器组 10
2.3.2 CPU运行模式 12
2.4 存储器和存储空间 13
2.4.1 存储空间映射 13
2.4.2 存储器的各种访问属性 14
2.4.3 位带技术 15
2.5 独特的Thumb-2指令集 16
2.5.1 指令集开发 17
2.5.2 Thumb-2指令集体系结构 17
2.6 中断和异常 18
2.6.1 NVIC概览 18
2.6.2 中断的进入与退出 18
2.6.3 中断嵌套 19
2.6.4 尾链技术 19
2.6.5 晚到异常 19
2.7 调试支持 19
习题与思考题 20
第3章 STM32硬件基础 21
3.1 概述 21
3.2 STM32芯片的引脚选型和配置 21
3.2.1 STM32芯片的命名规则和选型 21
3.2.2 STM32芯片的引脚配置 22
3.3 STM32最小应用系统设计 25
3.3.1 电源电路设计 25
3.3.2 复位电路设计 27
3.3.3 时钟电路设计 27
3.3.4 JTAG接口电路设计 28
3.3.5 外部存储器扩展 28
3.4 外设板硬件资源设计 30
3.4.1 串行通信接口 31
3.4.2 串行外设接口 32
3.4.3 USB接口 33
3.4.4 CAN总线控制器接口 33
3.4.5 键盘接口电路 34
3.4.6 数码管显示电路 35
3.4.7 LCD及其接口电路 36
3.4.8 步进电机 38
3.4.9 SD卡接口 38
3.4.10 其他外设资源 39
习题与思考题 41
第4章 软件开发基础 42
4.1 概述 42
4.2 集成开发环境及其应用 42
4.2.1 开发工具简介 42
4.2.2 固件库简介 43
4.2.3 Keil MDK的安装 44
4.2.4 J-LINK驱动安装 45
4.3 STM32应用程序开发调试实例 46
4.3.1 STM32工程建立 46
4.3.2 LED闪烁代码编写及分析 56
4.3.3 配置J-LINK硬件调试 57
4.3.4 STM32程序下载 57
习题与思考题 59
第5章 库函数及应用 60
5.1 概述 60
5.2 库函数简介 61
5.3 库函数应用实例 63
5.4 深入剖析LED闪烁例程 65
5.4.1 LED闪烁例程说明 65
5.4.2 LED闪烁例程分析与实验 66
5.4.3 程序分析 68
习题与思考题 73
第6章 基本模块及其应用开发 74
6.1 概述 74
6.2 通用数字输入/输出模块 74
6.2.1 GPIO模块结构与工作原理 74
6.2.2 GPIO模块寄存器说明 76
6.2.3 实验部分 79
6.3 NVIC与中断控制 84
6.3.1 STM32中断优先级 85
6.3.2 中断的使能与除能 86
6.3.3 中断的挂起与清除 87
6.3.4 中断建立全过程的演示 87
6.3.5 实验部分 87
6.4 显示与键盘模块 93
6.4.1 数码管显示 93
6.4.2 LCD显示与键盘模块 97
6.5 ADC模块 102
6.5.1 ADC模块结构及其工作原理 104
6.5.2 ADC模块寄存器 104
6.5.3 实验部分 109
6.6 DMA控制器模块 116
6.6.1 DMA模块结构及其工作原理 116
6.6.2 DMA模块寄存器 117
6.6.3 实验部分 119
习题与思考题 124
第7章 时间模块及其应用开发 125
7.1 概述 125
7.2 SysTick定时器 125
7.2.1 SysTick时钟源结构图 126
7.2.2 SysTick定时器工作分析 126
7.2.3 SysTick控制寄存器 127
7.2.4 实验部分 128
7.3 RTC实时时钟 131
7.3.1 RTC模块结构 132
7.3.2 UNIX时间戳 133
7.3.3 实验部分 133
7.4 通用定时器模块 144
7.4.1 定时器模块结构与工作原理 144
7.4.2 定时器寄存器 145
7.4.3 实验部分 150
7.5 定时器脉冲宽度调制 153
7.5.1 定时器脉冲宽度调制输出工作原理 153
7.5.2 定时器寄存器 153
7.5.3 实验部分 157
7.6 高级定时器 163
7.6.1 高级定时器死区原理 163
7.6.2 刹车和死区寄存器(TIMx_BDTR) 165
7.6.3 实验部分 166
习题与思考题 169
第8章 通信外设模块及其应用开发 170
8.1 概述 170
8.2 USART通信模块 170
8.2.1 串行通信模块的结构与工作原理 170
8.2.2 串行通信模块的寄存器 172
8.2.3 实验部分 174
8.3 SPI通信模块 180
8.3.1 SPI模块的结构与工作原理 180
8.3.2 SPI模块的寄存器 182
8.3.3 实验部分 187
8.4 I2C通信模块 196
8.4.1 STM32的I2C模块简介 196
8.4.2 I2C协议简介 196
8.4.3 I2C模块的寄存器 198
8.4.4 实验部分 204
8.5 局域网控制器 212
8.5.1 CAN协议简介 212
8.5.2 STM32的CAN特性及架构 215
8.5.3 实验部分 216
8.6 可变静态存储控制器 230
8.6.1 FSMC模块的结构与工作原理 230
8.6.2 FSMC的寄存器 232
8.6.3 实验部分 235
习题与思考题 241
第9章 ARM在自平衡小车中的应用 242
9.1 两轮自平衡小车控制系统 242
9.1.1 控制原理 242
9.1.2 控制系统组成结构 243
9.2 两轮自平衡小车控制系统硬件设计 244
9.2.1 控制系统硬件结构 244
9.2.2 控制系统硬件原理 245
9.2.3 引脚配置说明 256
9.3 两轮自平衡小车控制系统软件设计 257
9.3.1 软件总体设计 257
9.3.2 部分模块软件设计 258
9.3.3 姿态融合算法软件设计 263
习题与思考题 267
参考文献 268