STM32Cube高效开发教程(基础篇)

STM32Cube高效开发教程(基础篇)
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: , ,
2021-09
版次: 1
ISBN: 9787115551771
定价: 119.80
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 487页
63人买过
  • STM32CubeMX和STM32CubeIDE是ST公司提供的用于STM32开发的免费工具软件,是STM32Cube生态系统的核心工具软件。本书首先详细介绍这两个软件的用法,然后以STM32F407为研究对象,采用STM32Cube开发方式介绍STM32F407各种系统功能和常用外设的编程开发,包括外设基本工作原理和接口电路、HAL驱动程序功能和使用方法,以及针对一个STM32F407开发板的完整编程示例。通过阅读本书,读者可以掌握STM32Cube开发方式和工具软件的使用,掌握基于HAL库的STM32F407系统功能和常用外设的编程开发方法。

    本书适合具有C语言、微机原理或单片机基础,想要学习STM32**开发技术的读者阅读,可以作为高等院校电子、自动化、计算机、测控等专业的教材,也可作为STM32应用开发者的参考书。 王维波,博士、中国石油大学(华东)控制科学与工程学院教师。从事测控与仪器开发领域的教学和研究工作,主要研究方向是地球物理探测仪器开发、数据处理方法和软件开发。参与完成国家自然科学基金、山东省重点研发计划等多个科研项目,发表论文 20 余篇。著有《Qt 5.9 C++ 开发指南》和《Python Qt GUI 与数据可视化编程》。

    鄢志丹,博士、中国石油大学(华东)控制科学与工程学院教师。从事随钻测控技术、自抗扰控制方法、井下仪器开发、微弱信号处理等方面的研究工作。主持国家自然科学基金、中国博士后科学基金、山东省自然科学基金等 10 余个科研项目,获授权发明专利 10 余项,发表论文 30 余篇。

    王钊,博士、中国石油大学(华东)控制科学与工程学院教师。从事自动化相关的教学和研究工作,主要研究方向是非线性系统的非光滑控制研究、故障诊断、工业过程控制等。主持山东省优秀中青年科学家科研奖励基金项目 1 项,发表论文 20 余篇,作为副主编编写教材1 部。 第一部分 软硬件基础

    第1章 概述 2

    1.1 STM32系列单片机 2

    1.2 STM32的器件驱动库 3

    1.2.1 标准外设库 3

    1.2.2 HAL/LL库 4

    1.3 STM32Cube生态系统 4

    1.3.1 嵌入式软件 5

    1.3.2 软件工具 6

    1.4 STM32Cube开发方式 8

    第2章 STM32F407和开发板 10

    2.1 STM32F407简介 10

    2.1.1 功能特性 10

    2.1.2 内部结构 10

    2.1.3 引脚定义 13

    2.1.4 最小系统参考设计 14

    2.2 STM32F407开发板 17

    2.2.1 开发板功能 17

    2.2.2 开发板基本电路 20

    2.3 仿真器 23

    第3章 STM32CubeMX的使用 24

    3.1 安装STM32CubeMX 24

    3.2 安装MCU固件包 25

    3.2.1 软件库文件夹设置 25

    3.2.2 管理嵌入式软件包 26

    3.2.3 MCU固件库文件组成 28

    3.3 软件功能和基本使用 29

    3.3.1 软件界面 29

    3.3.2 新建项目 32

    3.3.3 MCU图形化配置界面总览 35

    3.3.4 MCU配置 36

    3.3.5 时钟配置 41

    3.3.6 项目管理 45

    3.3.7 生成报告和代码 48

    3.4 项目示例:LED初始输出 49

    3.4.1 硬件电路 49

    3.4.2 CubeMX项目设置 49

    3.4.3 生成CubeIDE项目代码 50

    第4章 STM32CubeIDE的使用 51

    4.1 安装STM32CubeIDE 51

    4.2 基本概念和MCU固件库设置 52

    4.2.1 启动软件 52

    4.2.2 打开项目 53

    4.2.3 CubeIDE的一些基本概念 55

    4.2.4 STM32Cube软件库设置 57

    4.3 C/C++场景的界面功能和操作 58

    4.3.1 主要的视图 58

    4.3.2 工具栏功能 59

    4.3.3 文本编辑器功能和操作 61

    4.4 CubeMX生成项目的文件组成 63

    4.4.1 CMSIS驱动程序文件 63

    4.4.2 HAL驱动程序文件 65

    4.4.3 用户程序文件 66

    4.4.4 启动文件 71

    4.4.5 根目录下的文件 71

    4.4.6 Include搜索路径 72

    4.5 项目管理、构建和下载调试 72

    4.5.1 项目管理 72

    4.5.2 项目构建 74

    4.5.3 下载和调试 75

    4.6 使用内置的CubeMX 79

    4.6.1 创建项目 79

    4.6.2 配置MCU和生成代码 80

    4.7 CubeIDE使用偏好设置 81

    4.8 HAL库的一些基本问题 83

    4.8.1 基本数据类型 83

    4.8.2 一些通用定义 83

    4.8.3 获取HAL库帮助信息 84

    第5章 STM32CubeMonitor的使用 85

    5.1 STM32CubeMonitor功能简介 85

    5.2 CubeMonitor基本操作 87

    5.2.1 Node-RED中的一些基本概念 87

    5.2.2 设计模式界面和基本操作 88

    5.2.3 程序部署和Dashboard界面 91

    5.3 CubeMonitor基本功能使用示例 92

    5.3.1 STM32 MCU项目 92

    5.3.2 变量监测的基本操作 95

    5.3.3 监测外设寄存器的值 104

    5.3.4 监测变量的数值显示 106

    5.3.5 修改变量的值 110

    5.4 CubeMonitor的使用小结 113

    第二部分 系统功能和常用外设的使用

    第6章 GPIO输入/输出 116

    6.1 GPIO功能概述 116

    6.2 GPIO的HAL驱动程序 117

    6.3 GPIO使用示例 120

    6.3.1 示例功能和CubeMX配置 120

    6.3.2 项目初始化代码分析 122

    6.3.3 编写按键和LED的驱动程序 124

    6.3.4 使用驱动程序实现示例功能 127

    6.4 作为公共驱动程序 130

    第7章 中断系统和外部中断 131

    7.1 STM32F407的中断 131

    7.1.1 中断向量表 131

    7.1.2 中断优先级 134

    7.1.3 中断设置相关HAL驱动程序 135

    7.2 外部中断EXTI 136

    7.2.1 外部中断功能和外部中断线 136

    7.2.2 外部中断相关HAL函数 138

    7.3 外部中断使用示例 141

    7.3.1 示例功能和CubeMX项目设置 141

    7.3.2 项目初始代码分析 142

    7.3.3 编写用户功能代码 145

    7.3.4 中断优先级的测试 146

    第8章 FSMC连接TFT LCD 148

    8.1 FSMC连接TFT LCD的原理 148

    8.1.1 FSMC接口 148

    8.1.2 TFT LCD接口 149

    8.1.3 FSMC与TFT LCD的连接 150

    8.2 FSMC连接LCD的电路和接口初始化 151

    8.2.1 电路连接 151

    8.2.2 示例功能和CubeMX项目设置 153

    8.2.3 初始代码分析 155

    8.3 使用LCD驱动程序 159

    8.3.1 设置搜索路径 159

    8.3.2 LCD驱动程序的改写 161

    8.3.3 LCD驱动程序的原理和功能 162

    8.3.4 LCD驱动程序的使用 171

    8.4 作为公共驱动程序 172

    第9章 基础定时器 174

    9.1 定时器概述 174

    9.2 基础定时器内部结构和功能 175

    9.3 基础定时器HAL驱动程序 177

    9.3.1 基础定时器主要函数 177

    9.3.2 其他通用操作函数 179

    9.3.3 中断处理 180

    9.4 外设的中断处理概念小结 182

    9.5 基础定时器使用示例 185

    9.5.1 示例功能和CubeMX项目配置 185

    9.5.2 程序功能实现 187

    第10章 通用定时器 192

    10.1 通用定时器功能概述 192

    10.1.1 功能概述 192

    10.1.2 结构框图 192

    10.2 典型功能原理和HAL驱动 196

    10.2.1 生成PWM波 196

    10.2.2 输出比较 197

    10.2.3 输入捕获 199

    10.2.4 PWM输入模式 200

    10.2.5 定时器同步 201

    10.2.6 通用定时器中断事件和回调函数 202

    10.3 示例1:生成PWM波 204

    10.3.1 电路原理和CubeMX项目配置 204

    10.3.2 输出固定占空比PWM波 206

    10.3.3 输出可变占空比PWM波 208

    10.4 示例2:输出比较 210

    10.4.1 示例功能和CubeMX项目设置 210

    10.4.2 程序功能实现 211

    10.5 示例3:输入PWM 213

    10.5.1 示例功能和CubeMX项目设置 213

    10.5.2 程序功能实现 215

    第11章 实时时钟 220

    11.1 RTC功能概述 220

    11.1.1 RTC的功能 220

    11.1.2 工作原理 220

    11.1.3 RTC的中断和复用引脚 223

    11.1.4 RTC的HAL基础驱动程序 224

    11.2 周期唤醒和闹钟 227

    11.2.1 周期唤醒相关HAL函数 227

    11.2.2 闹钟相关HAL函数 229

    11.2.3 示例功能和电路 230

    11.2.4 CubeMX项目配置 230

    11.2.5 程序功能实现 234

    11.3 备份寄存器 239

    11.3.1 备份寄存器的功能 239

    11.3.2 示例功能与CubeMX项目设置 240

    11.3.3 程序实现和运行效果 240

    11.4 入侵检测和时间戳 246

    11.4.1 入侵检测的功能 246

    11.4.2 示例功能与CubeMX项目设置 247

    11.4.3 程序功能实现 249

    第12章 USART/UART通信 255

    12.1 USART/UART接口概述 255

    12.1.1 USART/UART接口信号 255

    12.1.2 开发板上的串口电路 256

    12.1.3 串口通信参数 259

    12.2 串口的HAL驱动程序 259

    12.2.1 常用功能函数 259

    12.2.2 常用的宏函数 262

    12.2.3 中断事件与回调函数 263

    12.3 串口通信示例 264

    12.3.1 硬件电路与示例功能 264

    12.3.2 CubeMX项目设置 265

    12.3.3 程序功能实现 267

    12.3.4 接收不定长度数据的改进代码 273

    第13章 DMA 276

    13.1 DMA功能概述 276

    13.1.1 DMA简介 276

    13.1.2 DMA传输属性 277

    13.2 DMA的HAL驱动程序 280

    13.2.1 DMA的HAL函数概述 280

    13.2.2 DMA传输初始化配置 280

    13.2.3 启动DMA数据传输 282

    13.2.4 DMA的中断 282

    13.3 串口的DMA传输示例 284

    13.3.1 示例功能与CubeMX项目设置 284

    13.3.2 程序功能实现 286

    第14章 ADC 295

    14.1 ADC功能概述 295

    14.1.1 ADC的特性 295

    14.1.2 ADC的工作原理 295

    14.1.3 多重ADC模式 299

    14.2 ADC的HAL驱动程序 299

    14.2.1 常规通道 299

    14.2.2 注入通道 303

    14.2.3 多重ADC 303

    14.3 示例1:软件启动ADC转换 303

    14.3.1 电路和示例功能 303

    14.3.2 CubeMX项目设置 304

    14.3.3 程序功能实现 306

    14.4 示例2:定时器触发ADC转换 308

    14.4.1 示例功能和CubeMX项目设置 308

    14.4.2 程序功能实现 310

    14.5 示例3:多通道和DMA传输 313

    14.5.1 示例功能和CubeMX项目设置 313

    14.5.2 程序功能实现 315

    14.6 示例4:双ADC同步转换 319

    14.6.1 示例功能与CubeMX项目设置 319

    14.6.2 程序功能实现 320

    第15章 DAC 325

    15.1 DAC功能概述 325

    15.1.1 DAC的结构和特性 325

    15.1.2 功能说明 326

    15.2 DAC的HAL驱动程序 328

    15.2.1 DAC驱动宏函数 328

    15.2.2 DAC驱动功能函数 328

    15.3 示例1:软件触发DAC转换 332

    15.3.1 开发板上的DAC电路 332

    15.3.2 示例功能和CubeMX项目设置 332

    15.3.3 程序功能实现 333

    15.4 示例2:输出三角波 335

    15.4.1 示例功能和CubeMX项目设置 335

    15.4.2 程序功能实现 336

    15.5 示例3:使用DMA输出自定义波形 339

    15.5.1 示例功能和CubeMX项目设置 339

    15.5.2 程序功能实现 340

    第16章 SPI通信 343

    16.1 SPI接口和通信协议 343

    16.1.1 SPI硬件接口 343

    16.1.2 SPI传输协议 343

    16.1.3 STM32F407的SPI接口 345

    16.2 SPI的HAL驱动程序 346

    16.2.1 SPI寄存器操作的宏函数 346

    16.2.2 SPI初始化和阻塞式数据传输 347

    16.2.3 中断方式数据传输 348

    16.2.4 DMA方式数据传输 349

    16.3 Flash存储芯片W25Q128 350

    16.3.1 硬件接口和连接 350

    16.3.2 存储空间划分 351

    16.3.3 数据读写的原则 351

    16.3.4 操作指令 351

    16.3.5 状态寄存器 353

    16.4 示例1:轮询方式读写W25Q128 354

    16.4.1 示例功能与CubeMX项目设置 354

    16.4.2 初始程序 356

    16.4.3 编写W25Q128的驱动程序 357

    16.4.4 W25Q128功能测试 366

    16.5 示例2:DMA方式读写W25Q128 370

    16.5.1 示例功能和CubeMX项目设置 370

    16.5.2 程序功能实现 371

    第17章 I2C通信 377

    17.1 I2C总线和通信协议 377

    17.1.1 I2C总线结构 377

    17.1.2 I2C总线通信协议 378

    17.1.3 STM32F407的I2C接口 378

    17.2 I2C的HAL驱动程序 379

    17.2.1 I2C接口的初始化 379

    17.2.2 阻塞式数据传输 379

    17.2.3 中断方式数据传输 381

    17.2.4 DMA方式数据传输 381

    17.3 EEPROM芯片24C02 382

    17.3.1 接口和通信协议 382

    17.3.2 驱动程序设计 384

    17.4 读写24C02示例 387

    17.4.1 示例功能和CubeMX项目设置 387

    17.4.2 程序功能实现 388

    第18章 CAN总线通信 392

    18.1 CAN总线结构和传输协议 392

    18.1.1 CAN总线结构 392

    18.1.2 CAN总线传输协议 394

    18.2 CAN外设工作原理和HAL驱动程序 397

    18.2.1 片上CAN外设的功能概述 397

    18.2.2 CAN模块的基本控制 398

    18.2.3 CAN模块的测试模式 399

    18.2.4 消息发送 400

    18.2.5 消息接收 401

    18.2.6 标识符筛选 402

    18.2.7 中断及其处理 405

    18.3 开发板上的CAN接口电路 406

    18.4 示例1:轮询方式CAN通信 407

    18.4.1 示例功能和CubeMX项目设置 407

    18.4.2 程序功能实现 409

    18.5 示例2:中断方式CAN通信 415

    18.5.1 示例功能和CubeMX项目设置 415

    18.5.2 程序功能实现 415

    第19章 FSMC连接外部SRAM 422

    19.1 FSMC连接外部SRAM的原理 422

    19.1.1 FSMC控制区域的划分 422

    19.1.2 SRAM芯片与MCU的连接 422

    19.2 访问外部SRAM的HAL驱动程序 423

    19.2.1 外部SRAM初始化与控制 423

    19.2.2 外部SRAM读写函数 424

    19.2.3 直接通过指针访问外部SRAM 425

    19.2.4 DMA方式读写外部SRAM 426

    19.3 示例1:轮询方式读写外部SRAM 427

    19.3.1 示例功能和CubeMX项目设置 427

    19.3.2 程序功能实现 429

    19.4 示例2:DMA方式读写外部SRAM 435

    19.4.1 示例功能和CubeMX项目设置 435

    19.4.2 程序功能实现 437

    第20章 独立看门狗 442

    20.1 独立看门狗的工作原理 442

    20.2 独立看门狗的HAL驱动程序 443

    20.3 独立看门狗使用示例 444

    20.3.1 示例功能和CubeMX项目设置 444

    20.3.2 程序功能实现 445

    第21章 窗口看门狗 448

    21.1 窗口看门狗的工作原理 448

    21.2 窗口看门狗的HAL驱动程序 450

    21.3 窗口看门狗使用示例 451

    21.3.1 示例功能和CubeMX项目设置 451

    21.3.2 不使用EWI中断 452

    21.3.3 使用EWI中断 454

    第22章 电源管理和低功耗模式 456

    22.1 电源系统和低功耗模式 456

    22.1.1 STM32F4的电源系统 456

    22.1.2 STM32F4的低功耗模式 457

    22.2 CubeMX的功耗计算器 458

    22.2.1 PCC界面概述 458

    22.2.2 步骤和序列管理 459

    22.2.3 功耗分析 461

    22.3 睡眠模式 462

    22.3.1 睡眠模式的特点和操作 462

    22.3.2 睡眠模式编程示例 464

    22.4 停止模式 467

    22.4.1 停止模式的特点和操作 467

    22.4.2 停止模式编程示例 469

    22.5 待机模式 472

    22.5.1 待机模式的特点和操作 472

    22.5.2 待机模式编程示例 473

    附录A CubeMX模板项目和公共驱动程序的使用 477

    A.1 公共驱动程序的目录组成 477

    A.2 CubeMX模板项目 478

    A.3 新建CubeMX项目后导入模板项目的配置 478

    A.4 复制模板项目以新建CubeMX项目 479

    A.5 在CubeIDE中设置驱动程序搜索路径 480

    附录B 复制一个项目 482

    附录C 本书示例项目列表 483

    附录D 缩略词 485

    附参考文献 488
  • 内容简介:
    STM32CubeMX和STM32CubeIDE是ST公司提供的用于STM32开发的免费工具软件,是STM32Cube生态系统的核心工具软件。本书首先详细介绍这两个软件的用法,然后以STM32F407为研究对象,采用STM32Cube开发方式介绍STM32F407各种系统功能和常用外设的编程开发,包括外设基本工作原理和接口电路、HAL驱动程序功能和使用方法,以及针对一个STM32F407开发板的完整编程示例。通过阅读本书,读者可以掌握STM32Cube开发方式和工具软件的使用,掌握基于HAL库的STM32F407系统功能和常用外设的编程开发方法。

    本书适合具有C语言、微机原理或单片机基础,想要学习STM32**开发技术的读者阅读,可以作为高等院校电子、自动化、计算机、测控等专业的教材,也可作为STM32应用开发者的参考书。
  • 作者简介:
    王维波,博士、中国石油大学(华东)控制科学与工程学院教师。从事测控与仪器开发领域的教学和研究工作,主要研究方向是地球物理探测仪器开发、数据处理方法和软件开发。参与完成国家自然科学基金、山东省重点研发计划等多个科研项目,发表论文 20 余篇。著有《Qt 5.9 C++ 开发指南》和《Python Qt GUI 与数据可视化编程》。

    鄢志丹,博士、中国石油大学(华东)控制科学与工程学院教师。从事随钻测控技术、自抗扰控制方法、井下仪器开发、微弱信号处理等方面的研究工作。主持国家自然科学基金、中国博士后科学基金、山东省自然科学基金等 10 余个科研项目,获授权发明专利 10 余项,发表论文 30 余篇。

    王钊,博士、中国石油大学(华东)控制科学与工程学院教师。从事自动化相关的教学和研究工作,主要研究方向是非线性系统的非光滑控制研究、故障诊断、工业过程控制等。主持山东省优秀中青年科学家科研奖励基金项目 1 项,发表论文 20 余篇,作为副主编编写教材1 部。
  • 目录:
    第一部分 软硬件基础

    第1章 概述 2

    1.1 STM32系列单片机 2

    1.2 STM32的器件驱动库 3

    1.2.1 标准外设库 3

    1.2.2 HAL/LL库 4

    1.3 STM32Cube生态系统 4

    1.3.1 嵌入式软件 5

    1.3.2 软件工具 6

    1.4 STM32Cube开发方式 8

    第2章 STM32F407和开发板 10

    2.1 STM32F407简介 10

    2.1.1 功能特性 10

    2.1.2 内部结构 10

    2.1.3 引脚定义 13

    2.1.4 最小系统参考设计 14

    2.2 STM32F407开发板 17

    2.2.1 开发板功能 17

    2.2.2 开发板基本电路 20

    2.3 仿真器 23

    第3章 STM32CubeMX的使用 24

    3.1 安装STM32CubeMX 24

    3.2 安装MCU固件包 25

    3.2.1 软件库文件夹设置 25

    3.2.2 管理嵌入式软件包 26

    3.2.3 MCU固件库文件组成 28

    3.3 软件功能和基本使用 29

    3.3.1 软件界面 29

    3.3.2 新建项目 32

    3.3.3 MCU图形化配置界面总览 35

    3.3.4 MCU配置 36

    3.3.5 时钟配置 41

    3.3.6 项目管理 45

    3.3.7 生成报告和代码 48

    3.4 项目示例:LED初始输出 49

    3.4.1 硬件电路 49

    3.4.2 CubeMX项目设置 49

    3.4.3 生成CubeIDE项目代码 50

    第4章 STM32CubeIDE的使用 51

    4.1 安装STM32CubeIDE 51

    4.2 基本概念和MCU固件库设置 52

    4.2.1 启动软件 52

    4.2.2 打开项目 53

    4.2.3 CubeIDE的一些基本概念 55

    4.2.4 STM32Cube软件库设置 57

    4.3 C/C++场景的界面功能和操作 58

    4.3.1 主要的视图 58

    4.3.2 工具栏功能 59

    4.3.3 文本编辑器功能和操作 61

    4.4 CubeMX生成项目的文件组成 63

    4.4.1 CMSIS驱动程序文件 63

    4.4.2 HAL驱动程序文件 65

    4.4.3 用户程序文件 66

    4.4.4 启动文件 71

    4.4.5 根目录下的文件 71

    4.4.6 Include搜索路径 72

    4.5 项目管理、构建和下载调试 72

    4.5.1 项目管理 72

    4.5.2 项目构建 74

    4.5.3 下载和调试 75

    4.6 使用内置的CubeMX 79

    4.6.1 创建项目 79

    4.6.2 配置MCU和生成代码 80

    4.7 CubeIDE使用偏好设置 81

    4.8 HAL库的一些基本问题 83

    4.8.1 基本数据类型 83

    4.8.2 一些通用定义 83

    4.8.3 获取HAL库帮助信息 84

    第5章 STM32CubeMonitor的使用 85

    5.1 STM32CubeMonitor功能简介 85

    5.2 CubeMonitor基本操作 87

    5.2.1 Node-RED中的一些基本概念 87

    5.2.2 设计模式界面和基本操作 88

    5.2.3 程序部署和Dashboard界面 91

    5.3 CubeMonitor基本功能使用示例 92

    5.3.1 STM32 MCU项目 92

    5.3.2 变量监测的基本操作 95

    5.3.3 监测外设寄存器的值 104

    5.3.4 监测变量的数值显示 106

    5.3.5 修改变量的值 110

    5.4 CubeMonitor的使用小结 113

    第二部分 系统功能和常用外设的使用

    第6章 GPIO输入/输出 116

    6.1 GPIO功能概述 116

    6.2 GPIO的HAL驱动程序 117

    6.3 GPIO使用示例 120

    6.3.1 示例功能和CubeMX配置 120

    6.3.2 项目初始化代码分析 122

    6.3.3 编写按键和LED的驱动程序 124

    6.3.4 使用驱动程序实现示例功能 127

    6.4 作为公共驱动程序 130

    第7章 中断系统和外部中断 131

    7.1 STM32F407的中断 131

    7.1.1 中断向量表 131

    7.1.2 中断优先级 134

    7.1.3 中断设置相关HAL驱动程序 135

    7.2 外部中断EXTI 136

    7.2.1 外部中断功能和外部中断线 136

    7.2.2 外部中断相关HAL函数 138

    7.3 外部中断使用示例 141

    7.3.1 示例功能和CubeMX项目设置 141

    7.3.2 项目初始代码分析 142

    7.3.3 编写用户功能代码 145

    7.3.4 中断优先级的测试 146

    第8章 FSMC连接TFT LCD 148

    8.1 FSMC连接TFT LCD的原理 148

    8.1.1 FSMC接口 148

    8.1.2 TFT LCD接口 149

    8.1.3 FSMC与TFT LCD的连接 150

    8.2 FSMC连接LCD的电路和接口初始化 151

    8.2.1 电路连接 151

    8.2.2 示例功能和CubeMX项目设置 153

    8.2.3 初始代码分析 155

    8.3 使用LCD驱动程序 159

    8.3.1 设置搜索路径 159

    8.3.2 LCD驱动程序的改写 161

    8.3.3 LCD驱动程序的原理和功能 162

    8.3.4 LCD驱动程序的使用 171

    8.4 作为公共驱动程序 172

    第9章 基础定时器 174

    9.1 定时器概述 174

    9.2 基础定时器内部结构和功能 175

    9.3 基础定时器HAL驱动程序 177

    9.3.1 基础定时器主要函数 177

    9.3.2 其他通用操作函数 179

    9.3.3 中断处理 180

    9.4 外设的中断处理概念小结 182

    9.5 基础定时器使用示例 185

    9.5.1 示例功能和CubeMX项目配置 185

    9.5.2 程序功能实现 187

    第10章 通用定时器 192

    10.1 通用定时器功能概述 192

    10.1.1 功能概述 192

    10.1.2 结构框图 192

    10.2 典型功能原理和HAL驱动 196

    10.2.1 生成PWM波 196

    10.2.2 输出比较 197

    10.2.3 输入捕获 199

    10.2.4 PWM输入模式 200

    10.2.5 定时器同步 201

    10.2.6 通用定时器中断事件和回调函数 202

    10.3 示例1:生成PWM波 204

    10.3.1 电路原理和CubeMX项目配置 204

    10.3.2 输出固定占空比PWM波 206

    10.3.3 输出可变占空比PWM波 208

    10.4 示例2:输出比较 210

    10.4.1 示例功能和CubeMX项目设置 210

    10.4.2 程序功能实现 211

    10.5 示例3:输入PWM 213

    10.5.1 示例功能和CubeMX项目设置 213

    10.5.2 程序功能实现 215

    第11章 实时时钟 220

    11.1 RTC功能概述 220

    11.1.1 RTC的功能 220

    11.1.2 工作原理 220

    11.1.3 RTC的中断和复用引脚 223

    11.1.4 RTC的HAL基础驱动程序 224

    11.2 周期唤醒和闹钟 227

    11.2.1 周期唤醒相关HAL函数 227

    11.2.2 闹钟相关HAL函数 229

    11.2.3 示例功能和电路 230

    11.2.4 CubeMX项目配置 230

    11.2.5 程序功能实现 234

    11.3 备份寄存器 239

    11.3.1 备份寄存器的功能 239

    11.3.2 示例功能与CubeMX项目设置 240

    11.3.3 程序实现和运行效果 240

    11.4 入侵检测和时间戳 246

    11.4.1 入侵检测的功能 246

    11.4.2 示例功能与CubeMX项目设置 247

    11.4.3 程序功能实现 249

    第12章 USART/UART通信 255

    12.1 USART/UART接口概述 255

    12.1.1 USART/UART接口信号 255

    12.1.2 开发板上的串口电路 256

    12.1.3 串口通信参数 259

    12.2 串口的HAL驱动程序 259

    12.2.1 常用功能函数 259

    12.2.2 常用的宏函数 262

    12.2.3 中断事件与回调函数 263

    12.3 串口通信示例 264

    12.3.1 硬件电路与示例功能 264

    12.3.2 CubeMX项目设置 265

    12.3.3 程序功能实现 267

    12.3.4 接收不定长度数据的改进代码 273

    第13章 DMA 276

    13.1 DMA功能概述 276

    13.1.1 DMA简介 276

    13.1.2 DMA传输属性 277

    13.2 DMA的HAL驱动程序 280

    13.2.1 DMA的HAL函数概述 280

    13.2.2 DMA传输初始化配置 280

    13.2.3 启动DMA数据传输 282

    13.2.4 DMA的中断 282

    13.3 串口的DMA传输示例 284

    13.3.1 示例功能与CubeMX项目设置 284

    13.3.2 程序功能实现 286

    第14章 ADC 295

    14.1 ADC功能概述 295

    14.1.1 ADC的特性 295

    14.1.2 ADC的工作原理 295

    14.1.3 多重ADC模式 299

    14.2 ADC的HAL驱动程序 299

    14.2.1 常规通道 299

    14.2.2 注入通道 303

    14.2.3 多重ADC 303

    14.3 示例1:软件启动ADC转换 303

    14.3.1 电路和示例功能 303

    14.3.2 CubeMX项目设置 304

    14.3.3 程序功能实现 306

    14.4 示例2:定时器触发ADC转换 308

    14.4.1 示例功能和CubeMX项目设置 308

    14.4.2 程序功能实现 310

    14.5 示例3:多通道和DMA传输 313

    14.5.1 示例功能和CubeMX项目设置 313

    14.5.2 程序功能实现 315

    14.6 示例4:双ADC同步转换 319

    14.6.1 示例功能与CubeMX项目设置 319

    14.6.2 程序功能实现 320

    第15章 DAC 325

    15.1 DAC功能概述 325

    15.1.1 DAC的结构和特性 325

    15.1.2 功能说明 326

    15.2 DAC的HAL驱动程序 328

    15.2.1 DAC驱动宏函数 328

    15.2.2 DAC驱动功能函数 328

    15.3 示例1:软件触发DAC转换 332

    15.3.1 开发板上的DAC电路 332

    15.3.2 示例功能和CubeMX项目设置 332

    15.3.3 程序功能实现 333

    15.4 示例2:输出三角波 335

    15.4.1 示例功能和CubeMX项目设置 335

    15.4.2 程序功能实现 336

    15.5 示例3:使用DMA输出自定义波形 339

    15.5.1 示例功能和CubeMX项目设置 339

    15.5.2 程序功能实现 340

    第16章 SPI通信 343

    16.1 SPI接口和通信协议 343

    16.1.1 SPI硬件接口 343

    16.1.2 SPI传输协议 343

    16.1.3 STM32F407的SPI接口 345

    16.2 SPI的HAL驱动程序 346

    16.2.1 SPI寄存器操作的宏函数 346

    16.2.2 SPI初始化和阻塞式数据传输 347

    16.2.3 中断方式数据传输 348

    16.2.4 DMA方式数据传输 349

    16.3 Flash存储芯片W25Q128 350

    16.3.1 硬件接口和连接 350

    16.3.2 存储空间划分 351

    16.3.3 数据读写的原则 351

    16.3.4 操作指令 351

    16.3.5 状态寄存器 353

    16.4 示例1:轮询方式读写W25Q128 354

    16.4.1 示例功能与CubeMX项目设置 354

    16.4.2 初始程序 356

    16.4.3 编写W25Q128的驱动程序 357

    16.4.4 W25Q128功能测试 366

    16.5 示例2:DMA方式读写W25Q128 370

    16.5.1 示例功能和CubeMX项目设置 370

    16.5.2 程序功能实现 371

    第17章 I2C通信 377

    17.1 I2C总线和通信协议 377

    17.1.1 I2C总线结构 377

    17.1.2 I2C总线通信协议 378

    17.1.3 STM32F407的I2C接口 378

    17.2 I2C的HAL驱动程序 379

    17.2.1 I2C接口的初始化 379

    17.2.2 阻塞式数据传输 379

    17.2.3 中断方式数据传输 381

    17.2.4 DMA方式数据传输 381

    17.3 EEPROM芯片24C02 382

    17.3.1 接口和通信协议 382

    17.3.2 驱动程序设计 384

    17.4 读写24C02示例 387

    17.4.1 示例功能和CubeMX项目设置 387

    17.4.2 程序功能实现 388

    第18章 CAN总线通信 392

    18.1 CAN总线结构和传输协议 392

    18.1.1 CAN总线结构 392

    18.1.2 CAN总线传输协议 394

    18.2 CAN外设工作原理和HAL驱动程序 397

    18.2.1 片上CAN外设的功能概述 397

    18.2.2 CAN模块的基本控制 398

    18.2.3 CAN模块的测试模式 399

    18.2.4 消息发送 400

    18.2.5 消息接收 401

    18.2.6 标识符筛选 402

    18.2.7 中断及其处理 405

    18.3 开发板上的CAN接口电路 406

    18.4 示例1:轮询方式CAN通信 407

    18.4.1 示例功能和CubeMX项目设置 407

    18.4.2 程序功能实现 409

    18.5 示例2:中断方式CAN通信 415

    18.5.1 示例功能和CubeMX项目设置 415

    18.5.2 程序功能实现 415

    第19章 FSMC连接外部SRAM 422

    19.1 FSMC连接外部SRAM的原理 422

    19.1.1 FSMC控制区域的划分 422

    19.1.2 SRAM芯片与MCU的连接 422

    19.2 访问外部SRAM的HAL驱动程序 423

    19.2.1 外部SRAM初始化与控制 423

    19.2.2 外部SRAM读写函数 424

    19.2.3 直接通过指针访问外部SRAM 425

    19.2.4 DMA方式读写外部SRAM 426

    19.3 示例1:轮询方式读写外部SRAM 427

    19.3.1 示例功能和CubeMX项目设置 427

    19.3.2 程序功能实现 429

    19.4 示例2:DMA方式读写外部SRAM 435

    19.4.1 示例功能和CubeMX项目设置 435

    19.4.2 程序功能实现 437

    第20章 独立看门狗 442

    20.1 独立看门狗的工作原理 442

    20.2 独立看门狗的HAL驱动程序 443

    20.3 独立看门狗使用示例 444

    20.3.1 示例功能和CubeMX项目设置 444

    20.3.2 程序功能实现 445

    第21章 窗口看门狗 448

    21.1 窗口看门狗的工作原理 448

    21.2 窗口看门狗的HAL驱动程序 450

    21.3 窗口看门狗使用示例 451

    21.3.1 示例功能和CubeMX项目设置 451

    21.3.2 不使用EWI中断 452

    21.3.3 使用EWI中断 454

    第22章 电源管理和低功耗模式 456

    22.1 电源系统和低功耗模式 456

    22.1.1 STM32F4的电源系统 456

    22.1.2 STM32F4的低功耗模式 457

    22.2 CubeMX的功耗计算器 458

    22.2.1 PCC界面概述 458

    22.2.2 步骤和序列管理 459

    22.2.3 功耗分析 461

    22.3 睡眠模式 462

    22.3.1 睡眠模式的特点和操作 462

    22.3.2 睡眠模式编程示例 464

    22.4 停止模式 467

    22.4.1 停止模式的特点和操作 467

    22.4.2 停止模式编程示例 469

    22.5 待机模式 472

    22.5.1 待机模式的特点和操作 472

    22.5.2 待机模式编程示例 473

    附录A CubeMX模板项目和公共驱动程序的使用 477

    A.1 公共驱动程序的目录组成 477

    A.2 CubeMX模板项目 478

    A.3 新建CubeMX项目后导入模板项目的配置 478

    A.4 复制模板项目以新建CubeMX项目 479

    A.5 在CubeIDE中设置驱动程序搜索路径 480

    附录B 复制一个项目 482

    附录C 本书示例项目列表 483

    附录D 缩略词 485

    附参考文献 488
