这书包含了应用场景ARM的STM32系统软件的基本要素、基本概念、运用技术性。硬件配置基本原理的论述以"够了、可用、易懂”为标准,减少用户新手入门和了解的难度系数。STM32的软件开发应用场景固件库,便捷用户入门。 这书在內容机构和架构设计构思上具备2个鲜明特征:全实例、应用场景用户学习培训。从用户学习培训的视角,机构每一章节目录的內容管理体系,对STM32常见的典型性外接设备控制模块的基本原理以及运用设计构思均以数个详细实例展现,一起也得出了1个详细的综合型工程施工流程,这种都非常有益于受教育者学习培训和效仿。 这书可做为电子计算机、电子器件、通讯、机电工程、自动化技术以及有关技术专业的本、大专大学生及硕士研究生的教材内容,也可做为从业检验、自动控制系统等行业工作中的嵌入式系统开发设计的工程项目专业技术人员的参照用书。
沈红卫,首任绍兴文理学院自动化系副教授职称,绍兴文理学院教务部部长(专家教授),新任绍兴文理学院工学院校长。关键经典著作有《单片机应用系统设计实例与分析》、《基于单片机的智能系统设计与实现》等。
目录
- 第1章 如何学习STM32 (1)
- 1.1 学习STM32必须具备的知识基础 (1)
- 1.2 STM32的基本架构和基本原理 (2)
- 1.2.1 什么是ARM (2)
- 1.2.2 什么是STM32 (3)
- 1.2.3 STM32的内部结构 (3)
- 1.2.4 典型型号—STM32F103ZET6 (5)
- 1.2.5 STM32的时钟树 (5)
- 1.3 学习STM32的最好方法是什么 (9)
- 1.4 学习STM32需要哪些工具或平台 (9)
- 1.4.1 硬件平台 (10)
- 1.4.2 软件平台 (11)
- 1.5 STM32程序开发的模式 (12)
- 1.5.1 基于寄存器的开发模式 (13)
- 1.5.2 基于ST固件库的开发模式 (20)
- 1.5.3 基于操作系统的开发模式 (26)
- 1.5.4 三种编程模式的选用建议 (27)
- 思考题 (27)
- 第2章 如何调试STM32 (28)
- 2.1 STM32单片机的最小系统 (28)
- 2.2 STM32工程模板的建立 (30)
- 2.2.1 STM32的固件库(Standard Peripherals Library) (30)
- 2.2.2 新建工程模板第一步—拷贝固件库文件 (34)
- 2.2.3 新建工程模板第二步—新建一个KEIL工程 (35)
- 2.2.4 关于创建工程模板的简单小结 (41)
- 2.3 程序的烧写 (42)
- 2.3.1 基于串口的程序下载(烧写)方式 (42)
- 2.3.2 基于JTAG(SWD)的程序下载(烧写)方式 (44)
- 2.4 程序的调试 (46)
- 2.5 模板的使用 (48)
- 2.6 三个GPIO输出的范例—STM32中实现 延时的三种常用方法 (48)
- 2.6.1 我的第一个LED工程—基于延时函数的延时 (48)
- 2.6.2 我的第二个LED工程—SysTick中断延时 (50)
- 2.6.3 我的第3个工程—定时器中断延时 (52)
- 2.7 GPIO口的各种输出方式及其应用 (55)
- 2.7.1 功能要求 (55)
- 2.7.2 程序实现 (56)
- 2.8 本章小结 (58)
- 思考题 (59)
- 第3章 GPIO及其应用—输入 (60)
- 3.1 单功能按键输入 (60)
- 3.1.1 实现思想 (60)
- 3.1.2 具体程序 (61)
- 3.2 复用功能按键输入 (64)
- 3.2.1 按键复用的基本概念 (64)
- 3.2.2 程序实现举例 (64)
- 3.3 非按键类开关信号输入及其实现 (67)
- 3.3.1 GPIO的输入方式及其特点 (67)
- 3.3.2 程序实现 (68)
- 3.4 GPIO输入输出小结 (69)
- 思考题 (70)
- 第4章 TIMER与PWM (71)
- 4.1 关于STM32的定时器概述 (71)
- 4.2 STM32定时器的简单应用 (72)
- 4.2.1 按周期输出方波的例子 (72)
- 4.2.2 实现原理 (72)
- 4.2.3 具体程序 (72)
- 4.3 STM32定时器的复杂应用—检测输入方波的频率 (77)
- 4.3.1 STM32定时器的其他特性 (77)
- 4.3.2 本例设计要求 (78)
- 4.3.3 硬件接口设计与测量原理 (79)
- 4.3.4 具体程序 (79)
- 4.4 PWM原理及其应用一—一个LED呼吸灯的实现 (84)
- 4.4.1 PWM的基本概念及其基本应用 (84)
- 4.4.2 STM32的PWM的实现原理 (84)
- 4.4.3 基于PWM的LED呼吸灯的实现思路 (88)
- 4.4.4 呼吸灯的实现程序 (89)
- 4.5 PWM原理及其应用二—通过L298N控制电机转速 (96)
- 4.5.1 硬件设计 (96)
- 4.5.2 直流电机调速与调向的原理 (97)
- 4.5.3 程序实现 (97)
- 思考题 (104)
- 第5章 USART及其应用 (105)
- 5.1 串行通信模块USART的基本应用要点 (105)
- 5.1.1 STM32的USART及其基本特性 (105)
- 5.1.2 STM32的USART应用的基本要领 (106)
- 5.2 一个USART的通信实现(STM32与PC)—查询法 (107)
- 5.2.1 功能要求 (107)
- 5.2.2 实现难点 (108)
- 5.2.3 程序实现 (108)
- 5.2.4 USART应用的有关事项 (114)
- 5.3 一个USART的通信实现(STM32与PC)—中断法 (115)
- 5.3.1 功能要求及通信协议设计 (115)
- 5.3.2 程序算法 (115)
- 5.3.3 本例的源程序 (116)
- 5.4 两个USART的通信实现 (124)
- 5.4.1 功能要求与通信协议 (124)
- 5.4.2 接口设计 (124)
- 5.4.3 程序实现 (125)
- 5.5 USART应用小结 (139)
- 思考题 (141)
- 第6章 人机界面—按键输入与液晶显示 (142)
- 6.1 STM32与液晶模块12864的接口实现 (142)
- 6.1.1 STM32与液晶模块12864的接口实现—延时法 (142)
- 6.1.2 STM32与液晶模块12864的接口实现—查询“忙”状态 (153)
- 6.2 基于液晶模块12864的菜单实现 (173)
- 6.2.1 程序中菜单的种类与菜单化程序的优势 (173)
- 6.2.2 基于液晶模块12864的菜单实现实例 (173)
- 6.3 矩阵键盘的接口实现 (186)
- 6.3.1 矩阵键盘的应用与程序设计思想 (186)
- 6.3.2 4×4矩阵键盘的硬件设计 (186)
- 6.3.3 演示程序 (187)
- 6.4 本章小结 (198)
- 思考题 (199)
- 第7章 同步串行接口总线SPI与I2C (200)
- 7.1 STM32的SPI (200)
- 7.1.1 SPI概述 (200)
- 7.1.2 STM32之SPI总线的应用要点 (201)
- 7.2 SPI的接口应用及其实现 (202)
- 7.2.1 STM32与OLED12864液晶模块的SPI接口 (202)
- 7.2.2 STM32的SPI1与OLED12864的接口程序 (203)
- 7.3 STM32的I2C总线 (223)
- 7.3.1 I2C总线的基本概念 (223)
- 7.3.2 STM32的I2C总线应用要领 (226)
- 7.4 STM32的I2C总线的应用举例 (227)
- 7.4.1 具有I2C接口的DS3231时钟模块 (227)
- 7.4.2 STM32与DS3231时钟模块的硬件接口 (229)
- 7.4.3 STM32与DS3231的软件接口及其演示实例 (229)
- 7.5 I2C总线稳健性设计 (247)
- 思考题 (247)
- 第8章 ADC、DAC与DMA及其应用 (248)
- 8.1 STM32的DMA (248)
- 8.1.1 STM32的DMA及其基本特性 (248)
- 8.1.2 STM32的DMA原理及其配置要点 (249)
- 8.2 STM32的ADC (251)
- 8.2.1 STM32的ADC的基本特性 (251)
- 8.2.2 STM32的ADC的程序流程与编程要点 (253)
- 8.3 一个三通道A/D转换的范例 (254)
- 8.3.1 功能要求与方案设计 (254)
- 8.3.2 实现程序 (256)
- 8.3.3 本例的中断法实现 (263)
- 8.4 STM32的DAC (266)
- 8.4.1 DAC概述 (266)
- 8.4.2 DAC的配置要领 (266)
- 8.4.3 DAC应用实例 (268)
- 思考题 (277)
- 第9章 工程实例—基于线性CCD的小车循迹系统 (278)
- 9.1 系统要求 (278)
- 9.2 线性CCD的原理及其使用 (278)
- 9.2.1 线性CCD传感器原理 (279)
- 9.2.2 线性CCD传感器应用 (280)
- 9.2.3 硬件接口 (281)
- 9.3 自适应曝光的算法设计 (281)
- 9.3.1 自适应曝光算法 (281)
- 9.3.2 模块化架构 (283)
- 9.4 具体程序 (285)
- 9.4.1 工程文件视图—文件结构 (285)
- 9.4.2 程序源代码 (286)
- 9.5 系统性能实测 (315)
- 9.5.1 系统实物与测试环境 (315)
- 9.5.2 系统实测结果 (316)
- 思考题 (318)
- 参考文献 (319)