E-BOOK STM32嵌入式系统开发——基于STM32CubeMX和HAL库 刘洪涛 STM32嵌入式系统开发——基于STM32CubeMX和HAL库

STM32嵌入式系统开发——基于STM32CubeMX和HAL库

👤 刘洪涛 📖 清华大学出版社 📋 9787302683315 🌐 zh-CN
92
下载次数
4.8
用户评分

📦 下载本书

  • 快速上手:解决从零开始搭建STM32开发环境、配置工程模板的难题,通过STM32CubeMX图形化配置,大幅缩短项目启动时间。
  • 外设应用:针对GPIO、USART、DMA等常用外设,提供原理讲解与实验案例,帮助读者掌握外设的初始化和驱动开发方法。
  • 中断管理:详解NVIC和EXTI的配置与使用,解决多任务系统中中断优先级设置和响应处理的常见问题。
  • 低功耗设计:通过时钟树和SysTick的深入分析,指导读者合理配置系统时钟,实现功耗与性能的平衡。
  • 综合项目:以智能手表项目为例,展示多外设协同开发流程,解决嵌入式系统集成与调试的难点。
★★★
中级
入门初级中级进阶高级
  • 高校学生:计算机、电子、自动化等专业本科生或研究生,系统学习STM32原理与开发,课程配套教材。
  • 嵌入式初学者:具备C语言基础,希望入门STM32开发的爱好者,通过本书快速掌握CubeMX+HAL库开发流程。
  • 在职工程师:从事嵌入式产品开发,需要升级技能或转向STM32平台,本书涵盖常用外设和实战案例。
  • 项目开发者:正在开发基于STM32的物联网、智能硬件项目,需要参考完整案例和调试技巧。
  1. 基础先行:第1-3章是基础,务必先掌握嵌入式概念和开发环境搭建,为后续实践打好基础。
  2. 重点突破:第4-14章为外设部分,建议按GPIO、USART、DMA、TIM顺序学习,这些是项目中最常用的外设。
  3. 动手实践:每章后的实验都要亲自动手操作,结合源代码和视频教程,不要只看不练。
  4. 项目整合:学完外设后,重点研读第15章智能手表项目,理解多外设协同和系统架构设计。
  5. 查阅参考:本书结构清晰,可随时查阅相关章节的配置步骤和库函数说明,作为开发手册使用。
  • 系统认知:全面理解STM32的架构、外设原理和HAL库设计思想,形成嵌入式开发的整体知识框架。
  • 开发技能:熟练掌握STM32CubeMX和MDK/IDE工具链,能够独立创建、配置、编译和调试工程。
  • 外设驱动:掌握GPIO、USART、DMA等十余种外设的HAL库编程方法,能快速实现外设功能。
  • 项目经验:通过综合项目实战,积累多外设集成、中断管理、低功耗设计等实际开发经验。
  • 自学能力:学会查阅数据手册和HAL库文档的方法,为后续深入学习其他外设或芯片打下基础。
  • 资料配套:获取完整的课件、源代码和视频教程,学习效率倍增,可反复观看巩固。

📖 书籍简介

产品特色

编辑推荐

本书根据STM32嵌入式开发的特点,结合课程的教学成果和基于STM32进行实际开发的成果,按照“先原理后实践、先硬件后软件、先基础后进阶”的结构体系进行编写。内容涵盖STM32的基础功能和原理,在突出基本理论和基本方法的同时,以当前流行的STM32CubeMX和HAL库作为嵌入式系统开发的工具,注重实际工程项目的分析与实现。

由浅入深,循序渐进  以从基础到进阶、从理论到实践、循序渐进的原则进行编排,帮助读者系统学习和掌握STM32嵌入式系统开发的方法和技巧。

内容翔实,通用性强 结合编者多年教学与开发经验,书中列举了丰富的实验案例,便于读者深入理解和掌握嵌入式系统开发的核心概念和实际操作。内容及教学视频兼顾STM32U5、STM32F4等多种芯片系统。

