描述
开 本: 大16开纸 张: 胶版纸包 装: 平装是否套装: 否国际标准书号ISBN: 9787517013983
沿着时钟树,结合固件库。
开启STM32入门之旅,
从简单到复杂,逐步扩展。
模块化设计与系统设计相结合,
**限度实现代码的复用,
让一切化繁为简。
本书针对STM32处理器裸机开发过程中的重点、难点问题,特别是库函数的使用方法,既有基础知识的讲述,又有相关配套实验,使读者能容易、快速、全面地掌握STM32处理器开发。
本书循序渐进、内容完整、实用性强,以教材方式组织内容,可作为高等院校电子、通信、自动控制等专业的学习用书,也可供广大嵌入式工程师作为参考。
书中所用源代码下载地址:http://www.smartmaker.cn/bbs/forum.php。
目录:
第1章 开场白 1
1.1 STM32处理器是什么 1
1.2 数据长度 2
1.3 地址空间 3
1.3.1 大端和小端的故事 3
1.3.2 STM32Fxx系列处理器存储
空间布局 4
1.4 STM32F103VET6处理器开发平台 5
1.5 本章小结 7
1.6 扩展阅读之CISC处理器和RISC处理器
的关系 7
1.7 扩展阅读之ARM指令集架构及ARM
处理器的因缘 9
第2章 神奇的流水灯 11
2.1 开发环境简介 11
2.2 流水灯 12
2.2.1 认识固件库 14
2.2.2 流水灯程序分析 17
2.2.3 流水灯测试 19
2.2.4 流水灯引发的思考 20
2.3 本章小结 21
2.4 附录1—流水灯源程序 21
2.5 附录2—开发环境搭建 22
第3章 传递C语言正能量 26
3.1 数据类型基础 26
3.1.1 用typedef和#define定义类型 29
3.1.2 用signed和unsigned修饰数据类型 29
3.1.3 volatile和强制类型转换 30
3.2 位运算符和位运算 31
3.2.1 按位与运算符(&) 31
3.2.2 按位或运算符(|) 32
3.2.3 按位取反运算符(~) 32
3.2.4 左移和右移运算符(<>) 32
3.3 控制结构 33
3.3.1 选择结构 33
3.3.2 循环结构 33
3.4 防止文件重复包含技巧 33
3.5 本章小结 33
3.6 扩展阅读之高速缓存基础知识 34
3.7 附录—流水灯实验完整源代码 36
第4章 GPIO入门之道 38
4.1 GPIO概述 38
4.1.1 GPIO引脚介绍 40
4.1.2 GPIO相关寄存器 40
4.1.3 旧事重提——再议固件库 41
4.1.4 IO端口复用 43
4.2 LED实验 43
4.2.1 硬件电路分析 43
4.2.2 程序分析 44
4.2.3 程序测试 45
4.3 本章小结 45
4.4 扩展阅读之APCS调用规则简述 45
4.5 扩展阅读之STM32系列处理器固件库
命名规则 46
第5章 中断和异常的故事 47
5.1 STM32F103VET6中断系统概述 47
5.1.1 中断和异常的类型 48
5.1.2 嵌套中断向量控制器 50
5.1.3 中断响应函数 52
5.1.4 中断向量表 52
5.2 外部中断初探 53
5.2.1 硬件电路分析 54
5.2.2 程序分析 54
5.2.3 程序测试 57
5.3 SysTick心跳实验 58
5.3.1 程序设计及代码详解 59
5.3.2 实例测试 60
5.4 本章小结 61
5.5 扩展阅读之中断和事件 61
第6章 探究时钟滴答的奥妙 63
6.1 STM32F103VET6时钟系统概述 63
6.1.1 系统时钟树 64
6.1.2 SystemInit()库函数解析 65
6.2 基本定时器的来龙去脉 67
6.2.1 基本定时器基础实验 67
6.2.2 基本定时器实验源程序 69
6.2.3 基本定时器基础实验测试 71
6.3 通用定时器原理与应用 72
6.3.1 比较输出模式实验 72
6.3.2 比较输出模式源程序 73
6.3.3 比较输出模式实验测试 75
6.3.4 PWM输出模式实验 76
6.3.5 PWM输出模式源程序 77
6.3.6 PWM输出模式实验测试 79
6.4 本章小结 80
第7章 体验UART 81
7.1 UART概述 81
7.2 UART基本特性 82
7.3 UART固件库 83
7.4 UART基础实验 84
7.4.1 硬件电路分析 84
7.4.2 程序设计及代码详解 85
7.4.3 实例测试 87
7.4.4 UART基础实验分析 87
7.5 UART高级实验——可变参数函数在UART中的应用 89
7.5.1 程序设计及代码详解 90
7.5.2 实例测试 93
7.6 UART高级实验——UART重定向的应用 93
7.6.1 程序设计及代码详解 95
7.6.2 实例测试 96
7.7 UART扩展实验——UART控制LED 97
7.7.1 程序设计及代码详解 97
7.7.2 实例测试 100
7.8 UART扩展实验——获取系统时钟频率 101
7.9 本章小结 103
7.10 附录—UART扩展实验——获取系统
时钟频率源代码 103
第8章 DMA数据大挪移 106
8.1 DMA基本特性 106
8.2 DMA固件库 107
8.3 DMA存储器到存储器传输实验 107
8.3.1 程序设计及代码详解 108
8.3.2 实例测试 111
8.3.3 存储器到存储器实验改进
——DMA反向数据传输 111
8.3.4 关于DMA传输通道的讨论 113
8.4 DMA存储器到外设传输实验 115
8.4.1 程序设计及代码详解 115
8.4.2 实例测试 117
8.5 DMA外设到存储器传输实验 118
8.5.1 程序设计及代码详解 118
8.5.2 实例测试 121
8.6 本章小结 122
第9章 挑战启动代码 123
9.1 汇编语言那些事儿 123
9.1.1 ARM指令介绍 124
9.1.2 伪操作和伪指令介绍 125
9.2 汇编语言程序的基本结构 127
9.3 启动代码分析 131
9.4 main()函数的前生今世 140
9.5 神奇的SystemInit()函数 142
9.6 麻雀虽小五脏俱全的启动代码 142
9.7 本章小结 144
第10章 对话ADC 145
10.1 ADC原理 145
10.2 ADC基本特性 146
10.3 ADC固件库 146
10.4 ADC基础实验 148
10.4.1 程序设计及代码详解 148
10.4.2 实例测试 153
10.5 ADC扩展实验——获取ADC
时钟频率 153
10.6 ADC扩展实验——获取温度 155
10.7 本章小结 157
第11章 串行Flash存储器大串烧 158
11.1 Flash是什么 158
11.2 使用固件库和存储器“对话” 158
11.3 存储器的“身份证” 161
11.3.1 读取存储器“身份证”代码详解 161
11.3.2 读取存储器“身份证”测试 166
11.3.3 要致富先修路 167
11.3.4 条条大道通罗马 168
11.3.5 SPI修炼秘籍 170
11.4 向Flash存储器驱动致敬 170
11.4.1 驱动程序的境界 171
11.4.2 驱动前传 172
11.4.3 驱动大课堂 174
11.5 Flash存储器亲密接触 181
11.5.1 扇区擦除 181
11.5.2 体验读写的快乐 182
11.6 本章小结 183
11.7 附录—嵌入式文件系统移植简介 183
11.8 附录—SST25VF016B驱动程序汇总 185
第12章 问道DAC 191
12.1 DAC基本特性 191
12.2 DAC固件库 193
12.3 DAC基础实验 194
12.3.1 程序设计及代码详解 194
12.3.2 实例测试 197
12.4 本章小结 197
第13章 论剑内部Flash 198
13.1 存储器容量知多少 198
13.2 获取存储器容量实验 199
13.3 奇妙的电子签名 201
13.4 论剑内部Flash存储器 203
13.5 本章小结 207
第14章 玩转TFT LCD 208
14.1 LCD显示器和LCD控制器工作原理 208
14.1.1 LCD显示器概述 209
14.1.2 LCD接口信号 209
14.1.3 LCD显示原理 210
14.1.4 静态存储器控制器(FSMC) 212
14.1.5 FSMC初始化 214
14.2 LCD基础实验 215
14.2.1 程序设计及代码详解 216
14.2.2 实例测试 221
14.3 LCD基础实验之图片显示 221
14.3.1 如何将图片转换为C语言数组 221
14.3.2 程序设计及代码详解 223
14.3.3 实例测试 223
14.4 LCD高级实验之汉字显示 224
14.4.1 两种常见的汉字编码 224
14.4.2 LCD汉字显示原理 225
14.4.3 程序设计及代码详解 226
14.4.4 实例测试 227
14.4.5 LCD显示高级技巧——可变参
函数Lcd_Printf的实现 227
14.4.6 可变参函数Lcd_Printf测试 230
14.4.7 汉字区位码的思考 230
14.4.8 实例测试 232
14.5 本章小结 233
参考文献 234
众所周知,ARM Cortex-M是基于ARM7v架构的ARM内核,因此,ST(ST Microelectronics)公司的STM32系列处理器是基于ARM Cortex-M内核32位RISC系列处理器,一般应用在家电、工业控制等领域。
由于ST公司提供的固件库较大,初学者在入门阶段会遇到各种问题,然而,市面上很多书籍开篇大论各种编程实例,针对各种接口、各种模块,如无线通信模块、GPS模块,等等,这在很大程度上提高了STM32处理器入门的门槛。
基于上述原因,本书本着“简单就是美”的原则,取其精华,去其糟粕,在繁杂的STM32处理器固件库和众多的开发实例中,忽略那些令人眼花缭乱的东西,删掉那些影响开发者入门的东西,从STM32处理器时钟树讲起,正所谓“沿着时钟树,结合固件库,开启入门之路”,这也正是笔者写作本书的出发点,在本书的各个章节中,“沿着时钟树”的学习思路将会得到淋漓尽致的体现,希望在这众多的开发书籍中,本书能给初学者照亮一条前进的道路。
笔者深信“一本好书表达的不仅仅是知识,更是一种知识探索的方法”。作为一名初学者,学习STM32处理器时,很难掌握STM32固件库的来龙去脉,以及固件库的使用方法。但是,请读者明白,固件库是为了方便用户进行程序设计而开发的,一旦掌握了固件库的使用方法,对应用程序的开发将起到巨大的推动作用。从另一方面讲,任何数字系统都是按照特定的时钟来运行的,所以,只需要弄清楚时钟系统,然后沿着时钟系统的路线学习,很快就可以入门。因此,本书的主线是:从STM32处理器时钟系统入手,沿着时钟学习各个功能模块的工作原理及使用方法,即本书强调的“沿着时钟树,结合固件库”的思路。
独辟蹊径。本书以按照“沿着时钟树,结合固件库”的写作思路,使读者尽快入门。
模块化设计与系统设计相结合。本书秉承了STM32处理器固件库的模块化设计风格,力图使程序模块化,尽最大限度实现代码的复用。
笔者努力使本书成为一本STM32处理器开发的纪实手册,尽力展现出开发过程中的问题及其解决方法,为给读者提供参考,使读者少走弯路,因此,笔者选择用通俗的语言来叙述,而并不想用艰深晦涩难懂的语言来迷惑读者。
本书内容概述
第1章讲述了STM32Fxx系列处理器的发展历史以及相关的背景知识。
第2章通过一个流水灯实例对STM32F103VET6处理器开发进行了具体讲解,给读者展现出STM32处理器开发的基本方法,以及固件库的概念及使用方法。
第3章对ARM C语言程序开发过程中的基础知识进行了讲解,重点分析了位运算的定义和具体应用实例。
第4章对GPIO编程进行了具体讲解。
第5章主要讲解了STM32处理器中断系统,首先讲解了中断的基本概念,然后重点分析了中断响应的过程。
第6章重点对系统时钟系统和定时器进行了讲解,以理论为指导,配合了恰当的实验,向读者展示了系统时钟初始化以及定时器的具体应用。
第7章对STM32F103VET6处理器的UART进行了讲解,在本章并没有涉及较多的寄存器操作,对常用的几个固件库函数进行了讲解。此外本章还扩展了可变参数函数、UART输出重定向功能进行了讲解并给出了具体的操作方法。
第8章对STM32F103VET6处理器的DMA进行了讲解,对DMA存储器到存储器的数据传输、存储器到外设的数据传输以及外设到存储器的数据传输功能进行了讲解,并给出了具体的操作方法。
第9章主要讨论了启动代码的组成部分及各个部分的组成原理,同时给出了简化版的启动代码。
第10章主要讨论了STM32F103VET6处理器ADC的使用。
第11章主要讨论了SST25VF016B存储器的使用方法,重点讲解了STM32F103VET6处理器硬件SPI的使用方法。
第12章主要讨论了STM32F103VET6处理器DAC的使用。
第13章讨论了STM32F103VET6处理器内部Flash存储器的使用方法。
第14章主要讨论了STM32F103VET6处理器LCD显示器的初始化使用方法以及使用LCD显示图片和汉字的原理。
此外,本书只是对STM32处理器裸机开发进行了讲解,熟悉裸机开发是进行操作系统开发的基础,秉承本书的风格,一切从简单开始,对功能进行逐步扩展,最终实现较为复杂的系统,在后续编写计划中,笔者将对嵌入式实时操作系统μC/OS-II以及基于开源TCP/IP协议栈LwIP的网络程序设计进行讲解,敬请期待。
适用对象
高等院校电子、通信、自动控制等专业学生;
从单片机开发向ARM嵌入式开发转型的工程师;
从事ARM嵌入式开发的相关技术人员。
编者与致谢
本书由欧阳骏、李英芬、王小强等编著,粟思科审。参与本书编写的还有:王治国、钟晓林、王娟、胡静、杨龙、张成林、方明、王波、陈小军、雷晓、李军华、陈晓云、方鹏、龙帆、刘亚航、凌云鹏、陈龙、曹淑明、徐伟、杨阳、张宇、刘挺、单琳、吴川、李鹏、李岩、朱榕、陈思涛和孙浩,在此一并表示感谢。
配套服务
我们为STM32读者和用户尽心服务,围绕STM32技术、产品和项目市场,探讨STM32应用与发展,发掘热点与重点,开展STM32教学。STM32俱乐部QQ:183090495,电子邮件[email protected],欢迎STM32爱好者和用户联系。由于作者水平有限,书中难免有不恰当的地方,恳请广大读者批评指正。
评论
还没有评论。