查看详情
相关图书 / 更多
STM32Cube高效开发教程(基础篇)
STEM与计算思维/“中国STEM教育2029行动计划”丛书
于晓雅 著
STM32Cube高效开发教程(基础篇)
STEM与创新思维/“中国STEM教育2029行动计划”丛书
[新加坡]李德威 主编
STM32Cube高效开发教程(基础篇)
STEAM 英语分级读物 第3级 C辑
拉内·安德森
STM32Cube高效开发教程(基础篇)
STEM与人工智能/“中国STEM教育2029行动计划”丛书
汤淑明 主编
STM32Cube高效开发教程(基础篇)
STEM课程设计与实施/“中国STEM教育2029行动计划”丛书
黄志红 主编;辛海洋 副主编;周嘉
STM32Cube高效开发教程(基础篇)
STM32嵌入式系统设计与应用
李正军 李潇然
STM32Cube高效开发教程(基础篇)
STEM与设计思维/“中国STEM教育2029行动计划”丛书
丁峻峰 主编
STM32Cube高效开发教程(基础篇)
STM32快速入门教程——基于STM32F103VET6
欧启标
STM32Cube高效开发教程(基础篇)
STEAM英语分级读物 第5级 B辑
柯蒂斯·斯莱皮恩
STM32Cube高效开发教程(基础篇)
STC 32位 8051单片机原理与应用
丁向荣
STM32Cube高效开发教程(基础篇)
STM32物联网入门30步
杜洋
STM32Cube高效开发教程(基础篇)
STC15单片机智能车实践教程
杨中兴、李笑岩 编
您可能感兴趣 / 更多
STM32Cube高效开发教程(基础篇)
Qt 6 C++开发指南
王维波
STM32Cube高效开发教程(基础篇)
STM32Cube高效开发教程(高级篇)
王维波 鄢志丹 王钊
STM32Cube高效开发教程(基础篇)
PythonQtGUI与数据可视化编程
王维波、栗宝鹃、张晓东 著
STM32Cube高效开发教程(基础篇)
Qt 5.9 C++开发指南
王维波、栗宝鹃、侯春望 著
STM32Cube高效开发教程(基础篇)
中国赫哲族史诗伊玛堪
王维波 译
STM32Cube高效开发教程(基础篇)
中国少数民族特需用品多语种词汇库(全彩)
王维波
STM32Cube高效开发教程(基础篇)
中国少数民族文化英语阅读
王维波 著
STM32Cube高效开发教程(基础篇)
高等学校英语拓展系列教程:跨文化商务交际
王维波、车丽娟 编