理论清晰,案例典型  在简洁明了地介绍STM32嵌入式开发理论的基础上,深入剖析了基于STM32CubeMX和HAL库的开发流程和技巧,并通过典型工程案例引导读者在实践中应用所学知识。

结构清晰,查阅方便  章节目录结构清晰,一致性强,并通过多种形式对相关开发流程和库函数进行归纳总结,有助于读者快速查阅和参考。


内容简介

《STM32嵌入式系统开发——基于STM32CubeMX和HAL库》是一部介绍嵌入式系统中STM32的基本原理和开发方法的立体化教程(含纸质图书、教学课件、源代码与视频教程)。

《STM32嵌入式系统开发——基于STM32CubeMX和HAL库》的第1章至第3章介绍了嵌入式系统、ARM Cortex系列架构、STM32系列微控制器及其特点以及STM32固件库的作用,并介绍了STM32的开发环境的基础知识和预备内容。第4章至第14章分别介绍了STM32上相关外设的基础知识和开发方法,包括通用输入/输出接口GPIO、嵌套向量中断控制器NVIC与外部中断EXTI、时钟树与SysTick、串行通信USART、直接存储器访问DMA、定时器TIM、模数转换器ADC、串行外设接口SPI、内部集成电路总线I2C、实时时钟RTC、独立看门狗IWDG的配置与应用,内容包括STM32上对应外设的功能特点、内部架构、涉及的HAL库函数和寄存器等,并在每章的后面通过实验详细说明了相关外设的开发使用方法。第15章通过一个综合的智能手表项目,帮助读者深入理解和掌握嵌入式系统开发的整体架构和综合技术,并使用TouchGFX进行界面设计。

为便于读者高效学习,快速掌握STM32的原理,本书作者精心制作了完整的教学课件、完整的实验源代码与丰富的配套视频教程等内容,详细内容请扫描书中相关的二维码。

《STM32嵌入式系统开发——基于STM32CubeMX和HAL库》适合作为广大高校计算机专业大学生学习STM32嵌入式系统课程的教材,也可以作为STM32开发者的自学参考用书。


目录

第1章嵌入式系统概述

1.1嵌入式系统的发展

1.2嵌入式系统的定义和特点

1.3嵌入式系统的开发流程

第2章初识STM32

2.1ARM Cortex系列架构

2.2STM32系列MCU

2.3STM32固件库

2.3.1获取HAL库固件包

2.3.2HAL库文件分析

第3章STM32的开发工具介绍及安装

视频讲解: 68分钟,5集

3.1生成工程模板——STM32CubeMX

3.1.1STM32CubeMX的安装

3.1.2固件包的安装

3.1.3配置并生成代码模板

3.2编辑编译工程——MDK-ARM、STM32CubeIDE

3.2.1MDK-ARM

3.2.2STM32CubeIDE

3.3调试下载工具

3.3.1ST-LINK

3.3.2DAPLink

3.4串行通信工具

3.5STM32硬件开发平台

3.6实验: 用STM32CubeMX和MDK创建工程项目并调试

3.6.1配置STM32CubeMX工程 

3.6.2使用MDK打开并编辑工程

3.6.3连接开发板调试程序

3.7main()函数之前的启动流程 

第4章通用输入/输出接口

视频讲解: 84分钟,5集

4.1GPIO简介

4.2GPIO的内部架构

4.3工作模式

4.3.1浮空输入

4.3.2上拉输入

4.3.3下拉输入

4.3.4推挽输出

4.3.5开漏输出

4.3.6模拟输入

4.3.7模拟输出

4.3.8复用功能推挽模式

4.3.9复用功能开漏模式

4.4GPIO的STM32CubeMX配置

4.5GPIO的寄存器

4.6GPIO的HAL库函数

4.7实验: GPIO输出之点亮LED灯

4.7.1应用场景及目的

4.7.2原理图

4.7.3程序流程

4.7.4程序配置

4.7.5实验现象

4.8实验: GPIO输入之按键输入检测

4.8.1应用场景及目的

4.8.2原理图

4.8.3程序流程

4.8.4程序配置

4.8.5实验现象

4.9习题

