包邮ARM CORTEX-M4嵌入式系统原理及应用——基于STM32F407微控制器的HAL库开发
1星价
¥61.0
(7.7折)
2星价¥61.0
定价¥79.0
图文详情
- ISBN:9787302656722
- 装帧:70g胶版纸
- 册数:暂无
- 重量:暂无
- 开本:其他
- 页数:440
- 出版时间:2024-04-01
- 条形码:9787302656722 ; 978-7-302-65672-2
本书特色
全书共18章,分为三篇:**篇(第1~3章)为系统平台模块,介绍嵌入式系统定义、嵌入式硬件平台和软件环境;第二篇(第4~10章)为基本外设模块,介绍STM32嵌入式系统常用的外设模块,包括GPIO、中断、定时器、PWM和嵌入式系统接口技术;第三篇(第11~18章)为扩展外设模块,介绍STM32嵌入式系统高级外设模块和典型的传感器,包括USART、SPI、W25Q128、I2C、EEPROM、ADC、DMA、DAC、RTC、DHT11等。
系统论述基于STM32CubeMX的HAL开发方法。
以读者认知过程为导向编排组织书中章节内容。
项目引领,任务驱动,培养读者工程实践能力。
构建立体化的教学资源,便于课程教学与项目开发。
从体系结构到编程开发|从硬件平台到案例设计嵌入式开发实战经验分享|嵌入式课程教学经验总结1000分钟原创视频|18章精美课件|15万行程序代码孙立宁 苏州大学特聘教授、俄罗斯工程院院士★ 嵌入式系统百花齐放、百家争鸣。STM32系列微处理器异军突起,成为嵌入式系统课程教学的主流。《ARM Cortex-M4嵌入式系统原理及应用——基于STM32F407微控制器的HAL库开发》独树一帜,理论与实践并重,共性与个性兼顾,先引导读者循序渐进学习基础知识,然后逐步完成复杂的系统设计,带领读者开启美妙的嵌入式系统开发之旅。
吴国伟 大连理工大学软件学院院长★ 《ARM Cortex-M4嵌入式系统原理及应用——基于STM32F407微控制器的HAL库开发》旨在传承51单片机经典,发扬ARM嵌入式芯片长处,助推MCU升级。ARM嵌入式系统实际上是8位单片机的扩展,但是其高性能特性必然对应于更复杂的系统设计。借助8位单片机的理念、方法和案例,可以提高读者的学习兴趣,轻松入门。
宋廷强 青岛科技大学信息科学技术学院副院长★ 《ARM Cortex-M4嵌入式系统原理及应用——基于STM32F407微控制器的HAL库开发》根据读者认知规律组织书中各章内容,先讲硬件后讲软件,由浅入深,循序渐进。全书遵循理论够用,重在实践,易于上手的原则,培养读者的学习兴趣,激发读者的学习动力;对复杂的嵌入式项目娓娓道来,条理清晰,令人赏心悦目。
李永华 北京邮电大学通信工程学院教授★ 《ARM Cortex-M4嵌入式系统原理及应用——基于STM32F407微控制器的HAL库开发》采取项目引领,任务驱动的方式,强调“教”“学”“做”一体化,注重读者工程实践能力的培养。对于每一个典型外设模块,在简明扼要阐述原理后,解释其设计思想,并给出完整的工程应用实例。
韩勇 中国移动苏州分公司嵌入式系统高级工程师★ 《ARM Cortex-M4嵌入式系统原理及应用——基于STM32F407微控制器的HAL库开发》突出的特点就是紧跟时代步伐,选用性能强劲的STM32F4微控制器,采用基于CubeMX的HAL开发方式,从实战角度论述其设计思路、编程技巧和控制算法。该书提供教学课件、教学视频、教学大纲、程序代码和实验素材等全方位、立体化的教学资源,轻松助力嵌入式系统的教学与项目开发。
本书旨在传承51经典,发扬ARM长处,助推MCU升级;以学生认知过程为导向组织教材内容,项目引领,全案例教学,着重培养学生实践应用能力。也可以由出版社拟宣传词
内容简介
本书旨在传承51经典,发扬 ARM 长处,助推微控制器升级,以学生认知过程为导向组织内容,采取项目引领,全案例
教学的方式,着重培养学生实践应用能力。本书详细阐述了基于 ARM Cortex-M4内核的STM32F407微控制器嵌入式系
统硬件设计方法和软件开发技术。全书共有18章,划分为三部分:**部分(第1~3章)为系统平台模块,分别讲述嵌入
式系统定义、嵌入式硬件平台和软件环境配置与使用入门;第二部分(第4~10章)为基本外设模块,分别对 STM32嵌入
式系统*常用的外设模块进行介绍,包括 GPIO、中断、定时器、PWM 和嵌入式系统接口技术;第三部分(第11~18章)为
扩展外设模块,分别对 STM32 嵌入式系统高级外设模块和典型传感器进行 讲 解,包 括 USART、SPI、W25Q128、I2C、
EEPROM、ADC、DMA、DAC、RTC和 DHT11等。
本书适合作为高等院校计算机、自动化、电子信息、机电一体化、物联网等专业高年级本科生或研究生嵌入式相关课
程的教材,同时可供从事嵌入式开发的技术和研究人员参考。
目录
**篇 系 统 平 台
第1章 ARMCortex-M4嵌入式系统 ……………………………………………………………………… 2
1.1 嵌入式系统概述 …………………………………………………………………………………… 2
1.1.1 什么是嵌入式系统 ……………………………………………………………………… 2
1.1.2 嵌入式系统和通用计算机比较 ………………………………………………………… 3
1.1.3 嵌入式系统的特点 ……………………………………………………………………… 3
1.1.4 嵌入式系统的应用领域 ………………………………………………………………… 4
1.1.5 嵌入式系统范例 ………………………………………………………………………… 7
1.2 嵌入式系统的硬件 ………………………………………………………………………………… 8
1.2.1 嵌入式处理器的分类 …………………………………………………………………… 9
1.2.2 嵌入式处理器的技术指标 ……………………………………………………………… 11
1.2.3 嵌入式存储器 …………………………………………………………………………… 14
1.2.4 嵌入式I/O 设备 ……………………………………………………………………… 16
1.2.5 嵌入式I/O 接口 ……………………………………………………………………… 16
1.3 ARM Cortex-M4 处理器 ……………………………………………………………………… 17
1.3.1 ARM 公司 ……………………………………………………………………………… 17
1.3.2 ARM 处理器 …………………………………………………………………………… 17
1.4 STM32微控制器 ………………………………………………………………………………… 19
1.4.1 从 ARM Cortex-M 内核到基于 ARM Cortex-M 的 MCU ………………………… 19
1.4.2 STM32微控制器产品线 ……………………………………………………………… 20
1.4.3 STM32微控制器命名规则 …………………………………………………………… 22
1.5 嵌入式系统的软件 ……………………………………………………………………………… 23
1.5.1 无操作系统的嵌入式软件 ……………………………………………………………… 24
1.5.2 带操作系统的嵌入式软件 ……………………………………………………………… 24
1.5.3 典型嵌入式操作系统 …………………………………………………………………… 24
1.5.4 软件结构选择建议 ……………………………………………………………………… 25 本章小结 ………………………………………………………………………………………………… 26 思考拓展 ………………………………………………………………………………………………… 26
10
第2章 STM32F407与实验平台 ………………………………………………………………………… 27
2.1 STM32F407微控制器…………………………………………………………………………… 27
2.1.1 STM32F407/STM32F417系列 ……………………………………………………… 27
2.1.2 STM32F407功能特性 ………………………………………………………………… 28
2.1.3 STM32F407内部结构 ………………………………………………………………… 29
2.1.4 STM32F407存储器映射 ……………………………………………………………… 31
2.1.5 STM32F407时钟系统 ………………………………………………………………… 32
2.1.6 STM32F407引脚 ……………………………………………………………………… 35
2.2 开发板总体概况 ………………………………………………………………………………… 36
2.2.1 开发板设计背景 ………………………………………………………………………… 36
2.2.2 开发板总体介绍 ………………………………………………………………………… 37
2.3 电源电路 ………………………………………………………………………………………… 38
2.3.1 电源电路原理图 ………………………………………………………………………… 38
2.3.2 电源电路工作原理 ……………………………………………………………………… 38
2.4 核心板电路 ……………………………………………………………………………………… 39
2.4.1 芯片电源电路 …………………………………………………………………………… 39
2.4.2 CPU 滤波电路 ………………………………………………………………………… 39
2.4.3 外接晶振电路 …………………………………………………………………………… 39
2.4.4 备用电源电路 …………………………………………………………………………… 39
2.4.5 复位电路 ………………………………………………………………………………… 41
2.4.6 启动设置电路 …………………………………………………………………………… 41
2.5 I/O 模块电路 …………………………………………………………………………………… 41
2.5.1 LED 模块 ……………………………………………………………………………… 42
2.5.2 按键模块 ………………………………………………………………………………… 42
2.5.3 显示模块 ………………………………………………………………………………… 42
2.5.4 蜂鸣器模块 ……………………………………………………………………………… 42
2.6 扩展模块电路 …………………………………………………………………………………… 44
2.6.1 温湿度传感器 …………………………………………………………………………… 44
2.6.2 光照传感器 ……………………………………………………………………………… 44
2.6.3 A/D 采样模块 ………………………………………………………………………… 44
2.6.4 EEPROM ……………………………………………………………………………… 45
2.6.5 Flash存储器 …………………………………………………………………………… 45
2.6.6 波形发生器 ……………………………………………………………………………… 45
2.6.7 蓝牙模块 ………………………………………………………………………………… 46
2.6.8 I/O 引脚外接模块 ……………………………………………………………………… 47
2.7 CMSIS-DAP调试器 …………………………………………………………………………… 47
本章小结 ………………………………………………………………………………………………… 48 思考拓展 ………………………………………………………………………………………………… 48
第3章 软件环境配置与使用入门 ………………………………………………………………………… 49
3.1 STM32开发方式 ………………………………………………………………………………… 49
11
3.1.1 STM32Snippets库……………………………………………………………………… 49
3.1.2 标准外设库 ……………………………………………………………………………… 50
3.1.3 STM32CubeMX HAL 库 ……………………………………………………………… 50
3.1.4 STM32CubeMXLL 库 ………………………………………………………………… 51
3.1.5 开发方式比较与选择 …………………………………………………………………… 51
3.2 软件资源安装与配置 …………………………………………………………………………… 52
3.2.1 JRE 安装………………………………………………………………………………… 52
3.2.2 STM32CubeMX 安装 ………………………………………………………………… 52
3.2.3 HAL 固件包安装 ……………………………………………………………………… 54
3.2.4 MDK-ARM 安装 ……………………………………………………………………… 58
3.2.5 器件包安装 ……………………………………………………………………………… 59
3.2.6 MDK-ARM 注册 ……………………………………………………………………… 61
3.2.7 软件安装总结 …………………………………………………………………………… 62
3.3 基于 STM32CubeMX 的 HAL 开发方式 ……………………………………………………… 62
3.3.1 STM32CubeMX 生成初始化代码 …………………………………………………… 62
3.3.2 MDK-ARM 集成开发 ………………………………………………………………… 67
3.4 CMSIS-DAP调试器使用 ……………………………………………………………………… 74
3.4.1 调试器连接与驱动安装 ………………………………………………………………… 74
3.4.2 调试选项设置与程序下载 ……………………………………………………………… 75
3.5 开发经验小结---编译器优化与volatile关键字……………………………………………… 77
3.5.1 编译器优化 ……………………………………………………………………………… 77
3.5.2 volatile关键字 ………………………………………………………………………… 77 本章小结 ………………………………………………………………………………………………… 77 思考拓展 ………………………………………………………………………………………………… 78
第二篇 基 本 外 设
第4章 通用输入输出端口 ………………………………………………………………………………… 80
4.1 GPIO 概述及引脚命名 ………………………………………………………………………… 80
4.2 GPIO 内部结构 ………………………………………………………………………………… 80
4.2.1 输入驱动器 ……………………………………………………………………………… 80
4.2.2 输出驱动器 ……………………………………………………………………………… 81
4.3 GPIO 工作模式 ………………………………………………………………………………… 82
4.3.1 输入浮空 ………………………………………………………………………………… 82
4.3.2 输入上拉 ………………………………………………………………………………… 82
4.3.3 输入下拉 ………………………………………………………………………………… 82
4.3.4 模拟输入 ………………………………………………………………………………… 82
4.3.5 开漏输出 ………………………………………………………………………………… 84
4.3.6 开漏复用输出 …………………………………………………………………………… 85
4.3.7 推挽式输出 ……………………………………………………………………………… 86
12
4.3.8 推挽式复用输出 ………………………………………………………………………… 86
4.3.9 工作模式选择 …………………………………………………………………………… 86
4.4 GPIO 输出速度 ………………………………………………………………………………… 87
4.5 I/O 引脚复用及映射 …………………………………………………………………………… 88
4.6 GPIO 控制寄存器 ……………………………………………………………………………… 89
4.7 GPIO 控制寄存器配置实例 …………………………………………………………………… 94
4.8 寄存器版 LED 灯闪烁工程 ……………………………………………………………………… 96
4.8.1 创建寄存器版工程模板 ………………………………………………………………… 96
4.8.2 LED 灯闪烁程序设计 ………………………………………………………………… 97
4.9 开发经验小结---MDK 中的 C 语言数据类型 ……………………………………………… 98
本章小结 ………………………………………………………………………………………………… 99 思考拓展 ………………………………………………………………………………………………… 99
第5章 LED流水灯与SysTick定时器 ………………………………………………………………… 100
5.1 GPIO 输出库函数 ……………………………………………………………………………… 100
5.1.1 GPIO 外设时钟使能 ………………………………………………………………… 100
5.1.2 函数 HAL_GPIO_Init()……………………………………………………………… 100
5.1.3 函数 HAL_GPIO_DeInit() ………………………………………………………… 102
5.1.4 函数 HAL_GPIO_WritePin() ……………………………………………………… 103
5.1.5 函数 HAL_GPIO_TogglePin()……………………………………………………… 103
5.1.6 输出寄存器访问 ……………………………………………………………………… 103
5.2 LED 流水灯控制 ……………………………………………………………………………… 104
5.3 SysTick定时器 ………………………………………………………………………………… 106
5.3.1 SysTick定时器概述 ………………………………………………………………… 106
5.3.2 SysTick定时器寄存器 ……………………………………………………………… 106
5.3.3 延时函数 HAL_Delay()……………………………………………………………… 107
5.3.4 HAL_Delay()延时实例 ……………………………………………………………… 110
5.3.5 微秒级延时的实现 …………………………………………………………………… 110
5.3.6 综合延时程序实例 …………………………………………………………………… 111
5.4 开发经验小结---C 语言中的位运算 ………………………………………………………… 112
5.4.1 位运算符和位运算 …………………………………………………………………… 112
5.4.2 嵌入式系统位运算实例 ……………………………………………………………… 114 本章小结 ……………………………………………………………………………………………… 114 思考拓展 ……………………………………………………………………………………………… 115
第6章 按键输入与蜂鸣器 ……………………………………………………………………………… 116
6.1 GPIO 输入库函数 ……………………………………………………………………………… 116
6.1.1 函数 HAL_GPIO_ReadPin()………………………………………………………… 116
6.1.2 输入数据寄存器访问 ………………………………………………………………… 116
6.1.3 函数 HAL_GPIO_LockPin()………………………………………………………… 117
13
6.2 独立按键控制蜂鸣器 …………………………………………………………………………… 117
6.2.1 电路原理 ……………………………………………………………………………… 117
6.2.2 按键消抖 ……………………………………………………………………………… 117
6.2.3 项目实施 ……………………………………………………………………………… 118
6.3 矩阵键盘扫描 …………………………………………………………………………………… 121
6.3.1 矩阵键盘电路 ………………………………………………………………………… 121
6.3.2 矩阵键盘扫描原理 …………………………………………………………………… 121
6.3.3 矩阵键盘实例 ………………………………………………………………………… 121
6.4 开发经验小结---复合数据类型 ……………………………………………………………… 123
6.4.1 结构体数据类型 ……………………………………………………………………… 123
6.4.2 枚举数据类型 ………………………………………………………………………… 126 本章小结 ……………………………………………………………………………………………… 127 思考拓展 ……………………………………………………………………………………………… 127
第7章 FSMC总线与双显示终端 ……………………………………………………………………… 128
7.1 FSMC 总线 ……………………………………………………………………………………… 128
7.2 硬件系统设计 …………………………………………………………………………………… 129
7.2.1 硬件结构框图 ………………………………………………………………………… 129
7.2.2 FSMC 与 TFTLCD 连接 …………………………………………………………… 130
7.2.3 FSMC 与数码管连接 ………………………………………………………………… 132
7.3 数码管接口技术 ………………………………………………………………………………… 133
7.3.1 数码管工作原理 ……………………………………………………………………… 133
7.3.2 数码管编码方式 ……………………………………………………………………… 133
7.3.3 数码管显示方式 ……………………………………………………………………… 134
7.4 TFTLCD 驱动 ………………………………………………………………………………… 134
7.4.1 ILI9341颜色体系……………………………………………………………………… 135
7.4.2 ILI9341常用命令……………………………………………………………………… 135
7.5 项目实例 ………………………………………………………………………………………… 138
7.5.1 FSMC 读写时序 ……………………………………………………………………… 138
7.5.2 FSMC 初始化 ………………………………………………………………………… 138
7.5.3 数码管动态显示学号 ………………………………………………………………… 140
7.5.4 数码管动态显示时间 ………………………………………………………………… 144
7.5.5 LCD 驱动程序 ………………………………………………………………………… 145
7.5.6 LCD 英文显示 ………………………………………………………………………… 150
7.5.7 LCD 中文信息显示 …………………………………………………………………… 152
7.6 开发经验小结---C 语言指针及其类型转换 ………………………………………………… 154
7.6.1 指针基本概念 ………………………………………………………………………… 154
7.6.2 指针类型转换 ………………………………………………………………………… 156 本章小结 ……………………………………………………………………………………………… 157 思考拓展 ……………………………………………………………………………………………… 158
14
第8章 中断系统与基本应用 …………………………………………………………………………… 159
8.1 中断的基本概念 ………………………………………………………………………………… 159
8.1.1 中断的定义 …………………………………………………………………………… 159
8.1.2 中断的优点与应用 …………………………………………………………………… 159
8.1.3 中断源与中断屏蔽 …………………………………………………………………… 160
8.1.4 中断处理过程 ………………………………………………………………………… 161
8.1.5 中断优先级与中断嵌套 ……………………………………………………………… 161
8.2 STM32F407中断系统 ………………………………………………………………………… 162
8.2.1 嵌套向量中断控制器 ………………………………………………………………… 162
8.2.2 STM32F407中断优先级……………………………………………………………… 162
8.2.3 STM32F407中断向量表……………………………………………………………… 163
8.2.4 STM32F407中断服务函数…………………………………………………………… 166
8.3 STM32F407外部中断/事件控制器 EXTI…………………………………………………… 167
8.3.1 EXTI内部结构 ……………………………………………………………………… 167
8.3.2 EXTI工作原理 ……………………………………………………………………… 168
8.3.3 EXTI主要特性 ……………………………………………………………………… 169
8.4 STM32F407外部中断 HAL 库函数 ………………………………………………………… 169
8.4.1 STM32F407的 NVIC 相关库函数…………………………………………………… 169
8.4.2 STM32F407的 EXTI相关库函数 …………………………………………………… 170
8.5 EXTI项目实例 ………………………………………………………………………………… 172
8.5.1 项目分析 ……………………………………………………………………………… 172
8.5.2 项目实施 ……………………………………………………………………………… 172
8.5.3 ISR 框架总结 ………………………………………………………………………… 176
8.6 开发经验小结---前/后台嵌入式软件架构 ………………………………………………… 177
本章小结 ……………………………………………………………………………………………… 177 思考拓展 ……………………………………………………………………………………………… 178
第9章 基本定时器 ……………………………………………………………………………………… 179
9.1 STM32F407定时器概述 ……………………………………………………………………… 179
9.2 基本定时器 ……………………………………………………………………………………… 180
9.2.1 基本定时器简介 ……………………………………………………………………… 180
9.2.2 基本定时器的主要特性 ……………………………………………………………… 180
9.2.3 基本定时器的功能 …………………………………………………………………… 180
9.2.4 基本定时器寄存器 …………………………………………………………………… 182
9.3 基本定时器的 HAL 驱动 ……………………………………………………………………… 183
9.3.1 基本定时器主要 HAL 驱动函数 …………………………………………………… 183
9.3.2 定时器通用操作宏函数 ……………………………………………………………… 185
9.3.3 定时器中断处理函数 ………………………………………………………………… 186
9.4 项目实例 ………………………………………………………………………………………… 188
15
9.4.1 数字电子钟 …………………………………………………………………………… 188
9.4.2 定时器刷新数码管 …………………………………………………………………… 193
9.4.3 定时器矩阵键盘扫描 ………………………………………………………………… 195 本章小结 ……………………………………………………………………………………………… 199 思考拓展 ……………………………………………………………………………………………… 200
第10章 通用定时器 ……………………………………………………………………………………… 201
10.1 通用定时器功能概述 ………………………………………………………………………… 201
10.1.1 通用定时器主要特性 ……………………………………………………………… 201
10.1.2 通用定时器功能描述 ……………………………………………………………… 202
10.2 通用定时器工作模式与 HAL 驱动 ………………………………………………………… 205
10.2.1 PWM 输出模式 …………………………………………………………………… 205
10.2.2 输出比较模式 ……………………………………………………………………… 207
10.2.3 输入捕获模式 ……………………………………………………………………… 208
10.2.4 PWM 输入模式 …………………………………………………………………… 210
10.3 通用定时器寄存器 …………………………………………………………………………… 210
10.4 通用定时器中断事件和回调函数 …………………………………………………………… 211
10.5 项目实例 ……………………………………………………………………………………… 213
10.5.1 PWM 呼吸灯 ……………………………………………………………………… 213
10.5.2 输出比较模式输出方波信号 ……………………………………………………… 217
10.5.3 输入捕获模式测量脉冲频率 ……………………………………………………… 220
10.5.4 PWM 波频率和占空比测量 ……………………………………………………… 224 本章小结 ……………………………………………………………………………………………… 230 思考拓展 ……………………………………………………………………………………………… 230
第三篇 扩 展 外 设
第11章 串行通信接口USART ………………………………………………………………………… 232
11.1 数据通信基本概念 …………………………………………………………………………… 232
11.1.1 并行通信与串行通信 ……………………………………………………………… 232
11.1.2 异步通信与同步通信 ……………………………………………………………… 232
11.1.3 串行通信的制式 …………………………………………………………………… 233
11.1.4 串行通信的校验 …………………………………………………………………… 234
11.1.5 串行通信的波特率 ………………………………………………………………… 234
11.2 USART 工作原理 …………………………………………………………………………… 234
11.2.1 USART 介绍 ……………………………………………………………………… 234
11.2.2 USART 功能特性 ………………………………………………………………… 235
11.2.3 UART 通信协议 ………………………………………………………………… 236
11.2.4 USART 中断 ……………………………………………………………………… 238
16
11.2.5 USART 相关寄存器 ……………………………………………………………… 239
11.3 UART 的 HAL 驱动………………………………………………………………………… 239
11.3.1 UART 常用功能函数 …………………………………………………………… 239
11.3.2 UART 常用的宏函数 …………………………………………………………… 242
11.3.3 UART 中断事件与回调函数 …………………………………………………… 243
11.4 串口通信项目实例 …………………………………………………………………………… 244
11.4.1 项目分析 …………………………………………………………………………… 244
11.4.2 微控制器端程序设计 ……………………………………………………………… 244
11.4.3 上位机程序设计 …………………………………………………………………… 249
11.4.4 串口通信调试 ……………………………………………………………………… 250
11.5 开发经验小结---printf()重定向函数 …………………………………………………… 252
11.5.1 重写fputc()函数 ………………………………………………………………… 252
11.5.2 选择使用 MicroLIB ……………………………………………………………… 252
11.5.3 printf()串口打印信息 …………………………………………………………… 252 本章小结 ……………………………………………………………………………………………… 253 思考拓展 ……………………………………………………………………………………………… 253
第12章 SPI与字库存储 ………………………………………………………………………………… 254
12.1 SPI通信原理 ………………………………………………………………………………… 254
12.1.1 SPI ………………………………………………………………………………… 254
12.1.2 SPI互连 …………………………………………………………………………… 255
12.2 STM32F407的 SPI工作原理 ……………………………………………………………… 256
12.2.1 SPI主要特征 ……………………………………………………………………… 256
12.2.2 SPI内部结构 ……………………………………………………………………… 257
12.2.3 时钟信号的相位和极性 …………………………………………………………… 258
12.2.4 数据帧格式 ………………………………………………………………………… 259
12.3 Flash存储芯片 W25Q128 ………………………………………………………………… 259
12.3.1 硬件接口和连接 …………………………………………………………………… 259
12.3.2 存储空间划分 ……………………………………………………………………… 260
12.3.3 数据读写原则 ……………………………………………………………………… 260
12.3.4 存储器操作指令 …………………………………………………………………… 260
12.4 SPI的 HAL 库驱动 ………………………………………………………………………… 261
12.4.1 SPI寄存器操作的宏函数 ………………………………………………………… 261
12.4.2 SPI初始化和阻塞式数据传输 …………………………………………………… 262
12.4.3 中断和 DMA 方式数据传输 ……………………………………………………… 263
12.5 SPIFlash读写测试 ………………………………………………………………………… 264
12.5.1 项目分析 …………………………………………………………………………… 264
12.5.2 项目实施 …………………………………………………………………………… 264
12.6 中文字库存储 ………………………………………………………………………………… 271
12.6.1 需求分析 …………………………………………………………………………… 271
17
12.6.2 字库生成与合并 …………………………………………………………………… 271
12.6.3 字库存储 …………………………………………………………………………… 273
12.6.4 LCD 中文驱动程序 ……………………………………………………………… 274
12.7 基于 SPI闪存的中文显示 …………………………………………………………………… 276
12.8 开发经验小结---条件编译 ………………………………………………………………… 276
12.8.1 命令形式 …………………………………………………………………………… 277
12.8.2 应用示例 …………………………………………………………………………… 277 本章小结 ……………………………………………………………………………………………… 277 思考拓展 ……………………………………………………………………………………………… 278
第13章 I2C接口与EEPROM ………………………………………………………………………… 279
13.1 I2C 通信原理 ………………………………………………………………………………… 279
13.1.1 I2C 串行总线概述 ………………………………………………………………… 279
13.1.2 I2C 总线的数据传送 ……………………………………………………………… 280
13.2 STM32F407的I2C 接口 …………………………………………………………………… 283
13.2.1 STM32F407的I2C 主要特性 …………………………………………………… 283
13.2.2 STM32F407的I2C 内部结构 …………………………………………………… 284
13.2.3 STM32F407的I2C 工作模式 …………………………………………………… 285
13.3 I2C 接口的 HAL 库驱动 …………………………………………………………………… 285
13.3.1 I2C 接口的初始化 ………………………………………………………………… 285
13.3.2 阻塞式数据传输 …………………………………………………………………… 285
13.3.3 中断方式数据传输 ………………………………………………………………… 287
13.3.4 DMA 方式数据传输 ……………………………………………………………… 288
13.4 EEPROM 存储芯片24C02 ………………………………………………………………… 288
13.4.1 芯片概述与硬件连接 ……………………………………………………………… 288
13.4.2 接口与通信协议 …………………………………………………………………… 289
13.5 EEPROM 存储开机密码项目 ……………………………………………………………… 291
13.5.1 项目分析 …………………………………………………………………………… 291
13.5.2 项目实施 …………………………………………………………………………… 291 本章小结 ……………………………………………………………………………………………… 295 思考拓展 ……………………………………………………………………………………………… 296
第14章 模/数转换与光照传感器 ……………………………………………………………………… 297
14.1 ADC 概述 …………………………………………………………………………………… 297
14.1.1 ADC 基本原理 …………………………………………………………………… 297
14.1.2 ADC 性能参数 …………………………………………………………………… 298
14.1.3 ADC 主要类型 …………………………………………………………………… 299
14.2 STM32F407的 ADC 工作原理 …………………………………………………………… 300
14.2.1 主要特征 …………………………………………………………………………… 300
14.2.2 内部结构 …………………………………………………………………………… 300
18
14.2.3 通道及分组 ………………………………………………………………………… 301
14.2.4 时序图 ……………………………………………………………………………… 303
14.2.5 数据对齐 …………………………………………………………………………… 303
14.2.6 校准 ………………………………………………………………………………… 303
14.2.7 转换时间 …………………………………………………………………………… 304
14.2.8 转换模式 …………………………………………………………………………… 304
14.2.9 外部触发转换和触发极性 ………………………………………………………… 305
14.2.10 中断和 DMA 请求 ……………………………………………………………… 307
14.2.11 多重 ADC 模式…………………………………………………………………… 307
14.3 ADC 的 HAL 库驱动 ……………………………………………………………………… 307
14.3.1 规则通道驱动 ……………………………………………………………………… 307
14.3.2 注入通道驱动 ……………………………………………………………………… 310
14.3.3 多重 ADC 驱动 …………………………………………………………………… 310
14.4 项目实例 ……………………………………………………………………………………… 310
14.4.1 多通道轮询方式模拟信号采集 …………………………………………………… 310
14.4.2 光照传感器模拟与数字同步控制 ………………………………………………… 315 本章小结 ……………………………………………………………………………………………… 317 思考拓展 ……………………………………………………………………………………………… 318
第15章 直接存储器访问 ………………………………………………………………………………… 319
15.1 DMA 的基本概念 …………………………………………………………………………… 319
15.1.1 DMA 的由来 ……………………………………………………………………… 319
15.1.2 DMA 的定义 ……………………………………………………………………… 319
15.1.3 DMA 的优点 ……………………………………………………………………… 320
15.2 STM32F407的 DMA 工作原理 …………………………………………………………… 320
15.2.1 DMA 简介 ………………………………………………………………………… 320
15.2.2 DMA 通道选择 …………………………………………………………………… 320
15.2.3 DMA 主要特性 …………………………………………………………………… 322
15.2.4 DMA 传输属性 …………………………………………………………………… 323
15.3 DMA 的 HAL 库驱动 ……………………………………………………………………… 324
15.3.1 DMA 的 HAL 函数概述 ………………………………………………………… 324
15.3.2 DMA 传输初始化配置 …………………………………………………………… 325
15.3.3 启动 DMA 数据传输 ……………………………………………………………… 326
15.3.4 DMA 中断 ………………………………………………………………………… 327
15.4 项目实例 ……………………………………………………………………………………… 328
15.4.1 USART 接口 DMA 传输 ………………………………………………………… 328
15.4.2 定时器触发 DMA 传输多通道模拟量采集 ……………………………………… 335
15.4.3 三重 ADC 同步转换 DMA 传输 ………………………………………………… 339
15.5 开发经验小结---轮询、中断、DMA ……………………………………………………… 343
15.5.1 轮询 ………………………………………………………………………………… 343
19
15.5.2 中断 ………………………………………………………………………………… 343
15.5.3 DMA ……………………………………………………………………………… 343 本章小结 ……………………………………………………………………………………………… 344 思考拓展 ……………………………………………………………………………………………… 344
第16章 数/模转换器 …………………………………………………………………………………… 345
16.1 DAC 概述 …………………………………………………………………………………… 345
16.1.1 DAC 基本原理 …………………………………………………………………… 345
16.1.2 DAC 性能参数 …………………………………………………………………… 346
16.2 STM32F407的 DAC 工作原理 …………………………………………………………… 347
16.2.1 DAC 结构与特性 ………………………………………………………………… 347
16.2.2 DAC 功能说明 …………………………………………………………………… 348
16.3 DAC 的 HAL 库驱动 ……………………………………………………………………… 350
16.3.1 DAC 驱动宏函数 ………………………………………………………………… 350
16.3.2 DAC 驱动功能函数 ……………………………………………………………… 351
16.4 项目实例 ……………………………………………………………………………………… 354
16.4.1 软件触发 D/A 转换 ……………………………………………………………… 354
16.4.2 三角波输出 ………………………………………………………………………… 357
16.4.3 使用 DMA 输出正弦波信号 ……………………………………………………… 360 本章小结 ……………………………………………………………………………………………… 364 思考拓展 ……………………………………………………………………………………………… 364
第17章 位带操作与温湿度传感器 ……………………………………………………………………… 365
17.1 STM32位带操作 …………………………………………………………………………… 365
17.1.1 位带介绍 …………………………………………………………………………… 365
17.1.2 位带区与位带别名区地址转换 …………………………………………………… 365
17.1.3 位带操作宏定义 …………………………………………………………………… 367
17.2 温湿度传感器 DHT11 ……………………………………………………………………… 368
17.2.1 DHT11功能说明 ………………………………………………………………… 368
17.2.2 DHT11单总线通信协议 ………………………………………………………… 368
17.3 温湿度实时监测 ……………………………………………………………………………… 372
17.3.1 项目分析 …………………………………………………………………………… 372
17.3.2 项目实施 …………………………………………………………………………… 372 本章小结 ……………………………………………………………………………………………… 377 思考拓展 ……………………………………………………………………………………………… 377
第18章 RTC与蓝牙通信 ……………………………………………………………………………… 378
18.1 RTC 概述 …………………………………………………………………………………… 378
18.1.1 RTC 功能 ………………………………………………………………………… 378
18.1.2 RTC 工作原理 …………………………………………………………………… 378
20
18.1.3 RTC 的中断和复用引脚 ………………………………………………………… 381
18.2 RTC 的 HAL 库驱动………………………………………………………………………… 382
18.2.1 RTC 的 HAL 基础驱动程序……………………………………………………… 382
18.2.2 周期唤醒相关 HAL 函数 ………………………………………………………… 385
18.2.3 闹钟相关 HAL 函数 ……………………………………………………………… 386
18.3 备份寄存器 …………………………………………………………………………………… 387
18.4 RTC 日历和闹钟项目 ……………………………………………………………………… 387
18.4.1 项目分析 …………………………………………………………………………… 387
18.4.2 项目实施 …………………………………………………………………………… 388
18.5 蓝牙模块通信 ………………………………………………………………………………… 397
18.5.1 蓝牙通信概述 ……………………………………………………………………… 397
18.5.2 蓝牙透明传输原理 ………………………………………………………………… 397
18.6 无线时间同步电子万年历 …………………………………………………………………… 398
18.6.1 项目分析 …………………………………………………………………………… 398
18.6.2 项目实施 …………………………………………………………………………… 399 本章小结 ……………………………………………………………………………………………… 404 思考拓展 ……………………………………………………………………………………………… 405
附录A ASCII码表 ……………………………………………………………………………………… 406 附录B 运算符和结合性关系表 ………………………………………………………………………… 407 附录C STM32F407微控制器引脚定义表 ……………………………………………………………… 409 参考文献 …………………………………………………………………………………………………… 416
展开全部
作者简介
黄克亚,苏州大学副教授、软件设计师、硕士生导师,主要从事智能控制、嵌入式系统开发等领域的教学和科研工作。长期讲授“电工电子技术”“单片机原理与控制技术”“微机原理及应用”“嵌入式系统开发与实践”“传感器应用技术”等课程。近年来主持省级课题2项,获授权发明专利2项,登记软件著作权4项,发表SCI/EI/中文核心论文12篇。指导学生获全国软件和信息技术专业人才大赛全国总决赛二等奖2项、全国大学生电子设计竞赛江苏省赛区二等奖2项、江苏省本专科优秀毕业设计(论文)三等奖1项。
预估到手价 ×
预估到手价是按参与促销活动、以最优惠的购买方案计算出的价格(不含优惠券部分),仅供参考,未必等同于实际到手价。
确定