基本信息
- 商品名:正版新书 STM3□Cube高效开发教程(基础篇) STM嵌入式系统开发教程,系统性地介绍STM3
- ISBN:9787115551771
- 定价:119.80
- 出版社:人民邮电出版社
- 作者:王维波,鄢志丹,王钊
参考信息(以实物为准)
- 出版时间:2021-09-01
- 印刷时间:
- 版次:1
- 印次:1
- 包装:平装
- 开本:16开
- 用纸:胶版纸
- 页数:487
- 字数:
编辑推荐
1.使用STM3□CubeMX和STM3□CubeIDE作为开发软件,系统性地介绍STM3□的HAL库开发。
□.覆盖了STM3□F4嵌入式开发的几乎全部主题。
3.通过阅读本书,读者可以掌握STM3□Cube开发方式和工具软件的使用。
3.丰富的配套资源:示例源代码、示例运行演示□□和课件。
内容简介
STM3□CubeMX和STM3□CubeIDE是ST公司提供的用于STM3□开发的免费工具软件,是STM3□Cube生态系统的核心工具软件。本书首先详细介绍这两个软件的用法,然后以STM3□F407为研究对象,采用STM3□Cube开发方式介绍STM3□F407各种系统功能和常用外设的编程开发,包括外设基本工作原理和接口电路、HAL驱动程序功能和使用方法,以及针对一个STM3□F407开发板的完整编程示例。通过阅读本书,读者可以掌握STM3□Cube开发方式和工具软件的使用,掌握基于HAL库的STM3□F407系统功能和常用外设的编程开发方法。
本书适合具有C语言、微机原理或单片机基础,想要学习STM3□**开发技术的读者阅读,可以作为高等院校电子、自动化、计算机、测控等专业的教材,也可作为STM3□应用开发者的参考书。
目录
□□部分 软硬件基础
□□章 概述 □
1.1 STM3□系列单片机 □
1.□ STM3□的器件驱动库 3
1.□.1 标准外设库 3
1.□.□ HAL/LL库 4
1.3 STM3□Cube生态系统 4
1.3.1 嵌入式软件 5
1.3.□ 软件工具 6
1.4 STM3□Cube开发方式 8
第□章 STM3□F407和开发板 10
□.1 STM3□F407简介 10
□.1.1 功能特性 10
□.1.□ 内部结构 10
□.1.3 引脚定义 13
□.1.4 □小系统参考设计 14
□.□ STM3□F407开发板 17
□.□.1 开发板功能 17
□.□.□ 开发板基本电路 □0
□.3 仿真器 □3
第3章 STM3□CubeMX的使用 □4
3.1 安装STM3□CubeMX □4
□.□ □□MCU固件包 □5
3.□.1 软件库文件夹设置 □5
3.□.□ 管理嵌入式软件包 □6
3.□.3 MCU固件库文件组成 □8
3.3 软件功能和基本使用 □9
3.3.1 软件界面 □9
3.3.□ 新建项目 3□
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.□ CubeMX项目设置 49
3.4.3 生成CubeIDE项目代码 50
第4章 STM3□CubeIDE的使用 51
4.1 安装STM3□CubeIDE 51
4.□ 基本概念和MCU固件库设置 5□
4.□.1 启动软件 5□
4.□.□ 打开项目 53
4.□.3 CubeIDE的一些基本概念 55
4.□.4 STM3□Cube软件库设置 57
4.3 C/C++场景的界面功能和操作 58
4.3.1 主要的视图 58
4.3.□ 工具栏功能 59
4.3.3 文本编辑器功能和操作 61
4.4 CubeMX生成项目的文件组成 63
4.4.1 CMSIS驱动程序文件 63
4.4.□ HAL驱动程序文件 65
4.4.3 用户程序文件 66
4.4.4 启动文件 71
4.4.5 根目录下的文件 71
4.4.6 Include搜索路径 7□
4.5 项目管理、构建和下载调试 7□
4.5.1 项目管理 7□
4.5.□ 项目构建 74
4.5.3 下载和调试 75
4.6 使用内置的CubeMX 79
4.6.1 创建项目 79
4.6.□ 配置MCU和生成代码 80
4.7 CubeIDE使用偏好设置 81
4.8 HAL库的一些基本问题 83
4.8.1 基本数据类型 83
4.8.□ 一些通用定义 83
4.8.3 获取HAL库帮助信息 84
第5章 STM3□CubeMonitor的使用 85
5.1 STM3□CubeMonitor功能简介 85
5.□ CubeMonitor基本操作 87
5.□.1 Node-RED中的一些基本概念 87
5.□.□ 设计模式界面和基本操作 88
5.□.3 程序部署和Dashboard界面 91
5.3 CubeMonitor基本功能使用示例 9□
5.3.1 STM3□ MCU项目 9□
5.3.□ □量监测的基本操作 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.□ GPIO的HAL驱动程序 117
6.3 GPIO使用示例 1□0
6.3.1 示例功能和CubeMX配置 1□0
6.3.□ 项目初始化代码分析 1□□
6.3.3 编写按键和LED的驱动程序 1□4
6.3.4 使用驱动程序实现示例功能 1□7
6.4 作为公共驱动程序 130
第7章 中断系统和外部中断 131
7.1 STM3□F407的中断 131
7.1.1 中断向量表 131
7.1.□ 中断优先级 134
7.1.3 中断设置相关HAL驱动程序 135
7.□ 外部中断EXTI 136
7.□.1 外部中断功能和外部中断线 136
7.□.□ 外部中断相关HAL函数 138
7.3 外部中断使用示例 141
7.3.1 示例功能和CubeMX项目设置 141
7.3.□ 项目初始代码分析 14□
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.□ TFT LCD接口 149
8.1.3 FSMC与TFT LCD的连接 150
8.□ FSMC连接LCD的电路和接口初始化 151
8.□.1 电路连接 151
8.□.□ 示例功能和CubeMX项目设置 153
8.□.3 初始代码分析 155
8.3 使用LCD驱动程序 159
8.3.1 设置搜索路径 159
8.3.□ LCD驱动程序的改写 161
8.3.3 LCD驱动程序的原理和功能 16□
8.3.4 LCD驱动程序的使用 171
8.4 作为公共驱动程序 17□
第9章 基础定时器 174
9.1 定时器概述 174
9.□ 基础定时器内部结构和功能 175
9.3 基础定时器HAL驱动程序 177
9.3.1 基础定时器主要函数 177
9.3.□ 其他通用操作函数 179
9.3.3 中断处理 180
9.4 外设的中断处理概念小结 18□
9.5 基础定时器使用示例 185
9.5.1 示例功能和CubeMX项目配置 185
9.5.□ 程序功能实现 187
□□0章 通用定时器 19□
10.1 通用定时器功能概述 19□
10.1.1 功能概述 19□
10.1.□ 结构框图 19□
10.□ 典型功能原理和HAL驱动 196
10.□.1 生成PWM波 196
10.□.□ 输出比较 197
10.□.3 输入捕获 199
10.□.4 PWM输入模式 □00
10.□.5 定时器同步 □01
10.□.6 通用定时器中断事件和回调函数 □0□
10.3 示例1:生成PWM波 □04
10.3.1 电路原理和CubeMX项目配置 □04
10.3.□ 输出固定占空比PWM波 □06
10.3.3 输出可□占空比PWM波 □08
10.4 示例□:输出比较 □10
10.4.1 示例功能和CubeMX项目设置 □10
10.4.□ 程序功能实现 □11
10.5 示例3:输入PWM □13
10.5.1 示例功能和CubeMX项目设置 □13
10.5.□ 程序功能实现 □15
□□1章 实时时钟 □□0
11.1 RTC功能概述 □□0
11.1.1 RTC的功能 □□0
11.1.□ 工作原理 □□0
11.1.3 RTC的中断和复用引脚 □□3
11.1.4 RTC的HAL基础驱动程序 □□4
11.□ 周期唤醒和闹钟 □□7
11.□.1 周期唤醒相关HAL函数 □□7
11.□.□ 闹钟相关HAL函数 □□9
11.□.3 示例功能和电路 □30
11.□.4 CubeMX项目配置 □30
11.□.5 程序功能实现 □34
11.3 备份寄存器 □39
11.3.1 备份寄存器的功能 □39
11.3.□ 示例功能与CubeMX项目设置 □40
11.3.3 程序实现和运行效果 □40
11.4 入侵检测和时间戳 □46
11.4.1 入侵检测的功能 □46
11.4.□ 示例功能与CubeMX项目设置 □47
11.4.3 程序功能实现 □49
□□□章 USART/UART通信 □55
1□.1 USART/UART接口概述 □55
1□.1.1 USART/UART接口信号 □55
1□.1.□ 开发板上的串口电路 □56
1□.1.3 串口通信参数 □59
1□.□ 串口的HAL驱动程序 □59
1□.□.1 常用功能函数 □59
1□.□.□ 常用的宏函数 □6□
1□.□.3 中断事件与回调函数 □63
1□.3 串口通信示例 □64
1□.3.1 硬件电路与示例功能 □64
1□.3.□ CubeMX项目设置 □65
1□.3.3 程序功能实现 □67
1□.3.4 接收不定长度数据的改进代码 □73
□□3章 DMA □76
13.1 DMA功能概述 □76
13.1.1 DMA简介 □76
13.1.□ DMA传输属性 □77
13.□ DMA的HAL驱动程序 □80
13.□.1 DMA的HAL函数概述 □80
13.□.□ DMA传输初始化配置 □80
13.□.3 启动DMA数据传输 □8□
13.□.4 DMA的中断 □8□
13.3 串口的DMA传输示例 □84
13.3.1 示例功能与CubeMX项目设置 □84
13.3.□ 程序功能实现 □86
□□4章 ADC □95
14.1 ADC功能概述 □95
14.1.1 ADC的特性 □95
14.1.□ ADC的工作原理 □95
14.1.3 多重ADC模式 □99
14.□ ADC的HAL驱动程序 □99
14.□.1 常规通道 □99
14.□.□ 注入通道 303
14.□.3 多重ADC 303
14.3 示例1:软件启动ADC转换 303
14.3.1 电路和示例功能 303
14.3.□ CubeMX项目设置 304
14.3.3 程序功能实现 306
14.4 示例□:定时器触发ADC转换 308
14.4.1 示例功能和CubeMX项目设置 308
14.4.□ 程序功能实现 310
14.5 示例3:多通道和DMA传输 313
14.5.1 示例功能和CubeMX项目设置 313
14.5.□ 程序功能实现 315
14.6 示例4:双ADC同步转换 319
14.6.1 示例功能与CubeMX项目设置 319
14.6.□ 程序功能实现 3□0
□□5章 DAC 3□5
15.1 DAC功能概述 3□5
15.1.1 DAC的结构和特性 3□5
15.1.□ 功能说明 3□6
15.□ DAC的HAL驱动程序 3□8
15.□.1 DAC驱动宏函数 3□8
15.□.□ DAC驱动功能函数 3□8
15.3 示例1:软件触发DAC转换 33□
15.3.1 开发板上的DAC电路 33□
15.3.□ 示例功能和CubeMX项目设置 33□
15.3.3 程序功能实现 333
15.4 示例□:输出三角波 335
15.4.1 示例功能和CubeMX项目设置 335
15.4.□ 程序功能实现 336
15.5 示例3:使用DMA输出自定义波形 339
15.5.1 示例功能和CubeMX项目设置 339
15.5.□ 程序功能实现 340
□□6章 SPI通信 343
16.1 SPI接口和通信协议 343
16.1.1 SPI硬件接口 343
16.1.□ SPI传输协议 343
16.1.3 STM3□F407的SPI接口 345
16.□ SPI的HAL驱动程序 346
16.□.1 SPI寄存器操作的宏函数 346
16.□.□ SPI初始化和阻塞式数据传输 347
16.□.3 中断方式数据传输 348
16.□.4 DMA方式数据传输 349
16.3 Flash存储芯片W□5Q1□8 350
16.3.1 硬件接口和连接 350
16.3.□ 存储空间划分 351
16.3.3 数据读写的原则 351
16.3.4 操作指令 351
16.3.5 状态寄存器 353
16.4 示例1:轮询方式读写W□5Q1□8 354
16.4.1 示例功能与CubeMX项目设置 354
16.4.□ 初始程序 356
16.4.3 编写W□5Q1□8的驱动程序 357
16.4.4 W□5Q1□8功能测试 366
16.5 示例□:DMA方式读写W□5Q1□8 370
16.5.1 示例功能和CubeMX项目设置 370
16.5.□ 程序功能实现 371
□□7章 I□C通信 377
17.1 I□C总线和通信协议 377
17.1.1 I□C总线结构 377
17.1.□ I□C总线通信协议 378
17.1.3 STM3□F407的I□C接口 378
17.□ I□C的HAL驱动程序 379
17.□.1 I□C接口的初始化 379
17.□.□ 阻塞式数据传输 379
17.□.3 中断方式数据传输 381
17.□.4 DMA方式数据传输 381
17.3 EEPROM芯片□4C0□ 38□
17.3.1 接口和通信协议 38□
17.3.□ 驱动程序设计 384
17.4 读写□4C0□示例 387
17.4.1 示例功能和CubeMX项目设置 387
17.4.□ 程序功能实现 388
□□8章 CAN总线通信 39□
18.1 CAN总线结构和传输协议 39□
18.1.1 CAN总线结构 39□
18.1.□ CAN总线传输协议 394
18.□ CAN外设工作原理和HAL驱动程序 397
18.□.1 片上CAN外设的功能概述 397
18.□.□ CAN模块的基本控制 398
18.□.3 CAN模块的测试模式 399
18.□.4 消息发送 400
18.□.5 消息接收 401
18.□.6 标识符筛选 40□
18.□.7 中断及其处理 405
18.3 开发板上的CAN接口电路 406
18.4 示例1:轮询方式CAN通信 407
18.4.1 示例功能和CubeMX项目设置 407
18.4.□ 程序功能实现 409
18.5 示例□:中断方式CAN通信 415
18.5.1 示例功能和CubeMX项目设置 415
18.5.□ 程序功能实现 415
□□9章 FSMC连接外部SRAM 4□□
19.1 FSMC连接外部SRAM的原理 4□□
19.1.1 FSMC控制区域的划分 4□□
19.1.□ SRAM芯片与MCU的连接 4□□
19.□ 访问外部SRAM的HAL驱动程序 4□3
19.□.1 外部SRAM初始化与控制 4□3
19.□.□ 外部SRAM读写函数 4□4
19.□.3 直接通过指针访问外部SRAM 4□5
19.□.4 DMA方式读写外部SRAM 4□6
19.3 示例1:轮询方式读写外部SRAM 4□7
19.3.1 示例功能和CubeMX项目设置 4□7
19.3.□ 程序功能实现 4□9
19.4 示例□:DMA方式读写外部SRAM 435
19.4.1 示例功能和CubeMX项目设置 435
19.4.□ 程序功能实现 437
第□0章 独立看门狗 44□
□0.1 独立看门狗的工作原理 44□
□0.□ 独立看门狗的HAL驱动程序 443
□0.3 独立看门狗使用示例 444
□0.3.1 示例功能和CubeMX项目设置 444
□0.3.□ 程序功能实现 445
第□1章 窗口看门狗 448
□1.1 窗口看门狗的工作原理 448
□1.□ 窗口看门狗的HAL驱动程序 450
□1.3 窗口看门狗使用示例 451
□1.3.1 示例功能和CubeMX项目设置 451
□1.3.□ 不使用EWI中断 45□
□1.3.3 使用EWI中断 454
第□□章 电源管理和低功耗模式 456
□□.1 电源系统和低功耗模式 456
□□.1.1 STM3□F4的电源系统 456
□□.1.□ STM3□F4的低功耗模式 457
□□.□ CubeMX的功耗计算器 458
□□.□.1 PCC界面概述 458
□□.□.□ 步骤和序列管理 459
□□.□.3 功耗分析 461
□□.3 睡眠模式 46□
□□.3.1 睡眠模式的特点和操作 46□
□□.3.□ 睡眠模式编程示例 464
□□.4 停止模式 467
□□.4.1 停止模式的特点和操作 467
□□.4.□ 停止模式编程示例 469
□□.5 待机模式 47□
□□.5.1 待机模式的特点和操作 47□
□□.5.□ 待机模式编程示例 473
附录A CubeMX模板项目和公共驱动程序的使用 477
A.1 公共驱动程序的目录组成 477
A.□ CubeMX模板项目 478
A.3 新建CubeMX项目后导入模板项目的配置 478
A.4 □□模板项目以新建CubeMX项目 479
A.5 在CubeIDE中设置驱动程序搜索路径 480
附录B □□一个项目 48□
附录C 本书示例项目列表 483
附录D 缩略词 485
附参考文献 488
作者简介
王维波,博士、中国石油大学(华东)控制科学与工程学院教师。从事测控与仪器开发领域的教学和研究工作,主要研究方向是地球物理探测仪器开发、数据处理方法和软件开发。参与完成国家自然科学□□、山东省重点研发计划等多个科研项目,发表论文 □0 余篇。著有《Qt 5.9 C++ 开发指南》和《Python Qt GUI 与数据可视化编程》。
鄢志丹,博士、中国石油大学(华东)控制科学与工程学院教师。从事随钻测控技术、自抗扰控制方法、井下仪器开发、微弱信号处理等方面的研究工作。主持国家自然科学□□、中国博士后科学□□、山东省自然科学□□等 10 余个科研项目,获授权发明专利 10 余项,发表论文 30 余篇。
王钊,博士、中国石油大学(华东)控制科学与工程学院教师。从事自动化相关的教学和研究工作,主要研究方向是非线性系统的非光滑控制研究、故障诊断、工业过程控制等。主持山东省优秀中青年科学家科研奖励□□项目 1 项,发表论文 □0 余篇,作为副主编编写教材1 部。