第5章中断控制器NVIC与EXTI

视频讲解: 44分钟,3集

5.1什么是中断

5.2嵌套向量中断控制器NVIC

5.2.1NVIC简介

5.2.2NVIC的优先级

5.2.3NVIC的STM32CubeMX配置

5.3EXTI

5.3.1EXTI简介

5.3.2EXTI的内部架构

5.3.3GPIO的外部中断

5.3.4EXTI的STM32CubeMX配置

5.3.5EXTI的寄存器

5.3.6EXTI的HAL库配置流程

5.4实验: 用外部中断进行按键上升沿/下降沿检测

5.4.1应用场景及目的

5.4.2原理图

5.4.3程序流程

5.4.4程序配置

5.4.5实验现象

5.5习题

第6章时钟树与SysTick

视频讲解: 31分钟,3集

6.1时钟树

6.1.1时钟树简介

6.1.2时钟源

6.1.3多路复用器与分频/倍频器

6.1.4总线与外设

6.1.5时钟树的STM32CubeMX配置

6.2SysTick

6.2.1SysTick简介

6.2.2SysTick的HAL库函数

6.3实验: SysTick之闪灯实验

6.3.1应用场景及目的

6.3.2程序配置

6.3.3实验现象

6.4习题

第7章串行通信USART

视频讲解: 85分钟,5集

7.1通信方式分类

7.1.1按照连接方式分类

7.1.2按照同步方式分类

7.1.3按照传输方向分类

7.2串行通信简介

7.2.1常见的串行通信协议

7.2.2波特率和采样速率

7.2.3USART的数据帧格式

7.3USART简介

7.4USART的内部架构

7.5USART的STM32CubeMX配置

7.6USART的寄存器

7.7USART的HAL库函数

7.7.1初始化函数

7.7.2轮询模式

7.7.3中断模式

7.8实验: USART之重定向printf()

7.8.1应用场景及目的

7.8.2原理图

7.8.3程序配置

7.8.4实验现象

7.9实验: USART之定长数据的发送与接收(轮询方式)

7.9.1应用场景及目的

7.9.2程序配置

7.9.3实验现象

7.10实验: USART之不定长数据的发送与接收(中断方式)

7.10.1应用场景及目的

7.10.2程序配置

7.10.3实验现象

7.11习题

第8章直接存储器访问

视频讲解: 28分钟,2集

8.1DMA简介

8.2DMA的内部架构

8.3DMA的通道

8.4DMA的中断

8.5DMA的STM32CubeMX配置

8.6DMA的寄存器

8.7DMA的HAL库函数

8.8实验: USART之空闲中断与 DMA配合接收

8.8.1应用场景及目的

8.8.2程序配置

8.8.3实验现象

8.9习题

第9章定时器TIM

视频讲解: 121分钟,8集

9.1定时器TIM简介

9.2基本定时器TIM6/TIM7

9.2.1概述

9.2.2基本定时器的内部架构

9.3通用定时器TIM2/TIM3/TIM4/TIM5

9.3.1概述

9.3.2通用定时器的内部架构

9.3.3通用定时器的寄存器

9.4计数模式

9.4.1计数原理

9.4.2计数模式的STM32CubeMX配置

9.4.3计数模式的HAL库函数

9.5输入捕获模式

9.5.1输入捕获原理

9.5.2输入捕获模式的STM32CubeMX配置

9.5.3输入捕获模式的HAL库函数

9.6输出比较模式

9.6.1输出比较原理

9.6.2输出比较模式的STM32CubeMX配置

9.6.3输出比较模式的HAL库函数

9.7PWM模式

9.7.1STM32的PWM模式

9.7.2PWM的STM32CubeMX配置

9.7.3PWM的HAL库函数

9.8实验: 基于基本定时器的翻转LED指示灯

9.8.1应用场景及目的

9.8.2原理图

9.8.3程序配置

9.8.4实验现象

9.9实验: 基于通用定时器的按键输入捕获实验

9.9.1应用场景及目的

9.9.2程序流程

9.9.3原理图

9.9.4程序配置

9.9.5实验现象

