本书主要介绍STM32的库函数,以及如何使用库的方式进行开发,使初学者能够在此基础上迅速入门,掌握STM32的开发方法。本书基于ARM—CortexM3内核的STM32F103芯片,紧紧围绕“库”展开,系统地讲述了STM32固件库的原理、使用方法。
目 录
前言
第一部分 基础篇
第1章 如何安装KEIL5 2
1.1 温馨提示 2
1.2 获取KEIL5安装包 2
1.3 开始安装KEIL5 3
1.4 安装STM32芯片包 5
第2章 如何用DAP仿真器下载程序 7
2.1 仿真器简介 7
2.2 硬件连接 7
2.3 仿真器配置 8
2.4 选择目标板 9
2.5 下载程序 10
第3章 如何用串口下载程序 11
3.1 安装USB转串口驱动 11
3.2 硬件连接 11
3.3 开始下载 12
3.4 ISP一键下载原理分析 14
3.4.1 ISP简介 14
3.4.2 ISP普通下载 14
3.4.3 BOOT配置 15
3.4.4 ISP一键下载 15
第4章 初识STM32 17
4.1 什么是STM32 17
4.2 STM32能做什么 17
4.2.1 智能手环 18
4.2.2 微型四轴飞行器 19
4.2.3 淘宝众筹 19
4.3 STM32怎么选型 20
4.3.1 STM32分类 20
4.3.2 STM32命名方法 21
4.3.3 选择合适的MCU 21
第5章 什么是寄存器 24
5.1 STM32芯片外观 24
5.2 芯片里面有什么 25
5.3 存储器映射 27
5.4 寄存器映射 30
5.4.1 STM32的外设地址映射 31
5.4.2 C语言对寄存器的封装 33
第6章 新建工程——寄存器版 38
6.1 新建本地工程文件夹 38
6.2 新建工程 39
6.3 下载程序 42
第7章 使用寄存器点亮LED 43
7.1 GPIO简介 43
7.2 GPIO框图剖析 43
7.2.1 基本结构分析 43
7.2.2 GPIO工作模式 47
7.3 实验:使用寄存器点亮LED 48
7.3.1 硬件连接 49
7.3.2 启动文件 50
7.3.3 stm32f10x.h文件 51
7.3.4 main文件 52
7.3.5 下载验证 56
第8章 自己写库——构建库函数雏形 57
8.1 什么是STM32函数库 57
8.2 为什么采用库来开发及学习 58
8.3 实验:构建库函数雏形 58
8.3.1 外部寄存器结构体定义 59
8.3.2 外设存储器映射 60
8.3.3 外设声明 60
8.3.4 定义位操作函数 62
8.3.5 定义初始化结构体 65
8.3.6 定义引脚模式的枚举类型 65
8.3.7 定义GPIO初始化函数 69
8.3.8 全新面貌,使用函数点亮LED 72
8.3.9 下载验证 73
8.3.10 总结 73
第9章 初识STM32标准库 75
9.1 CMSIS标准及库层次关系 75
9.1.1 库目录、文件简介 76
9.1.2 库各文件间的关系 81
9.2 使用帮助文档 81
9.2.1 常用官方资料 81
9.2.2 初识库函数 83
第10章 新建工程——库函数版 85
10.1 新建本地工程文件夹 85
10.2 新建工程 86
第11章 GPIO输出——使用固件库点亮LED 93
11.1 硬件设计 93
11.2 软件设计 93
11.2.1 编程要点 94
11.2.2 代码分析 94
11.2.3 下载验证 99
11.3 STM32标准库补充知识 99
第12章 GPIO输入——按键检测 102
12.1 硬件设计 102
12.2 软件设计 103
12.2.1 编程要点 103
12.2.2 代码分析 103
12.3 下载验证 105
第13章 GPIO——位带操作 106
13.1 位带简介 106
13.1.1 外设位带区 106
13.1.2 SRAM位带区 107
13.1.3 位带区和位带别名区地址转换 107
13.2 GPIO位带操作 108
第14章 启动文件 111
14.1 启动文件简介 111
14.2 查找ARM汇编指令 111
14.3 启动文件代码讲解 111
第15章 RCC——使用HSE/HSI配置时钟 118
15.1 RCC主要作用——时钟部分 118
15.2 RCC框图剖析——时钟部分 118
15.2.1 系统时钟 118
15.2.2 其他时钟 122
15.3 配置系统时钟实验 123
15.3.1 使用HSE 123
15.3.2 使用HSI 123
15.3.3 硬件设计 123
15.3.4 软件设计 124
15.3.5 下载验证 128
第16章 STM32中断应用概览 130
16.1 异常类型 130
16.2 NVIC简介 131
16.2.1 NVIC寄存器简介 131
16.2.2 NVIC 中断配置固件库 132
16.3 中断优先级 132
16.3.1 优先级定义 132
16.3.2 优先级分组 132
16.4 中断编程 133
第17章 EXTI——外部中断/事件控制器 135
17.1 EXTI简介 135
17.2 EXTI功能框图剖析 135
17.3 中断/事件线 137
17.4 EXTI初始化结构体详解 138
17.5 外部中断控制实验 138
17.5.1 硬件设计 139
17.5.2 软件设计 139
17.5.3 下载验证 143
第18章 SysTick——系统定时器 144
18.1 SysTick简介 144
18.2 SysTick寄存器介绍 144
18.3 SysTick定时实验 145
18.3.1 硬件设计 145
18.3.2 软件设计 145
18.3.3 下载验证 152
第19章 通信的基本概念 153
19.1 串行通信与并行通信 153
19.2 全双工、半双工及单工通信 154
19.3 同步通信与异步通信 154
19.4 通信速率 155
第20章 USART——串口通信 156
20.1 串口通信协议简介 156
20.1.1 物理层 156
20.1.2 协议层 159
20.2 STM32的USART简介 160
20.3 USART功能框图剖析 161
20.4 USART初始化结构体详解 165
20.5 USART1接发通信实验 166
20.5.1 硬件设计 166
20.5.2 软件设计 167
20.5.3 下载验证 171
20.6 使用USART1指令控制R