STM32单片机应用与全案例实践pdf下载

STM32单片机应用与全案例实践百度网盘pdf下载

作者:
简介:STM32单片机应用与全案例实践
出版社:电子工业出版社
出版时间:2017-06-01
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

编辑推荐
  本书作者结合多年的科研成果和实战经验,为读者介绍了基于ARM的STM32系统的基本概念、基本原理、应用技术,本书配有详实的课件教程,可作为计算机、电子、通信、机电、自动化及其相关专业的本、专科学生及研究生的教材,也可作为从事检测、自动控制等领域工作的嵌入式系统开发的工程技术人员的参考用书。
内容简介
  本书涵盖了基于ARM的STM32系统的基本概念、基本原理、应用技术。硬件原理的阐述以"够用、适用、易学”为原则,降低读者入门和理解的难度。STM32的软件设计基于固件库,方便读者上手。 本书在内容组织和框架设计上具有两个鲜明特点:全案例、基于读者学习。从读者学习的角度,组织每个章节的内容体系,对STM32常用的典型外设模块的原理及其应用设计均以若干个完整案例呈现,同时也给出了一个完整的综合性工程案例,这些都十分有利于学习者学习和模仿。 本书可作为计算机、电子、通信、机电、自动化及其相关专业的本、专科学生及研究生的教材,也可作为从事检测、自动控制等领域工作的嵌入式系统开发的工程技术人员的参考用书。
作者简介
  沈红卫,历任绍兴文理学院自动化系副教授,绍兴文理学院教务处处长(教授),现任绍兴文理学院工学院院长。主要著作有《单片机应用系统设计实例与分析》、《基于单片机的智能系统设计与实现》等。