9.10实验: 基于通用定时器的PWM驱动风扇和电动机

9.10.1应用场景和目的

9.10.2程序流程

9.10.3原理图

9.10.4程序配置

9.10.5实验现象

9.11习题

第10章模数转换器

视频讲解: 63分钟,5集

10.1模数转换简介

10.2STM32的ADC简介

10.2.1概述

10.2.2ADC的内部架构

10.3ADC时钟与采样时间

10.3.1ADC时钟

10.3.2ADC采样时间

10.4规则通道与注入通道

10.4.1STM32CubeMX配置

10.4.2寄存器

10.4.3HAL库函数

10.5单次转换与连续转换模式

10.5.1单次转换

10.5.2连续转换

10.5.3不连续转换

10.5.4STM32CubeMX配置

10.5.5寄存器

10.5.6HAL库函数

10.6ADC的DMA传输方式 

10.7实验: ADC 单通道轮询方式读取

10.7.1应用场景及目的

10.7.2程序配置

10.7.3实验现象

10.8实验: ADC 多通道轮询方式读取

10.8.1应用场景及目的

10.8.2程序配置

10.8.3实验现象

10.9实验: ADC的DMA读取(五向按键)

10.9.1应用场景及目的

10.9.2程序流程

10.9.3原理图

10.9.4程序配置

10.9.5实验现象

10.10习题

第11章串行外设接口

视频讲解: 72分钟,4集

11.1SPI总线简介

11.2STM32的SPI接口

11.2.1特性

11.2.2SPI的内部架构

11.3SPI的STM32CubeMX配置

11.4SPI的寄存器

11.5SPI的HAL库函数

11.6实验: 用SPI总线驱动显示屏

11.6.1应用场景及目的

11.6.2LCD基础知识

11.6.3ILI9341驱动芯片

11.6.4程序流程

11.6.5原理图

11.6.6程序配置

11.6.7实验现象

11.7实验: 用SPI总线显示图片

11.7.1应用场景及目的

11.7.2图片转换原理

11.7.3程序配置

11.7.4实验现象

11.8习题

第12章四路串行外设接口

视频讲解: 37分钟,2集

12.1QSPI简介

12.2STM32的QSPI接口

12.3STM32CubeMX配置

12.4HAL库函数

12.5实验: 用QSPI总线驱动NOR Flash W25Q128

12.5.1应用场景及目的

12.5.2W25Q128

12.5.3程序流程

12.5.4原理图

12.5.5程序配置 

12.5.6实验现象

12.6习题

第13章内部集成电路总线I2C

视频讲解: 54分钟,4集

13.1I2C总线基础知识

13.1.1I2C简介

13.1.2电路原理

13.1.3通信时序

13.2STM32的I2C接口

13.2.1特性

13.2.2内部架构

13.3I2C的STM32CubeMX配置

13.4I2C的HAL库函数

13.5实验: 用I2C总线读取温湿度传感器

13.5.1应用场景及目的

13.5.2SHT20温湿度传感器

13.5.3程序流程

13.5.4原理图

13.5.5程序配置

13.5.6实验现象

13.6实验: 用I2C总线驱动触摸屏

13.6.1应用场景及目的

13.6.2FT6336触摸屏芯片

13.6.3原理图

13.6.4程序配置

13.6.5实验现象

第14章实时时钟

视频讲解: 35分钟,2集

14.1RTC简介

14.2RTC的功能

14.2.1RTC二进制、BCD或混合模式

14.2.2实时时钟和日历

14.2.3可编程闹钟

14.2.4时间戳功能

14.2.5备份寄存器

14.3RTC的STM32CubeMX配置

14.4RTC的寄存器

14.5RTC的HAL库函数

14.6实验: 驱动RTC

14.6.1应用场景及目的

14.6.2程序配置

14.6.3实验现象

14.7习题

第15章独立看门狗

视频讲解: 13分钟,2集

15.1IWDG简介

15.2内部架构

15.3功能和时序

15.4STM32CubeMX配置

15.5IWDG的HAL库函数

15.6IWDG的寄存器

