新書推薦:
《
清华大学藏战国竹简校释(壹):《命训》诸篇
》
售價:HK$
92.0
《
封建社会农民战争问题导论(光启文库)
》
售價:HK$
66.7
《
虚弱的反攻:开禧北伐
》
售價:HK$
92.0
《
泰山:一种中国信仰专论(法国汉学经典译丛)
》
售價:HK$
81.4
《
花外集斠箋
》
售價:HK$
151.0
《
有兽焉.8
》
售價:HK$
68.8
《
大学问·明清经济史讲稿
》
售價:HK$
70.8
《
中国国际法年刊(2023)
》
售價:HK$
115.6
|
編輯推薦: |
《STM32Cube高效开发教程(基础篇)》
1.使用STM32CubeMX和STM32CubeIDE作为开发软件,系统性地介绍STM32的HAL库开发。
2.覆盖了STM32F4嵌入式开发的几乎全部主题。
3.通过阅读本书,读者可以掌握STM32Cube开发方式和工具软件的使用。
3.丰富的配套资源:示例源代码、示例运行演示视频和课件。《STM32Cube高效开发教程(高级篇)》
1. 使用ST官方的STM32Cube全套工具链软件。STM32CubeMX进行MCU图形化配置然后导出初始化代码的开发方式简单便捷,程序结构统一,开发效率高,是容易掌握的方式。
2. 使用ST官方免费的IDE软件TrueSTUDIO和STM32CubeIDE,没有软件版权风险。
3. 本书介绍STM32 嵌入式开发内容:STM32Cube MCU 固件库所包含一些移植好的中间件,如 FreeRTOS、FatFS、LibJPEG、USB_Host、USB_Device 等,以及 SDIO、USB-OTG、DCMI 等硬件接口的编程和使用方法,旨在帮助读者掌握嵌入式操作系统、嵌入式文件系统、图片
|
內容簡介: |
《STM32Cube高效开发教程(基础篇)》
STM32CubeMX和STM32CubeIDE是ST公司提供的用于STM32开发的免费工具软件,是STM32Cube生态系统的核心工具软件。本书详细介绍这两个软件的用法,然后以STM32F407为研究对象,采用STM32Cube开发方式介绍STM32F407各种系统功能和常用外设的编程开发,包括外设基本工作原理和接口电路、HAL驱动程序功能和使用方法,以及针对一个STM32F407开发板的完整编程示例。通过阅读本书,读者可以掌握STM32Cube开发方式和工具软件的使用,掌握基于HAL库的STM32F407系统功能和常用外设的编程开发方法。
本书适合具有C语言、微机原理或单片机基础,想要学习STM32开发技术的读者阅读,可以作为高等院校电子、自动化、计算机、测控等专业的教材,也可作为STM32应用开发的参考书。
《STM32Cube高效开发教程(高级篇)》
本书介绍 STM32 开发的一些内容。第一部分详细介绍嵌入式操作系统 FreeRTOS 的使用;第二部分介绍使用 FatFS 管理 SPI-Flash 芯片、SD 卡和 U 盘上的文件系统;第三部分介绍 BMP 和 JPG 图片的获取与显示,触摸屏的使用,DCMI 接口和数字摄像头等。全书使用 STM32CubeMX 和 STM32CubeIDE软件开发例程,讲解 FreeRTOS、FatFS、LibJPEG、USB_Host、USB_Device 等中间件以及 SDIO、USB-OTG、
DCMI 等外设的原理和使用方法,并针对一个 STM32F407 开发板编写了完整示例项目。通过阅读本书,读者可以掌握 STM32 开发中的嵌入式操作系统、文件系统、触摸屏等软硬件的开发方法。
本书适合已经掌握 STM32CubeMX 和 STM32CubeIDE 软件的使用以及 STM32 常用外设的 STM32Cube开发等相关基础内容的读者阅读,可以作为高等院校电子、自动化、计算机类专业的教学用书,也可作为STM32 嵌入式系统开发的参考书。
|
關於作者: |
王维波,博士、中国石油大学(华东)控制科学与工程学院教师。从事测控与仪器开发领域的教学和研究工作,主要研究方向是地球物理探测仪器开发、数据处理方法和软件开发。参与完成国家自然科学基金、山东省重点研发计划等多个科研项目,发表论文 20 余篇。著有《Qt 5.9 C 开发指南》和《Python Qt GUI 与数据可视化编程》。
鄢志丹,博士、中国石油大学(华东)控制科学与工程学院教师。从事随钻测控技术、自抗扰控制方法、井下仪器开发、微弱信号处理等方面的研究工作。主持国家自然科学基金、中国博士后科学基金、山东省自然科学基金等 10 余个科研项目,获授权发明专利 10 余项,发表论文 30 余篇。
王钊,博士、中国石油大学(华东)控制科学与工程学院教师。从事自动化相关的教学和研究工作,主要研究方向是非线性系统的非光滑控制研究、故障诊断、工业过程控制等。主持山东省中青年科学家科研奖励基金项目 1 项,发表论文 20 余篇,作为副主编编写教材1 部。
发表论文 20 余篇,作为副主编编写教材1 部。
|
目錄:
|
《STM32Cube高效开发教程(基础篇)》
第一部分 软硬件基础
第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高效开发教程(高级篇)》
第 一部分 嵌入式操作系统FreeRTOS
第 1章 FreeRTOS基础 2
1.1 FreeRTOS概述 2
1.1.1 FreeRTOS的发展历史 2
1.1.2 FreeRTOS的特点和许可方式 2
1.1.3 FreeRTOS的一些概念和术语 3
1.1.4 为什么要使用RTOS 4
1.2 FreeRTOS入门示例 4
1.2.1 CubeMX项目配置 5
1.2.2 含FreeRTOS的项目的文件组成 8
1.2.3 程序分析和功能实现 9
1.3 FreeRTOS的文件组成和基本原理 15
1.3.1 FreeRTOS的文件组成 15
1.3.2 FreeRTOS的编码规则 20
1.3.3 FreeRTOS的配置和功能裁剪 21
第 2章 FreeRTOS的任务管理 29
2.1 任务相关的一些概念 29
2.1.1 多任务运行基本机制 29
2.1.2 任务的状态 30
2.1.3 任务的优先级 31
2.1.4 空闲任务 32
2.1.5 基础时钟与嘀嗒信号 32
2.2 FreeRTOS的任务调度 32
2.2.1 任务调度方法概述 32
2.2.2 使用时间片的抢占式调度方法 33
2.2.3 不使用时间片的抢占式调度方法 34
2.2.4 合作式任务调度方法 35
2.3 任务管理相关函数 36
2.3.1 相关函数概述 36
2.3.2 主要函数功能说明 38
2.4 多任务编程示例一 40
2.4.1 示例功能与CubeMX项目设置 40
2.4.2 初始程序分析 42
2.4.3 编写用户功能代码 44
2.5 任务管理工具函数 49
2.5.1 相关函数概述 49
2.5.2 获取任务句柄 50
2.5.3 单个任务的操作 51
2.5.4 内核信息统计 53
2.6 多任务编程示例二 55
2.6.1 示例功能与CubeMX项目设置 55
2.6.2 程序功能实现 56
第3章 FreeRTOS的中断管理 62
3.1 FreeRTOS与中断 62
3.2 任务与中断服务例程 64
3.2.1 任务与中断服务例程的关系 64
3.2.2 中断屏蔽和临界代码段 65
3.2.3 在ISR中使用FreeRTOS API函数 66
3.2.4 中断及其ISR设计原则 67
3.3 任务和中断程序设计示例 67
3.3.1 示例功能和CubeMX项目设置 67
3.3.2 基本功能代码 69
3.3.3 各种特性的测试 71
第4章 进程间通信与消息队列 74
4.1 进程间通信 74
4.2 队列的特点和基本操作 75
4.2.1 队列的创建和存储 75
4.2.2 向队列写入数据 76
4.2.3 从队列读取数据 77
4.2.4 队列操作相关函数 78
4.3 队列使用示例 79
4.3.1 示例功能和CubeMX项目设置 79
4.3.2 初始代码分析 80
4.3.3 实现用户功能 82
第5章 信号量 86
5.1 信号量和互斥量概述 86
5.1.1 二值信号量 86
5.1.2 计数信号量 87
5.1.3 互斥量 87
5.1.4 递归互斥量 88
5.1.5 相关函数概述 88
5.2 二值信号量使用示例 90
5.2.1 二值信号量操作相关函数详解 90
5.2.2 示例功能和CubeMX项目设置 92
5.2.3 程序功能实现 94
5.3 计数信号量使用示例 98
5.3.1 计数信号量操作相关函数详解 98
5.3.2 示例功能和CubeMX项目设置 99
5.3.3 程序功能实现 100
第6章 互斥量 104
6.1 优先级翻转问题 104
6.2 互斥量的工作原理 105
6.2.1 优先级继承 105
6.2.2 互斥量相关函数详解 105
6.3 优先级翻转示例 106
6.3.1 示例功能和CubeMX项目设置 106
6.3.2 程序功能实现 107
6.4 互斥量使用示例 111
6.4.1 示例功能和CubeMX项目设置 111
6.4.2 程序功能实现 111
第7章 事件组 115
7.1 事件组的原理和功能 115
7.1.1 事件组的功能特点 115
7.1.2 事件组的工作原理 115
7.2 事件组相关函数 116
7.2.1 相关函数概述 116
7.2.2 部分函数详解 117
7.3 事件组使用示例 120
7.3.1 示例功能和CubeMX项目设置 120
7.3.2 程序功能实现 120
7.4 通过事件组进行多任务同步 125
7.4.1 多任务同步原理 125
7.4.2 示例功能和CubeMX项目设置 126
7.4.3 程序功能实现 127
第8章 任务通知 132
8.1 任务通知的原理和功能 132
8.2 任务通知的相关函数 133
8.2.1 相关函数概述 133
8.2.2 函数详解 134
8.3 示例一:使用任务通知传递数据 137
8.3.1 示例功能与CubeMX项目设置 137
8.3.2 程序功能实现 138
8.4 示例二:将任务通知用作计数信号量 141
8.4.1 示例功能 141
8.4.2 CubeMX项目设置 141
8.4.3 程序功能实现 142
第9章 流缓冲区和消息缓冲区 145
9.1 流缓冲区功能概述 145
9.2 流缓冲区操作的相关函数 146
9.2.1 相关函数概述 146
9.2.2 部分函数详解 146
9.2.3 表示发送完成和接收完成的宏 149
9.3 流缓冲区使用示例 149
9.3.1 示例功能与CubeMX项目设置 149
9.3.2 程序功能实现 151
9.4 消息缓冲区功能概述 154
9.5 消息缓冲区操作相关函数 154
9.5.1 相关函数概述 154
9.5.2 部分函数详解 155
9.6 消息缓冲区使用示例 157
9.6.1 示例功能与CubeMX项目设置 157
9.6.2 程序功能实现 158
第 10章 软件定时器 162
10.1 软件定时器概述 162
10.1.1 软件定时器的特性 162
10.1.2 软件定时器的相关配置 163
10.1.3 定时器服务任务的优先级 163
10.2 软件定时器的相关函数 164
10.2.1 相关函数概述 164
10.2.2 部分函数详解 165
10.3 软件定时器使用示例 169
10.3.1 示例功能和CubeMX项目设置 169
10.3.2 程序功能实现 170
第 11章 空闲任务与低功耗 174
11.1 HAL和FreeRTOS的基础时钟 174
11.1.1 使用SysTick作为HAL的基础时钟 174
11.1.2 使用其他定时器作为HAL的基础时钟 177
11.1.3 FreeRTOS的基础时钟 179
11.2 空闲任务与低功耗处理 182
11.2.1 实现原理 182
11.2.2 设计示例 183
11.3 Tickless低功耗模式 186
11.3.1 Tickless模式的原理和功能 186
11.3.2 Tickless模式的使用示例 187
第二部分 FatFS管理文件系统
第 12章 FatFS和文件系统 192
12.1 FatFS概述 192
12.1.1 FatFS的作用 192
12.1.2 文件系统的一些基本概念 193
12.1.3 FatFS的功能特点和参数 194
12.1.4 FatFS的文件组成 195
12.1.5 FatFS的基本数据类型定义 196
12.2 FatFS的应用程序接口函数 197
12.2.1 卷管理和系统配置相关函数 197
12.2.2 文件和目录管理相关函数 200
12.2.3 目录访问相关函数 203
12.2.4 文件访问相关函数 204
12.3 FatFS的存储介质访问函数 208
12.4 针对SPI-Flash芯片移植FatFS 209
12.4.1 SPI-Flash芯片硬件电路 209
12.4.2 CubeMX项目基础设置 210
12.4.3 在CubeMX中设置FatFS 210
12.4.4 项目中FatFS的文件组成 216
12.4.5 FatFS初始化过程 218
12.4.6 针对SPI-Flash芯片的Disk IO函数实现 226
12.5 在SPI-Flash芯片上使用文件系统 231
12.5.1 主程序功能 231
12.5.2 磁盘格式化 234
12.5.3 获取FAT磁盘信息 234
12.5.4 扫描根目录下的文件和子目录 236
12.5.5 创建文件和目录 237
12.5.6 读取文本文件 239
12.5.7 读取二进制文件 239
12.5.8 获取文件信息 241
12.5.9 文件file_opera.h的完整定义 242
第 13章 直接访问SD卡 245
13.1 SD卡简介 245
13.1.1 SD卡的分类 245
13.1.2 常规SD卡的接口 246
13.2 SDIO接口硬件电路 247
13.2.1 STM32F407的SDIO接口 247
13.2.2 开发板上的microSD卡连接电路 248
13.3 SDIO接口和SD卡的HAL驱动程序 249
13.3.1 SD驱动程序概述 250
13.3.2 初始化和配置函数 251
13.3.3 读取SD卡的参数信息 251
13.3.4 获取SD卡的当前状态 255
13.3.5 以轮询方式读写SD卡 255
13.3.6 以中断方式读写SD卡 256
13.3.7 以DMA方式读写SD卡 256
13.4 示例一:以轮询方式读写SD卡 257
13.4.1 示例功能与CubeMX项目设置 257
13.4.2 主程序与SDIO接口/SD卡初始化 259
13.4.3 程序功能实现 260
13.5 示例二:以DMA方式读写SD卡 264
13.5.1 示例功能与CubeMX项目设置 264
13.5.2 主程序与外设初始化 265
13.5.3 程序功能实现 268
第 14章 用FatFS管理SD卡文件系统 272
14.1 SD卡文件系统概述 272
14.2 示例一:阻塞式访问SD卡 272
14.2.1 示例功能与CubeMX项目设置 272
14.2.2 项目文件组成和初始代码分析 274
14.2.3 SD卡的Disk IO函数实现 278
14.2.4 SD卡文件管理功能的实现 284
14.3 示例二:以DMA方式访问SD卡 288
14.3.1 示例功能和CubeMX项目设置 288
14.3.2 Disk IO函数实现代码分析 289
14.3.3 SD卡文件管理功能的实现 291
第 15章 用FatFS管理U盘文件系统 295
15.1 USB概述 295
15.1.1 USB协议 295
15.1.2 USB设备类型 296
15.1.3 USB接口类型 296
15.2 STM32F407的USB-OTG接口 298
15.2.1 USB-OTG概述 298
15.2.2 USB-OTG FS 299
15.2.3 开发板上的USB接口电路 302
15.3 作为USB Host读写U盘 303
15.3.1 示例功能和CubeMX项目设置 303
15.3.2 项目文件组成和初始代码分析 307
15.3.3 USBH状态变化测试 316
15.3.4 U盘文件管理功能实现 318
第 16章 USB-OTG用作USB MSC外设 324
16.1 开发板作为USB MSC外设的原理 324
16.2 示例一:SD卡读卡器 326
16.2.1 示例功能和CubeMX项目设置 326
16.2.2 项目文件组成和初始代码分析 328
16.2.3 程序功能实现 333
16.3 示例二:增加FatFS管理本机文件功能 336
16.3.1 示例功能和CubeMX项目设置 336
16.3.2 程序功能实现 337
16.3.3 运行测试 340
第 17章 在FreeRTOS中使用FatFS 341
17.1 在RTOS中使用FatFS需考虑的问题 341
17.1.1 可重入性问题 341
17.1.2 FatFS的可重入性 341
17.2 FreeRTOS中使用FatFS的示例 343
17.2.1 示例功能和CubeMX项目设置 343
17.2.2 项目文件组成和初始代码分析 346
17.2.3 FatFS API函数的重入性实现原理 350
17.2.4 添加用户功能代码 354
第三部分 图片的获取与显示
第 18章 BMP图片 360
18.1 LCD显示图片的原理 360
18.1.1 像素颜色的表示 360
18.1.2 根据图片的RGB565数据显示图片 360
18.2 图片显示示例 362
18.2.1 示例功能与CubeMX项目配置 362
18.2.2 程序功能实现 363
18.3 BMP图片文件的格式 368
18.3.1 BMP图片文件的数据分段 368
18.3.2 位图文件头 368
18.3.3 位图信息头 369
18.3.4 位图数据 370
18.4 BMP图片文件的读写操作示例 370
18.4.1 示例功能和CubeMX项目设置 370
18.4.2 程序功能实现 372
18.4.3 BMP文件操作驱动程序 377
第 19章 JPG图片 387
19.1 JPEG和LIBJPEG 387
19.2 JPG图片文件的读写操作示例 388
19.2.1 示例功能和CubeMX项目设置 388
19.2.2 程序功能实现 389
19.2.3 JPG文件操作驱动程序 395
第 20章 电阻式触摸屏 405
20.1 电阻式触摸屏的工作原理 405
20.2 电阻式触摸屏的软硬件接口 406
20.3 示例一:轮询方式检测触摸屏输出 407
20.3.1 示例功能 407
20.3.2 CubeMX项目设置 407
20.3.3 主程序功能实现 409
20.3.4 GUI界面的创建与交互操作 413
20.3.5 电阻式触摸屏驱动程序 420
20.4 示例二:中断方式获取触摸屏输出 426
20.4.1 示例功能和CubeMX项目设置 426
20.4.2 程序功能实现 427
第 21章 电容式触摸屏 431
21.1 电容式触摸屏的工作原理 431
21.2 电容式触摸屏的软硬件接口 431
21.2.1 电容式触摸屏接口 431
21.2.2 电容式触摸屏控制芯片功能 433
21.3 电容触摸屏的使用示例 437
21.3.1 示例功能和CubeMX项目设置 437
21.3.2 程序功能实现 438
21.3.3 电容触摸屏驱动程序 443
第 22章 DCMI接口和数字摄像头 455
22.1 数字摄像头 455
22.1.1 数字摄像头概述 455
22.1.2 OV7670图像传感器的功能和接口 456
22.1.3 OV7670数据输出时序和格式 457
22.1.4 SCCB通信 458
22.1.5 OV7670的寄存器 460
22.2 DCMI接口 461
22.2.1 DCMI接口概述 461
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.1 主要驱动函数概述 465
22.3.2 DCMI接口初始化 466
22.3.3 DCMI的采集控制 467
22.4 DCMI和摄像头使用示例 467
22.4.1 摄像头模块 467
22.4.2 开发板与摄像头模块的连接 468
22.4.3 示例功能与CubeMX项目设置 470
22.4.4 程序功能实现 474
附录A CubeMX模板项目和公共驱动程序的使用 487
A.1 公共驱动程序的目录组成 487
A.2 CubeMX模板项目 488
A.3 新建CubeMX项目后导入模板项目的配置 488
A.4 复制模板项目以新建CubeMX项目 490
A.5 在CubeIDE中设置驱动程序搜索路径 490
附录B 复制一个项目 493
附录C 开发板功能模块 494
附录D 本书示例列表 498
附录E 缩略词 501
参考文献 503
|
|