目录
前言
第1章 如何学习STM32
1.1 学习STM32必须具备的知识基础
1.2 STM32的基本架构和基本原理
1.2.1 什么是ARM
1.2.2 什么是STM32
1.2.3 STM32的内部结构
1.2.4 典型型号——STM32F103ZET6
1.2.5 STM32的时钟树
1.3 学习STM32的最好方法是什么
1.4 学习STM32需要哪些工具或平台
1.4.1 硬件平台
1.4.2 软件平台
1.5 STM32程序开发的模式
1.5.1 基于寄存器的开发模式
1.5.2 基于ST固件库的开发模式
1.5.3 基于操作系统的开发模式
1.5.4 3种开发模式的选用建议
思考与扩展
第2章 如何调试STM32
2.1 STM32单片机的最小系统
2.2 STM32工程模板的建立
2.2.1 STM32的固件库(Standard Peripherals Library)
2.2.2 新建工程模板第一步——复制固件库文件
2.2.3 新建工程模板第二步——新建一个KEIL工程
2.2.4 关于创建工程模板的简单小结
2.3 程序的烧写
2.3.1 基于串口的程序下载(烧写)方式
2.3.2 基于JTAG(SWD)的程序下载(烧写)方式
2.4 程序的调试
2.5 模板的使用
2.6 3个GPIO输出的范例——STM32中实现延时的3种常用方法
2.6.1 第一个LED工程——基于延时函数的延时
2.6.2 第二个LED工程——SysTick中断延时
2.6.3 第三个LED工程——定时器中断延时
2.7 GPIO口的各种输出方式及其应用
2.7.1 功能要求
2.7.2 程序实现
2.8 本章小结
思考与扩展
第3章 GPIO及其应用——输入
3.1 单功能按键输入
3.1.1 实现思想
3.1.2 具体程序
3.2 复用功能按键输入
3.2.1 按键复用的基本概念
3.2.2 程序实现举例
3.3 非按键类开关信号输入及其实现
3.3.1 GPIO的输入方式及其特点
3.3.2 程序实现
3.4 GPIO输入/输出小结
思考与扩展
第4章 TIMER与PWM
4.1 关于STM32的定时器(TIMER)的概述
4.2 STM32定时器的简单应用
4.2.1 按周期输出方波的例子
4.2.2 实现原理
4.2.3 具体程序
4.3 STM32定时器的复杂应用——检测输入方波的频率
4.3.1 STM32定时器的其他特性
4.3.2 本例设计要求
4.3.3 硬件接口设计与测量原理
4.3.4 具体程序
4.4 PWM原理及其应用一——一个LED呼吸灯的实现
4.4.1 PWM的基本概念及其基本应用
4.4.2 STM32的PWM的实现原理
4.4.3 基于PWM的LED呼吸灯的实现思路
4.4.4 呼吸灯的实现程序
4.5 PWM原理及其应用二——通过L298N控制电机转速
4.5.1 硬件设计
4.5.2 直流电机调速与调向的原理
4.5.3 程序实现
思考与扩展
第5章 USART及其应用
5.1 串行通信模块USART的基本应用要点
5.1.1 STM32的USART及其基本特性
5.1.2 STM32的USART应用的基本要领
5.2 一个USART的通信实现(STM32与PC)——查询法
5.2.1 功能要求
5.2.2 实现难点
5.2.3 程序实现
5.2.4 USART应用的有关事项
5.3 一个USART的通信实现(STM32与PC)——中断法
5.3.1 功能要求及通信协议设计
5.3.2 程序算法
5.3.3 本例的源程序
5.4 两个USART的通信实现
5.4.1 功能要求与通信协议
5.4.2 接口设计
5.4.3 程序实现
5.5 USART应用小结
思考与扩展
第6章 人机界面——按键输入与液晶显示
6.1 STM32与液晶模块12864的接口实现
6.1.1 STM32与液晶模块12864的接口实现——延时法
6.1.2 STM32与液晶模块12864的接口实现——查询“忙”状态
6.2 基于液晶模块12864的菜单实现
6.2.1 程序中菜单的种类与菜单化程序的优势
6.2.2 基于液晶模块12864的菜单实现实例
6.3 矩阵键盘的接口实现
6.3.1 矩阵键盘的应用与程序设计思想
6.3.2 4×4矩阵键盘的硬件设计
6.3.3 演示程序
6.4 本章小结
思考与扩展
第7章 同步串行接口总线SPI与I2C
7.1 STM32的SPI
7.1.1 SPI概述
7.1.2 STM32的SPI总线的应用要点
7.2 SPI的接口应用及其实现
7.2.1 STM32与OLED12864液晶模块的SPI接口
7.2.2 STM32的SPI1与OLED12864的接口程序
7.3 STM32的I2C总线
7.3.1 I2C总线的基本概念
7.3.2 STM32的I2C总线的应用要领
7.4 STM32的I2C总线的应用举例
7.4.1 具有I2C接口的DS3231时钟模块
7.4.2 STM32与DS3231时钟模块的硬件接口
7.4.3 STM32与DS3231的软件接口及其演示实例
7.5 I2C总线稳健性设计
思考与扩展
第8章 ADC、DAC与DMA及其应用
8.1 STM32的DMA
8.1.1 STM32的DMA及其基本特性
8.1.2 STM32的DMA原理及其配置要点
8.2 STM32的ADC
8.2.1 STM32的ADC的基本特性
8.2.2 STM32的ADC的程序流程与编程要点
8.3 一个三通道ADC转换的范例
8.3.1 功能要求与方案设计
8.3.2 实现程序——基于查询的DMA
8.3.3 本例的DMA中断法实现
8.4 STM32的DAC
8.4.1 DAC概述
8.4.2 DAC的配置要领
8.4.3 DAC应用实例
思考与扩展
第9章 工程实例——基于线性CCD的小车循迹系统
9.1 系统要求
9.2 线性CCD的原理及其使用
9.2.1 线性CCD传感器原理
9.2.2 线性CCD传感器应用
9.2.3 硬件接口
9.3 自适应曝光的算法设计
9.3.1 自适应曝光算法
9.3.2 模块化程序架构
9.4 具体程序
9.4.1 工程文件视图——文件结构
9.4.2 程序源代码
9.5 系统性能实测
9.5.1 系统实物与测试环境
9.5.2 系统实测结果
思考与扩展
参考文献
前言
  前言
  嵌入式系统的发展确实超乎我们的想象。从早期的 8 位单片机,到目前主流的 32 位单片机,其应用已深深渗透于生产、生活的各个方面。作为 ARM 的一个典型系列,STM32以其较高的性能和优越的性价比,毫无疑问地成为 32 位单片机市场的主流。把 STM32 引入大学的培养体系,已经成为高校广大师生的普遍共识和共同实践。
  目前普遍地认为,基于ARM 的嵌入式系统不仅难教而且难学。究其原因,无外乎三个方面:
  (1)功能多导致的问题。功能多导致系统复杂,这样给理解带来诸多困难,使得从传统的8位单片机系统转过来的学习者感觉难以适应,因为传统的8位单片机,例如51单片机,功能相对单一,结构原理也相对简单。
  (2)芯片系列多导致的问题。由于基于 ARM 的单片机系列较多,功能、性能差异较大,开发环境又往往不一样,尤其是与8位单片机学习者已熟悉的KEIL C差异较大,再加上ARM单片机出现晚,发展历史没有8位单片机长,资料积累远不如8位单片机丰富,这些都对学习者提出了挑战、形成了恐慌。
  (3)开发模式不一样导致的问题。每个ARM系列单片机,往往其开发环境、开发模式是不一样的。以 STM32 为例,开发环境就有好几种,开发模式又有寄存器模式、固件库函数模式两种,再加上各自又可对应基于操作系统和无操作系统的形式,在工程模板的配置方面很多初学者往往不得其要领,所有这些使得传统的单片机学习者在从 8 位单片机向 ARM迁移的过程中,感觉信心不足,不敢轻易涉足。
  作者本身是传统 8 位单片机的一个资深学习者和应用开发者,对上述这些感同身受、体会深厚。正因为如此,由于一个偶然的契机,让作者在 2014 年暑假下定决心一定要破破这个邪,从而开始了长达近三年的学习和教材撰写过程,走上了一个人的朝圣之旅。
  正是这不折不扣的三年学习和思考,引领作者在本教材的框架构思和具体撰写中,毫无觉察地将自己设置在学习者的立场和视野上。本教材的撰写自始至终都坚定地遵循了“二二”思想。第一个“二”,即教材撰写的两个原则;第二个“二”,即教材撰写的两个特色。
  教材撰写的两个原则:一是基于学习者学习的原则,而不是方便教授者教的原则;二是删繁就简、容易上手的原则,对传统学习者感觉恐慌的部分,围绕应用和实践,采取够用、适用的方式,将其简化,减少学习恐惧,对诸如工程模板配置等问题从根本上、本质上阐述到位,使学习者真正理解为什么要这样做,从而避免云里雾里、一知半解,达到得心应手、运用自如。
  教材撰写的两个特色:一是围绕学习者学习;二是全案例驱动。具体地说,就是完全站在学习者学习的角度,设计整个教材的逻辑关系,组织每个章节的内容体系,在简明扼要地阐述 STM32 常用的每一个典型外设模块的原理的基础上,围绕其应用,均以一个以上完整案例的形式讨论其设计精髓,并在教材的最后给出了一个完整的工程案例,所有这些案例的硬件和软件完全公开、毫无保留,因此十分有利于学习者学习和模仿。大量的教学实践表明,模仿是学习单片机最为成功的方式之一,它不仅可以让学习者产生成就感,而且可以较快地激发学习者的兴趣和动力。
  本教材的第一部分讨论了怎么学 STM32 的问题,分别从学习 STM32 的基础要求、STM32 的基本架构和大致原理、学习 STM32 的基本方法、学习 STM32 需要哪些工具或平台等几个方面加以阐述。
  教材的第二部分围绕一个 GPIO 输出的简单案例,讨论了 STM32 应用开发所必需的开发环境配置(包括模板的建立)、程序的下载与调试、STM32程序开发的三种模式等问题。
  教材的其余部分,分别通过一个及以上的完整案例,讨论了 STM32 中最为典型的外设与功能模块,即 GPIO 输入/输出、延时的 3 种实现(延时函数、SysTick、定时器中断)、TIMER 与 PWM、USART、基于液晶和按键的人机界面、I2C 与 SPI、A/D、D/A、DMA、中断等的工作原理、应用设计、程序实现。
  教材的最后部分,讨论了一个基于线性CCD路径识别的综合性工程案例。这个案例可帮助学习者进一步建立模块化思想,提高设计与开发STM32的综合应用系统的能力与信心。
  本教材的所有案例均经过作者精心设计并一一经过实验验证。所有案例的功能要求完整、注释完整、代码完整,真正做到了全公开、全透明、无保留。
  一点建议:从学习入门和一般应用的角度,作者倾向于不要先花很多精力去学嵌入式实时操作系统(如 μC/OS),原因有二:一方面,因其体系和概念过于复杂、抽象,初学者难以驾驭,学习起来会非常困难,学习效率会异常低下,这样反而影响最重要的、最根本的内容的学习,可能会使原本不足的学习兴趣和动力出现“断崖式”下降;另一方面,对于一般的应用,多数是不需要基于操作系统的,况且,多数观点认为STM32并不十分适合嵌入操作系统。
  教材的编写是一个艰难和孤独的过程,一本好的教材的出版更是需要作者做到心无旁骛、摒弃杂念。在整整三年的撰写和实验验证过程中,作者对此深信不疑。本教材绝大多数的内容均为作者原创,编写风格也不同于大多数教材的模式(因为将显得复杂的原理分解至各个功能模块去阐述和讨论,因此较好地迎合了学习者的学习规律)。可以不自谦地说,这是一本真正意义上以学习产出(OBE)为导向的教材。
  本教材得到了绍兴文理学院浙江省新兴特色专业自动化专业建设项目经费的资助,是2015年绍兴市重点建设教材。
  本教材由绍兴文理学院沈红卫教授、任沙浦副教授、朱敏杰讲师、卢雪萍讲师,浙江工业职业技术学院杨亦红讲师等共同完成,沈翊、涂强、章英、章清、金梦琪、傅飞娜、葛琼、赵伟强也为本书贡献了心智,绍兴文理学院自动化专业13级项烨雯、12级陈剑泓等同学参与了部分图表的绘制。在本教材的编写过程中,参阅了许多资料,在此对本教材参考资料的作者表示诚挚感谢,对不能一一标明来源的资料的作者表示真诚的歉意和敬意。对直接、间接为本教材的出版倾注智慧、付出心力、提供帮助的所有人,作者都心怀满满的感谢!
  由于水平所限,书中难免存在错误和不周之处,恳请同行专家和学习者不吝指正。
  本教材配套课件逻辑严密、思路清晰、制作精良,可登录华信教育资源网(http://www.hxedu.com.cn)免费注册后下载。
  沈红卫
  于绍兴风则江边
  2017年1月20日
精彩书摘
  本章导览
  从8位单片机转到基于ARM的32位单片机STM32,这个过程需要通过合适的方法跨越。由于STM32的功能多,其原理又与传统的8位单片机(主要是MCS-51系列)完全不同,所以本章重点讨论学习STM32的方法和策略问题,主要内容如下:
  ➢ STM32的基本架构和基本原理。
  ➢ 学习STM32的基本方法。
  ➢ 学习STM32需要的工具或平台。
  ➢ STM32程序开发的几种模式。
  为了学习STM32,必要的知识基础是需要掌握的。它们主要包括以下部分内容。
  1.电路原理
  作为理解和学习硬件最基础的知识,必须了解电流、电源、电阻、电容等的概念和基本属性、基本关系,能正确选择和使用电阻、电容等基本元器件。
  2.数字电路、模拟电路
  掌握二极管、三极管的基本工作原理,掌握二极管的导通和截止的条件,掌握三极管的饱和导通和截止(开与关)的条件,基本掌握A/D、D/A转换的基本原理与性能指标,初步掌握直流稳压电源的原理与工作要求等。
  3.单片机
  如果有8位单片机原理的学习经历和应用开发的实践经验,例如MCS-51单片机,则肯定对学习和理解 STM32 是极为有利的。但这个不是必备条件,可以作为选项,只要方法得当,也是可以从零起点学习STM32单片机的。
  4.计算机语言
  必须有比较扎实的 C 语言基础,能使用 C 语言开发一定复杂度的应用系统,因为STM32开发基本上都是基于C语言的。
  5.实践能力
  能比较熟练地使用数字式万用表对电阻、电压等物理量进行检测、对电路的通断进行判断,能熟练使用电烙铁进行焊接,若能使用数字示波器则当然更好。
  如果你是学过 8 位单片机的,例如 51 单片机,那么对于理解 STM32 的系统架构和功能模块是十分有利的,毕竟它们都属于单片机范畴(英文为 Microcontroller)。只不过前者是 8 位单片机(即数据总线是 8 位的),而后者是 32 位单片机(数据总线是 32 位的)。但是,如果你没有学过任何单片机,那么从零基础学 STM32 也不是没有可能,只是在理解时会困难些。学了C语言,大家都知道,开发PC程序,压根不用了解PC的硬件结构和功能部件的特点。但是开发单片机程序,必须知道单片机的内部结构和功能部件的特点和属性,从学习入门的角度而言,初学者往往被 STM32 复杂而多样的内部结构和功能部件所吓到,从而望而生畏、放弃学习。其实,依作者之见,学习者可以不必完全弄清楚硬件结构和原理后才开始STM32单片机的学习、应用系统的设计与开发。
  下面是对 STM32 单片机的内部结构和功能部件的一个大致描述,在了解这些特点的基础上,就可以开始尝试STM32的应用设计与实践。