目录
《STM32Cube*效开发教程(基础篇)》
第 **分 软硬件基础
第 *章 概述 2
*.* STM32系列单片机 2
*.2 STM32的器件驱动库 3
*.2.* 标准外设库 3
*.2.2 HAL/LL库 4
*.3 STM32Cube生态系统 4
*.3.* 嵌入式软件 5
*.3.2 软件工具 6
*.4 STM32Cube开发方式 8
第 2章 STM32F407和开发板 *0
2.* STM32F407简介 *0
2.*.* 功能*性 *0
2.*.2 内*结构 *0
2.*.3 引脚定义 *3
2.*.4 最小系统参考设计 *4
2.2 STM32F407开发板 *7
2.2.* 开发板功能 *7
2.2.2 开发板基本电路 20
2.3 仿真器 23
第3章 STM32CubeMX的使用 24
3.* 安装STM32CubeMX 24
3.2 安装MCU固件* 25
3.2.* 软件库文件夹设置 25
3.2.2 管理嵌入式软件* 26
3.2.3 MCU固件库文件组成 28
3.3 软件功能和基本使用 29
3.3.* 软件界面 29
3.3.2 新建项目 32
3.3.3 MCU图形化配置界面总览 35
3.3.4 MCU配置 36
3.3.5 时钟配置 4*
3.3.6 项目管理 45
3.3.7 生成报告和代码 48
3.4 项目示例:LED初始输出 49
3.4.* 硬件电路 49
3.4.2 CubeMX项目设置 49
3.4.3 生成CubeIDE项目代码 50
第4章 STM32CubeIDE的使用 5*
4.* 安装STM32CubeIDE 5*
4.2 基本概念和MCU固件库设置 52
4.2.* 启动软件 52
4.2.2 打开项目 53
4.2.3 CubeIDE的*些基本概念 55
4.2.4 STM32Cube软件库设置 57
4.3 C/C++场景的界面功能和操作 58
4.3.* 主要的视图 58
4.3.2 工具栏功能 59
4.3.3 文本编辑器功能和操作 6*
4.4 CubeMX生成项目的文件组成 63
4.4.* CMSIS驱动程序文件 63
4.4.2 HAL驱动程序文件 65
4.4.3 用户程序文件 66
4.4.4 启动文件 7*
4.4.5 根目录下的文件 7*
4.4.6 Include搜索路径 72
4.5 项目管理、构建和下载调试 72
4.5.* 项目管理 72
4.5.2 项目构建 74
4.5.3 下载和调试 75
4.6 使用内置的CubeMX 79
4.6.* *建项目 79
4.6.2 配置MCU和生成代码 80
4.7 CubeIDE使用偏好设置 8*
4.8 HAL库的*些基本问题 83
4.8.* 基本数据类型 83
4.8.2 *些通用定义 83
4.8.3 获取HAL库帮助信息 84
第5章 STM32CubeMonitor的使用 85
5.* STM32CubeMonitor功能简介 85
5.2 CubeMonitor基本操作 87
5.2.* Node-RED中的*些基本概念 87
5.2.2 设计模式界面和基本操作 88
5.2.3 程序*署和Dashboard界面 9*
5.3 CubeMonitor基本功能使用示例 92
5.3.* STM32 MCU项目 92
5.3.2 变量监测的基本操作 95
5.3.3 监测外设寄存器的值 *04
5.3.4 监测变量的数值显示 *06
5.3.5 修改变量的值 **0
5.4 CubeMonitor的使用小结 **3
第二*分 系统功能和常用外设的使用
第6章 GPIO输入/输出 **6
6.* GPIO功能概述 **6
6.2 GPIO的HAL驱动程序 **7
6.3 GPIO使用示例 *20
6.3.* 示例功能和CubeMX配置 *20
6.3.2 项目初始化代码分析 *22
6.3.3 编写按键和LED的驱动程序 *24
6.3.4 使用驱动程序实现示例功能 *27
6.4 作为公共驱动程序 *30
第7章 中断系统和外*中断 *3*
7.* STM32F407的中断 *3*
7.*.* 中断向量表 *3*
7.*.2 中断*先级 *34
7.*.3 中断设置相关HAL驱动程序 *35
7.2 外*中断EXTI *36
7.2.* 外*中断功能和外*中断线 *36
7.2.2 外*中断相关HAL函数 *38
7.3 外*中断使用示例 *4*
7.3.* 示例功能和CubeMX项目设置 *4*
7.3.2 项目初始代码分析 *42
7.3.3 编写用户功能代码 *45
7.3.4 中断*先级的测试 *46
第8章 FSMC连接TFT LCD *48
8.* FSMC连接TFT LCD的原理 *48
8.*.* FSMC接口 *48
8.*.2 TFT LCD接口 *49
8.*.3 FSMC与TFT LCD的连接 *50
8.2 FSMC连接LCD的电路和接口初始化 *5*
8.2.* 电路连接 *5*
8.2.2 示例功能和CubeMX项目设置 *53
8.2.3 初始代码分析 *55
8.3 使用LCD驱动程序 *59
8.3.* 设置搜索路径 *59
8.3.2 LCD驱动程序的改写 *6*
8.3.3 LCD驱动程序的原理和功能 *62
8.3.4 LCD驱动程序的使用 *7*
8.4 作为公共驱动程序 *72
第9章 基础定时器 *74
9.* 定时器概述 *74
9.2 基础定时器内*结构和功能 *75
9.3 基础定时器HAL驱动程序 *77
9.3.* 基础定时器主要函数 *77
9.3.2 其他通用操作函数 *79
9.3.3 中断处理 *80
9.4 外设的中断处理概念小结 *82
9.5 基础定时器使用示例 *85
9.5.* 示例功能和CubeMX项目配置 *85
9.5.2 程序功能实现 *87
第 *0章 通用定时器 *92
*0.* 通用定时器功能概述 *92
*0.*.* 功能概述 *92
*0.*.2 结构框图 *92
*0.2 典型功能原理和HAL驱动 *96
*0.2.* 生成PWM波 *96
*0.2.2 输出比较 *97
*0.2.3 输入捕获 *99
*0.2.4 PWM输入模式 200
*0.2.5 定时器同步 20*
*0.2.6 通用定时器中断事件和回调函数 202
*0.3 示例*:生成PWM波 204
*0.3.* 电路原理和CubeMX项目配置 204
*0.3.2 输出固定占空比PWM波 206
*0.3.3 输出可变占空比PWM波 208
*0.4 示例2:输出比较 2*0
*0.4.* 示例功能和CubeMX项目设置 2*0
*0.4.2 程序功能实现 2**
*0.5 示例3:输入PWM 2*3
*0.5.* 示例功能和CubeMX项目设置 2*3
*0.5.2 程序功能实现 2*5
第 **章 实时时钟 220
**.* RTC功能概述 220
**.*.* RTC的功能 220
**.*.2 工作原理 220
**.*.3 RTC的中断和复用引脚 223
**.*.4 RTC的HAL基础驱动程序 224
**.2 周期唤醒和闹钟 227
**.2.* 周期唤醒相关HAL函数 227
**.2.2 闹钟相关HAL函数 229
**.2.3 示例功能和电路 230
**.2.4 CubeMX项目配置 230
**.2.5 程序功能实现 234
**.3 备份寄存器 239
**.3.* 备份寄存器的功能 239
**.3.2 示例功能与CubeMX项目设置 240
**.3.3 程序实现和运行效果 240
**.4 入侵检测和时间戳 246
**.4.* 入侵检测的功能 246
**.4.2 示例功能与CubeMX项目设置 247
**.4.3 程序功能实现 249
第 *2章 USART/UART通信 255
*2.* USART/UART接口概述 255
*2.*.* USART/UART接口信号 255
*2.*.2 开发板上的串口电路 256
*2.*.3 串口通信参数 259
*2.2 串口的HAL驱动程序 259
*2.2.* 常用功能函数 259
*2.2.2 常用的宏函数 262
*2.2.3 中断事件与回调函数 263
*2.3 串口通信示例 264
*2.3.* 硬件电路与示例功能 264
*2.3.2 CubeMX项目设置 265
*2.3.3 程序功能实现 267
*2.3.4 接收*定长度数据的改进代码 273
第 *3章 DMA 276
*3.* DMA功能概述 276
*3.*.* DMA简介 276
*3.*.2 DMA传输属性 277
*3.2 DMA的HAL驱动程序 280
*3.2.* DMA的HAL函数概述 280
*3.2.2 DMA传输初始化配置 280
*3.2.3 启动DMA数据传输 282
*3.2.4 DMA的中断 282
*3.3 串口的DMA传输示例 284
*3.3.* 示例功能与CubeMX项目设置 284
*3.3.2 程序功能实现 286
第 *4章 ADC 295
*4.* ADC功能概述 295
*4.*.* ADC的*性 295
*4.*.2 ADC的工作原理 295
*4.*.3 多重ADC模式 299
*4.2 ADC的HAL驱动程序 299
*4.2.* 常规通道 299
*4.2.2 注入通道 303
*4.2.3 多重ADC 303
*4.3 示例*:软件启动ADC转换 303
*4.3.* 电路和示例功能 303
*4.3.2 CubeMX项目设置 304
*4.3.3 程序功能实现 306
*4.4 示例2:定时器触发ADC转换 308
*4.4.* 示例功能和CubeMX项目设置 308
*4.4.2 程序功能实现 3*0
*4.5 示例3:多通道和DMA传输 3*3
*4.5.* 示例功能和CubeMX项目设置 3*3
*4.5.2 程序功能实现 3*5
*4.6 示例4:双ADC同步转换 3*9
*4.6.* 示例功能与CubeMX项目设置 3*9
*4.6.2 程序功能实现 320
第 *5章 DAC 325
*5.* DAC功能概述 325
*5.*.* DAC的结构和*性 325
*5.*.2 功能说明 326
*5.2 DAC的HAL驱动程序 328
*5.2.* DAC驱动宏函数 328
*5.2.2 DAC驱动功能函数 328
*5.3 示例*:软件触发DAC转换 332
*5.3.* 开发板上的DAC电路 332
*5.3.2 示例功能和CubeMX项目设置 332
*5.3.3 程序功能实现 333
*5.4 示例2:输出三角波 335
*5.4.* 示例功能和CubeMX项目设置 335
*5.4.2 程序功能实现 336
*5.5 示例3:使用DMA输出自定义波形 339
*5.5.* 示例功能和CubeMX项目设置 339
*5.5.2 程序功能实现 340
第 *6章 SPI通信 343
*6.* SPI接口和通信协议 343
*6.*.* SPI硬件接口 343
*6.*.2 SPI传输协议 343
*6.*.3 STM32F407的SPI接口 345
*6.2 SPI的HAL驱动程序 346
*6.2.* SPI寄存器操作的宏函数 346
*6.2.2 SPI初始化和阻塞式数据传输 347
*6.2.3 中断方式数据传输 348
*6.2.4 DMA方式数据传输 349
*6.3 Flash存储芯片W25Q*28 350
*6.3.* 硬件接口和连接 350
*6.3.2 存储空间划分 35*
*6.3.3 数据读写的原则 35*
*6.3.4 操作指令 35*
*6.3.5 状态寄存器 353
*6.4 示例*:轮询方式读写W25Q*28 354
*6.4.* 示例功能与CubeMX项目设置 354
*6.4.2 初始程序 356
*6.4.3 编写W25Q*28的驱动程序 357
*6.4.4 W25Q*28功能测试 366
*6.5 示例2:DMA方式读写W25Q*28 370
*6.5.* 示例功能和CubeMX项目设置 370
*6.5.2 程序功能实现 37*
第 *7章 I2C通信 377
*7.* I2C总线和通信协议 377
*7.*.* I2C总线结构 377
*7.*.2 I2C总线通信协议 378
*7.*.3 STM32F407的I2C接口 378
*7.2 I2C的HAL驱动程序 379
*7.2.* I2C接口的初始化 379
*7.2.2 阻塞式数据传输 379
*7.2.3 中断方式数据传输 38*
*7.2.4 DMA方式数据传输 38*
*7.3 EEPROM芯片24C02 382
*7.3.* 接口和通信协议 382
*7.3.2 驱动程序设计 384
*7.4 读写24C02示例 387
*7.4.* 示例功能和CubeMX项目设置 387
*7.4.2 程序功能实现 388
第 *8章 CAN总线通信 392
*8.* CAN总线结构和传输协议 392
*8.*.* CAN总线结构 392
*8.*.2 CAN总线传输协议 394
*8.2 CAN外设工作原理和HAL驱动程序 397
*8.2.* 片上CAN外设的功能概述 397
*8.2.2 CAN模块的基本控制 398
*8.2.3 CAN模块的测试模式 399
*8.2.4 消息发送 400
*8.2.5 消息接收 40*
*8.2.6 标识符筛选 402
*8.2.7 中断及其处理 405
*8.3 开发板上的CAN接口电路 406
*8.4 示例*:轮询方式CAN通信 407
*8.4.* 示例功能和CubeMX项目设置 407
*8.4.2 程序功能实现 409
*8.5 示例2:中断方式CAN通信 4*5
*8.5.* 示例功能和CubeMX项目设置 4*5
*8.5.2 程序功能实现 4*5
第 *9章 FSMC连接外*SRAM 422
*9.* FSMC连接外*SRAM的原理 422
*9.*.* FSMC控制区域的划分 422
*9.*.2 SRAM芯片与MCU的连接 422
*9.2 访问外*SRAM的HAL驱动程序 423
*9.2.* 外*SRAM初始化与控制 423
*9.2.2 外*SRAM读写函数 424
*9.2.3 直接通过指针访问外*SRAM 425
*9.2.4 DMA方式读写外*SRAM 426
*9.3 示例*:轮询方式读写外*SRAM 427
*9.3.* 示例功能和CubeMX项目设置 427
*9.3.2 程序功能实现 429
*9.4 示例2:DMA方式读写外*SRAM 435
*9.4.* 示例功能和CubeMX项目设置 435
*9.4.2 程序功能实现 437
第 20章 *立看门狗 442
20.* *立看门狗的工作原理 442
20.2 *立看门狗的HAL驱动程序 443
20.3 *立看门狗使用示例 444
20.3.* 示例功能和CubeMX项目设置 444
20.3.2 程序功能实现 445
第 2*章 窗口看门狗 448
2*.* 窗口看门狗的工作原理 448
2*.2 窗口看门狗的HAL驱动程序 450
2*.3 窗口看门狗使用示例 45*
2*.3.* 示例功能和CubeMX项目设置 45*
2*.3.2 *使用EWI中断 452
2*.3.3 使用EWI中断 454
第 22章 电源管理和低功耗模式 456
22.* 电源系统和低功耗模式 456
22.*.* STM32F4的电源系统 456
22.*.2 STM32F4的低功耗模式 457
22.2 CubeMX的功耗计算器 458
22.2.* PCC界面概述 458
22.2.2 步骤和序列管理 459
22.2.3 功耗分析 46*
22.3 睡眠模式 462
22.3.* 睡眠模式的*点和操作 462
22.3.2 睡眠模式编程示例 464
22.4 停止模式 467
22.4.* 停止模式的*点和操作 467
22.4.2 停止模式编程示例 469
22.5 待机模式 472
22.5.* 待机模式的*点和操作 472
22.5.2 待机模式编程示例 473
附录A CubeMX模板项目和公共驱动程序的使用 477
A.* 公共驱动程序的目录组成 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*效开发教程(*级篇)》
第 **分 嵌入式操作系统FreeRTOS
第 *章 FreeRTOS基础 2
*.* FreeRTOS概述 2
*.*.* FreeRTOS的发展历史 2
*.*.2 FreeRTOS的*点和许可方式 2
*.*.3 FreeRTOS的*些概念和术语 3
*.*.4 为什么要使用RTOS 4
*.2 FreeRTOS入门示例 4
*.2.* CubeMX项目配置 5
*.2.2 含FreeRTOS的项目的文件组成 8
*.2.3 程序分析和功能实现 9
*.3 FreeRTOS的文件组成和基本原理 *5
*.3.* FreeRTOS的文件组成 *5
*.3.2 FreeRTOS的编码规则 20
*.3.3 FreeRTOS的配置和功能裁剪 2*
第 2章 FreeRTOS的任务管理 29
2.* 任务相关的*些概念 29
2.*.* 多任务运行基本机制 29
2.*.2 任务的状态 30
2.*.3 任务的*先级 3*
2.*.4 空闲任务 32
2.*.5 基础时钟与嘀嗒信号 32
2.2 FreeRTOS的任务调度 32
2.2.* 任务调度方法概述 32
2.2.2 使用时间片的*占式调度方法 33
2.2.3 *使用时间片的*占式调度方法 34
2.2.4 合作式任务调度方法 35
2.3 任务管理相关函数 36
2.3.* 相关函数概述 36
2.3.2 主要函数功能说明 38
2.4 多任务编程示例* 40
2.4.* 示例功能与CubeMX项目设置 40
2.4.2 初始程序分析 42
2.4.3 编写用户功能代码 44
2.5 任务管理工具函数 49
2.5.* 相关函数概述 49
2.5.2 获取任务句柄 50
2.5.3 单个任务的操作 5*
2.5.4 内核信息统计 53
2.6 多任务编程示例二 55
2.6.* 示例功能与CubeMX项目设置 55
2.6.2 程序功能实现 56
第3章 FreeRTOS的中断管理 62
3.* FreeRTOS与中断 62
3.2 任务与中断服务例程 64
3.2.* 任务与中断服务例程的关系 64
3.2.2 中断屏蔽和临界代码段 65
3.2.3 在ISR中使用FreeRTOS API函数 66
3.2.4 中断及其ISR设计原则 67
3.3 任务和中断程序设计示例 67
3.3.* 示例功能和CubeMX项目设置 67
3.3.2 基本功能代码 69
3.3.3 各种*性的测试 7*
第4章 进程间通信与消息队列 74
4.* 进程间通信 74
4.2 队列的*点和基本操作 75
4.2.* 队列的*建和存储 75
4.2.2 向队列写入数据 76
4.2.3 从队列读取数据 77
4.2.4 队列操作相关函数 78
4.3 队列使用示例 79
4.3.* 示例功能和CubeMX项目设置 79
4.3.2 初始代码分析 80
4.3.3 实现用户功能 82
第5章 信号量 86
5.* 信号量和互斥量概述 86
5.*.* 二值信号量 86
5.*.2 计数信号量 87
5.*.3 互斥量 87
5.*.4 递归互斥量 88
5.*.5 相关函数概述 88
5.2 二值信号量使用示例 90
5.2.* 二值信号量操作相关函数详解 90
5.2.2 示例功能和CubeMX项目设置 92
5.2.3 程序功能实现 94
5.3 计数信号量使用示例 98
5.3.* 计数信号量操作相关函数详解 98
5.3.2 示例功能和CubeMX项目设置 99
5.3.3 程序功能实现 *00
第6章 互斥量 *04
6.* *先级翻转问题 *04
6.2 互斥量的工作原理 *05
6.2.* *先级继承 *05
6.2.2 互斥量相关函数详解 *05
6.3 *先级翻转示例 *06
6.3.* 示例功能和CubeMX项目设置 *06
6.3.2 程序功能实现 *07
6.4 互斥量使用示例 ***
6.4.* 示例功能和CubeMX项目设置 ***
6.4.2 程序功能实现 ***
第7章 事件组 **5
7.* 事件组的原理和功能 **5
7.*.* 事件组的功能*点 **5
7.*.2 事件组的工作原理 **5
7.2 事件组相关函数 **6
7.2.* 相关函数概述 **6
7.2.2 *分函数详解 **7
7.3 事件组使用示例 *20
7.3.* 示例功能和CubeMX项目设置 *20
7.3.2 程序功能实现 *20
7.4 通过事件组进行多任务同步 *25
7.4.* 多任务同步原理 *25
7.4.2 示例功能和CubeMX项目设置 *26
7.4.3 程序功能实现 *27
第8章 任务通知 *32
8.* 任务通知的原理和功能 *32
8.2 任务通知的相关函数 *33
8.2.* 相关函数概述 *33
8.2.2 函数详解 *34
8.3 示例*:使用任务通知传递数据 *37
8.3.* 示例功能与CubeMX项目设置 *37
8.3.2 程序功能实现 *38
8.4 示例二:将任务通知用作计数信号量 *4*
8.4.* 示例功能 *4*
8.4.2 CubeMX项目设置 *4*
8.4.3 程序功能实现 *42
第9章 流缓冲区和消息缓冲区 *45
9.* 流缓冲区功能概述 *45
9.2 流缓冲区操作的相关函数 *46
9.2.* 相关函数概述 *46
9.2.2 *分函数详解 *46
9.2.3 表示发送完成和接收完成的宏 *49
9.3 流缓冲区使用示例 *49
9.3.* 示例功能与CubeMX项目设置 *49
9.3.2 程序功能实现 *5*
9.4 消息缓冲区功能概述 *54
9.5 消息缓冲区操作相关函数 *54
9.5.* 相关函数概述 *54
9.5.2 *分函数详解 *55
9.6 消息缓冲区使用示例 *57
9.6.* 示例功能与CubeMX项目设置 *57
9.6.2 程序功能实现 *58
第 *0章 软件定时器 *62
*0.* 软件定时器概述 *62
*0.*.* 软件定时器的*性 *62
*0.*.2 软件定时器的相关配置 *63
*0.*.3 定时器服务任务的*先级 *63
*0.2 软件定时器的相关函数 *64
*0.2.* 相关函数概述 *64
*0.2.2 *分函数详解 *65
*0.3 软件定时器使用示例 *69
*0.3.* 示例功能和CubeMX项目设置 *69
*0.3.2 程序功能实现 *70
第 **章 空闲任务与低功耗 *74
**.* HAL和FreeRTOS的基础时钟 *74
**.*.* 使用SysTick作为HAL的基础时钟 *74
**.*.2 使用其他定时器作为HAL的基础时钟 *77
**.*.3 FreeRTOS的基础时钟 *79
**.2 空闲任务与低功耗处理 *82
**.2.* 实现原理 *82
**.2.2 设计示例 *83
**.3 Tickless低功耗模式 *86
**.3.* Tickless模式的原理和功能 *86
**.3.2 Tickless模式的使用示例 *87
第二*分 FatFS管理文件系统
第 *2章 FatFS和文件系统 *92
*2.* FatFS概述 *92
*2.*.* FatFS的作用 *92
*2.*.2 文件系统的*些基本概念 *93
*2.*.3 FatFS的功能*点和参数 *94
*2.*.4 FatFS的文件组成 *95
*2.*.5 FatFS的基本数据类型定义 *96
*2.2 FatFS的应用程序接口函数 *97
*2.2.* 卷管理和系统配置相关函数 *97
*2.2.2 文件和目录管理相关函数 200
*2.2.3 目录访问相关函数 203
*2.2.4 文件访问相关函数 204
*2.3 FatFS的存储介质访问函数 208
*2.4 针对SPI-Flash芯片移植FatFS 209
*2.4.* SPI-Flash芯片硬件电路 209
*2.4.2 CubeMX项目基础设置 2*0
*2.4.3 在CubeMX中设置FatFS 2*0
*2.4.4 项目中FatFS的文件组成 2*6
*2.4.5 FatFS初始化过程 2*8
*2.4.6 针对SPI-Flash芯片的Disk IO函数实现 226
*2.5 在SPI-Flash芯片上使用文件系统 23*
*2.5.* 主程序功能 23*
*2.5.2 磁盘格式化 234
*2.5.3 获取FAT磁盘信息 234
*2.5.4 扫描根目录下的文件和子目录 236
*2.5.5 *建文件和目录 237
*2.5.6 读取文本文件 239
*2.5.7 读取二进制文件 239
*2.5.8 获取文件信息 24*
*2.5.9 文件file_opera.h的完整定义 242
第 *3章 直接访问SD卡 245
*3.* SD卡简介 245
*3.*.* SD卡的分类 245
*3.*.2 常规SD卡的接口 246
*3.2 SDIO接口硬件电路 247
*3.2.* STM32F407的SDIO接口 247
*3.2.2 开发板上的microSD卡连接电路 248
*3.3 SDIO接口和SD卡的HAL驱动程序 249
*3.3.* SD驱动程序概述 250
*3.3.2 初始化和配置函数 25*
*3.3.3 读取SD卡的参数信息 25*
*3.3.4 获取SD卡的当前状态 255
*3.3.5 以轮询方式读写SD卡 255
*3.3.6 以中断方式读写SD卡 256
*3.3.7 以DMA方式读写SD卡 256
*3.4 示例*:以轮询方式读写SD卡 257
*3.4.* 示例功能与CubeMX项目设置 257
*3.4.2 主程序与SDIO接口/SD卡初始化 259
*3.4.3 程序功能实现 260
*3.5 示例二:以DMA方式读写SD卡 264
*3.5.* 示例功能与CubeMX项目设置 264
*3.5.2 主程序与外设初始化 265
*3.5.3 程序功能实现 268
第 *4章 用FatFS管理SD卡文件系统 272
*4.* SD卡文件系统概述 272
*4.2 示例*:阻塞式访问SD卡 272
*4.2.* 示例功能与CubeMX项目设置 272
*4.2.2 项目文件组成和初始代码分析 274
*4.2.3 SD卡的Disk IO函数实现 278
*4.2.4 SD卡文件管理功能的实现 284
*4.3 示例二:以DMA方式访问SD卡 288
*4.3.* 示例功能和CubeMX项目设置 288
*4.3.2 Disk IO函数实现代码分析 289
*4.3.3 SD卡文件管理功能的实现 29*
第 *5章 用FatFS管理U盘文件系统 295
*5.* USB概述 295
*5.*.* USB协议 295
*5.*.2 USB设备类型 296
*5.*.3 USB接口类型 296
*5.2 STM32F407的USB-OTG接口 298
*5.2.* USB-OTG概述 298
*5.2.2 USB-OTG FS 299
*5.2.3 开发板上的USB接口电路 302
*5.3 作为USB Host读写U盘 303
*5.3.* 示例功能和CubeMX项目设置 303
*5.3.2 项目文件组成和初始代码分析 307
*5.3.3 USBH状态变化测试 3*6
*5.3.4 U盘文件管理功能实现 3*8
第 *6章 USB-OTG用作USB MSC外设 324
*6.* 开发板作为USB MSC外设的原理 324
*6.2 示例*:SD卡读卡器 326
*6.2.* 示例功能和CubeMX项目设置 326
*6.2.2 项目文件组成和初始代码分析 328
*6.2.3 程序功能实现 333
*6.3 示例二:增加FatFS管理本机文件功能 336
*6.3.* 示例功能和CubeMX项目设置 336
*6.3.2 程序功能实现 337
*6.3.3 运行测试 340
第 *7章 在FreeRTOS中使用FatFS 34*
*7.* 在RTOS中使用FatFS需考虑的问题 34*
*7.*.* 可重入性问题 34*
*7.*.2 FatFS的可重入性 34*
*7.2 FreeRTOS中使用FatFS的示例 343
*7.2.* 示例功能和CubeMX项目设置 343
*7.2.2 项目文件组成和初始代码分析 346
*7.2.3 FatFS API函数的重入性实现原理 350
*7.2.4 添加用户功能代码 354
第三*分 图片的获取与显示
第 *8章 BMP图片 360
*8.* LCD显示图片的原理 360
*8.*.* 像素颜色的表示 360
*8.*.2 根据图片的RGB565数据显示图片 360
*8.2 图片显示示例 362
*8.2.* 示例功能与CubeMX项目配置 362
*8.2.2 程序功能实现 363
*8.3 BMP图片文件的格式 368
*8.3.* BMP图片文件的数据分段 368
*8.3.2 位图文件头 368
*8.3.3 位图信息头 369
*8.3.4 位图数据 370
*8.4 BMP图片文件的读写操作示例 370
*8.4.* 示例功能和CubeMX项目设置 370
*8.4.2 程序功能实现 372
*8.4.3 BMP文件操作驱动程序 377
第 *9章 JPG图片 387
*9.* JPEG和LIBJPEG 387
*9.2 JPG图片文件的读写操作示例 388
*9.2.* 示例功能和CubeMX项目设置 388
*9.2.2 程序功能实现 389
*9.2.3 JPG文件操作驱动程序 395
第 20章 电阻式触摸屏 405
20.* 电阻式触摸屏的工作原理 405
20.2 电阻式触摸屏的软硬件接口 406
20.3 示例*:轮询方式检测触摸屏输出 407
20.3.* 示例功能 407
20.3.2 CubeMX项目设置 407
20.3.3 主程序功能实现 409
20.3.4 GUI界面的*建与交互操作 4*3
20.3.5 电阻式触摸屏驱动程序 420
20.4 示例二:中断方式获取触摸屏输出 426
20.4.* 示例功能和CubeMX项目设置 426
20.4.2 程序功能实现 427
第 2*章 电容式触摸屏 43*
2*.* 电容式触摸屏的工作原理 43*
2*.2 电容式触摸屏的软硬件接口 43*
2*.2.* 电容式触摸屏接口 43*
2*.2.2 电容式触摸屏控制芯片功能 433
2*.3 电容触摸屏的使用示例 437
2*.3.* 示例功能和CubeMX项目设置 437
2*.3.2 程序功能实现 438
2*.3.3 电容触摸屏驱动程序 443
第 22章 DCMI接口和数字摄像头 455
22.* 数字摄像头 455
22.*.* 数字摄像头概述 455
22.*.2 OV7670图像传感器的功能和接口 456
22.*.3 OV7670数据输出时序和格式 457
22.*.4 SCCB通信 458
22.*.5 OV7670的寄存器 460
22.2 DCMI接口 46*
22.2.* DCMI接口概述 46*
22.2.2 DCMI接口传输时序 462
22.2.3 DCMI数据存储格式 463
22.2.4 DCMI图像采集方式 464
22.2.5 DCMI的中断 465
22.3 DCMI的HAL驱动 465
22.3.* 主要驱动函数概述 465
22.3.2 DCMI接口初始化 466
22.3.3 DCMI的采集控制 467
22.4 DCMI和摄像头使用示例 467
22.4.* 摄像头模块 467
22.4.2 开发板与摄像头模块的连接 468
22.4.3 示例功能与CubeMX项目设置 470
22.4.4 程序功能实现 474
附录A CubeMX模板项目和公共驱动程序的使用 487
A.* 公共驱动程序的目录组成 487
A.2 CubeMX模板项目 488
A.3 新建CubeMX项目后导入模板项目的配置 488
A.4 复制模板项目以新建CubeMX项目 490
A.5 在CubeIDE中设置驱动程序搜索路径 490
附录B 复制*个项目 493
附录C 开发板功能模块 494
附录D 本书示例列表 498
附录E 缩略词 50*
参考文献 503
作者介绍
《STM32Cube*效开发教程(基础篇)》 *维波,博士、中*石油大学(华东)控制科学与工程学院教师。从事测控与仪器开发*域的教学和研究工作,主要研究方向是地球物理探测仪器开发、数据处理方法和软件开发。参与完成*家自然科学基金、山东省重点研发计划等多个科研项目,发表论文 20 余篇。著有《Qt 5.9 C++ 开发指南》和《Python Qt GUI 与数据可视化编程》。 鄢志丹,博士、中*石油大学(华东)控制科学与工程学院教师。从事随钻测控技术、自抗扰控制方法、井下仪器开发、微弱信号处理等方面的研究工作。主持*家自然科学基金、中*博士后科学基金、山东省自然科学基金等 *0 余个科研项目,获授权发明*利 *0 余项,发表论文 30 余篇。 *钊,博士、中*石油大学(华东)控制科学与工程学院教师。从事自动化相关的教学和研究工作,主要研究方向是非线性系统的非光滑控制研究、故障诊断、工业过程控制等。主持山东省*秀中青年*科研奖励基金项目 * 项,发表论文 20 余篇,作为副主编编写教材* *。 《STM32Cube*效开发教程(*级篇)》 *维波,博士、中*石油大学(华东)控制科学与工程学院教师。从事测控与仪器开发*域的教学和研究工作,主要研究方向是地球物理探测仪器开发、数据处理方法和软件开发。参与完成*家自然科学基金、山东省重点研发计划等多个科研项目,发表论文 20 余篇。著有《Qt 5.9 C++ 开发指南》和《Python Qt GUI 与数据可视化编程》。 鄢志丹,博士、中*石油大学(华东)控制科学与工程学院教师。从事随钻测控技术、自抗扰控制方法、井下仪器开发、微弱信号处理等方面的研究工作。主持*家自然科学基金、中*博士后科学基金、山东省自然科学基金等 *0 余个科研项目,获授权发明*利 *0 余项,发表论文 30 余篇。 *钊,博士、中*石油大学(华东)控制科学与工程学院教师。从事自动化相关的教学和研究工作,主要研究方向是非线性系统的非光滑控制研究、故障诊断、工业过程控制等。主持山东省*秀中青年*科研奖励基金项目 * 项,发表论文 20 余篇,作为副主编编写教材* *。