15.7实验: 用按键实现看门狗重载

15.7.1应用场景及目的

15.7.2程序配置

15.7.3实验现象

15.8习题

第16章综合项目:智能手表

16.1软件系统方案

16.2TouchGFX

16.3界面设计

参考文献

前言/序言

一、 为什么要写本书


在当今数字化日益深入的世界里,嵌入式系统已经成为几乎所有电子设备的核心。STM32系列微控制器由于其强大的性能、丰富的外设和广泛的应用领域,成为众多开发者首选的平台之一。然而,对于初学者来说,学习和掌握这样一个复杂而强大的系统往往是一项挑战。


使用HAL库进行开发是当前的主流方式。高校和培训机构广泛使用STM32作为教学平台,基于HAL库的教材需求强劲。HAL库封装了底层硬件细节,简化了开发过程,降低了学习难度,尤其适合初学者。STM32CubeMX作为STM32开发工具链中的重要组成部分,通过其图形化的配置界面、自动生成代码、多种项目框架支持以及完整的外设支持,显著简化了STM32嵌入式系统开发的复杂度,使开发者能够更专注于应用逻辑和功能实现,而非底层配置和初始化的细节。虽然市场上已有不少关于STM32的教材,但系统性强、覆盖全面且针对STM32CubeMX和HAL库开发的书籍仍相对稀缺。


基于上述情况,本书进行了相关完善。在工具上,本书使用当前主流的HAL库进行开发,依据官方的STM32CubeMX软件进行工程部署,采用常用的MDK进行代码编辑和编译调试。在内容上,涵盖常用的外设基础知识、芯片架构、函数寄存器、实验教学,并且结合官方的芯片手册进行讲解,不仅让学生了解相关功能的开发方式,还便于从根本上让学生了解如何学习一款单片机。


二、 本书特色


本书的理论部分较为通用,实验主要以基于ARM CortexM33内核的STM32U5处理器为基础,通过STM32CubeMX工程源码生成工具生成标准HAL库的工程文件,尽量屏蔽不同STM32处理器之间的硬件差异,兼顾传统教学比较常见的CortexM3内核的STM32F1、CortexM4内核的STM32F4等,旨在让读者学会处理器原理的同时,掌握一套通用的STM32应用开发方法。本书实验主要应用的STM32U5平台是中国电子学会嵌入式裸机中级证书推荐考试平台,是全国大学生嵌入式芯片与系统设计大赛ST赛道推荐参赛平台。总体来说,本书内容涉及的硬件平台、软件工具、源码库标准版本较新,方法主流,知识原理通用,实验案例丰富,配套教学资源完善。


配 套 资 源


程序代码等资源: 扫描目录上方的二维码下载。

 教学课件、工具软件、器件手册、硬件图纸等资源: 到清华大学出版社官方网站本书页面下载,或者扫描封底的“书圈”二维码在公众号下载。

 微课视频(735分钟,50集): 扫描书中相应章节中的二维码在线学习。


注: 请先扫描封底刮刮卡中的文泉云盘防盗码进行绑定后再获取配套资源。


三、 读者对象


 对嵌入式开发技术感兴趣的读者;


 电子信息科学与工程相关专业的本科生、研究生;


 相关工程技术人员。


四、 致谢


感谢华清远见教育科技集团给本书提供的开发平台和实验资料,感谢清华大学出版社对本书出版提供的帮助。


限于编者的水平和经验,加之时间比较仓促,书中疏漏之处在所难免,敬请读者批评指正。



编者

2025年1月于北京


📑 章节目录

  1. 嵌入式系统概述
  2. 初识STM32
  3. STM32的开发工具介绍及安装
  4. 通用输入/输出接口
  5. 中断系统:NVIC与外部中断EXTI
  6. 时钟树与SysTick定时器
  7. 串行通信USART
  8. 直接存储器访问DMA
  9. 定时器TIM
  10. 模数转换器ADC
  11. 串行外设接口SPI与内部集成电路总线I2C
  12. 实时时钟RTC与独立看门狗IWDG
  13. 综合项目:智能手表设计与实现