全书共18章,分为三篇:第一篇(第1~3章)为系统平台模块,介绍嵌入式系统定义、嵌入式硬件平台和软件环境;第二篇(第4~10章)为基本外设模块,介绍STM32嵌入式系统常用的外设模块,包括GPIO、中断、定时器、PWM和嵌入式系统接口技术;第三篇(第11~18章)为扩展外设模块,介绍STM32嵌入式系统高级外设模块和典型的传感器,包括USART、SPI、W25Q128、I2C、EEPROM、ADC、DMA、DAC、RTC、DHT11等。
系统论述基于STM32CubeMX的HAL开发方法。
以读者认知过程为导向编排组织书中章节内容。
项目引领,任务驱动,培养读者工程实践能力。
构建立体化的教学资源,便于课程教学与项目开发。
本书详细阐述了基于ARM Cortex-M4内核的STM32F407微控制器嵌入式系统硬件设计方法和软件开发技术。全书共有十八章,划分为三篇:第一篇(第1~3章)为系统平台,讲述嵌入式系统定义、嵌入式硬件平台和软件环境配置与使用入门。第二篇(第4~10章)为基本外设,分别对STM32嵌入式系统最常用的外设模块进行介绍,包括GPIO、中断、定时器、PWM和嵌入式系统接口技术。第三篇(第11~18章)为扩展外设,分别对STM32嵌入式系统高级外设模块和典型传感器进行讲解,包括USART、SPI、W25Q128、IIC、EEPROM 、ADC、DMA、DAC、RTC和DHT11等。
第一篇系 统 平 台
第1章ARM CortexM4嵌入式系统
1.1嵌入式系统概述
1.1.1什么是嵌入式系统
1.1.2嵌入式系统和通用计算机比较
1.1.3嵌入式系统的特点
1.1.4嵌入式系统的应用领域
1.1.5嵌入式系统范例
1.2嵌入式系统的硬件
1.2.1嵌入式处理器的分类
1.2.2嵌入式处理器的技术指标
1.2.3嵌入式存储器
1.2.4嵌入式I/O设备
1.2.5嵌入式I/O接口
1.3ARM CortexM4 处理器
1.3.1ARM公司
1.3.2ARM处理器
1.4STM32微控制器
1.4.1从ARM CortexM内核到基于ARM CortexM的MCU
1.4.2STM32微控制器产品线
1.4.3STM32微控制器命名规则
1.5嵌入式系统的软件
1.5.1无操作系统的嵌入式软件
1.5.2带操作系统的嵌入式软件
1.5.3典型嵌入式操作系统
1.5.4软件结构选择建议
本章小结
思考拓展
第2章STM32F407与实验平台
2.1STM32F407微控制器
2.1.1STM32F407/STM32F417系列
2.1.2STM32F407功能特性
2.1.3STM32F407内部结构
2.1.4STM32F407存储器映射
2.1.5STM32F407时钟系统
2.1.6STM32F407引脚
2.2开发板总体概况
2.2.1开发板设计背景
2.2.2开发板总体介绍
2.3电源电路
2.3.1电源电路原理图
2.3.2电源电路工作原理
2.4核心板电路
2.4.1芯片电源电路
2.4.2CPU滤波电路
2.4.3外接晶振电路
2.4.4备用电源电路
2.4.5复位电路
2.4.6启动设置电路
2.5I/O模块电路
2.5.1LED模块
2.5.2按键模块
2.5.3显示模块
2.5.4蜂鸣器模块
2.6扩展模块电路
2.6.1温湿度传感器
2.6.2光照传感器
2.6.3A/D采样模块
2.6.4EEPROM
2.6.5Flash存储器
2.6.6波形发生器
2.6.7蓝牙模块
2.6.8I/O引脚外接模块
2.7CMSISDAP调试器
本章小结
思考拓展
第3章软件环境配置与使用入门
3.1STM32开发方式
3.1.1STM32Snippets库
3.1.2标准外设库
3.1.3STM32CubeMX HAL库
3.1.4STM32CubeMX LL库
3.1.5开发方式比较与选择
3.2软件资源安装与配置
3.2.1JRE安装
3.2.2STM32CubeMX安装
3.2.3HAL固件包安装
3.2.4MDKARM安装
3.2.5器件包安装
3.2.6MDKARM注册
3.2.7软件安装总结
3.3基于STM32CubeMX的HAL开发方式
3.3.1STM32CubeMX生成初始化代码
3.3.2MDKARM集成开发
3.4CMSISDAP调试器使用
3.4.1调试器连接与驱动安装
3.4.2调试选项设置与程序下载
3.5开发经验小结——编译器优化与volatile关键字
3.5.1编译器优化
3.5.2volatile关键字
本章小结
思考拓展
第二篇基 本 外 设
第4章通用输入输出端口
4.1GPIO概述及引脚命名
4.2GPIO内部结构
4.2.1输入驱动器
4.2.2输出驱动器
4.3GPIO工作模式
4.3.1输入浮空
4.3.2输入上拉
4.3.3输入下拉
4.3.4模拟输入
4.3.5开漏输出
4.3.6开漏复用输出
4.3.7推挽式输出
4.3.8推挽式复用输出
4.3.9工作模式选择
4.4GPIO输出速度
4.5I/O引脚复用及映射
4.6GPIO控制寄存器
4.7GPIO控制寄存器配置实例
4.8寄存器版LED灯闪烁工程
4.8.1创建寄存器版工程模板
4.8.2LED灯闪烁程序设计
4.9开发经验小结——MDK中的C语言数据类型
本章小结
思考拓展
第5章LED流水灯与SysTick定时器
5.1GPIO输出库函数
5.1.1GPIO外设时钟使能
5.1.2函数HAL_GPIO_Init()
5.1.3函数HAL_GPIO_DeInit()
5.1.4函数HAL_GPIO_WritePin()
5.1.5函数HAL_GPIO_TogglePin()
5.1.6输出寄存器访问
5.2LED流水灯控制
5.3SysTick定时器
5.3.1SysTick定时器概述
5.3.2SysTick定时器寄存器
5.3.3延时函数HAL_Delay()
5.3.4HAL_Delay()延时实例
5.3.5微秒级延时的实现
5.3.6综合延时程序实例
5.4开发经验小结——C语言中的位运算
5.4.1位运算符和位运算
5.4.2嵌入式系统位运算实例
本章小结
思考拓展
第6章按键输入与蜂鸣器
6.1GPIO输入库函数
6.1.1函数HAL_GPIO_ReadPin()
6.1.2输入数据寄存器访问
6.1.3函数HAL_GPIO_LockPin()
6.2独立按键控制蜂鸣器
6.2.1电路原理
6.2.2按键消抖
6.2.3项目实施
6.3矩阵键盘扫描
6.3.1矩阵键盘电路
6.3.2矩阵键盘扫描原理
6.3.3矩阵键盘实例
6.4开发经验小结——复合数据类型
6.4.1结构体数据类型
6.4.2枚举数据类型
本章小结
思考拓展
第7章FSMC总线与双显示终端
7.1FSMC总线
7.2硬件系统设计
7.2.1硬件结构框图
7.2.2FSMC与TFT LCD连接
7.2.3FSMC与数码管连接
7.3数码管接口技术
7.3.1数码管工作原理
7.3.2数码管编码方式
7.3.3数码管显示方式
7.4TFT LCD驱动
7.4.1ILI9341颜色体系
7.4.2ILI9341常用命令
7.5项目实例
7.5.1FSMC读写时序
7.5.2FSMC初始化
7.5.3数码管动态显示学号
7.5.4数码管动态显示时间
7.5.5LCD驱动程序
7.5.6LCD英文显示
7.5.7LCD中文信息显示
7.6开发经验小结——C语言指针及其类型转换
7.6.1指针基本概念
7.6.2指针类型转换
本章小结
思考拓展
第8章中断系统与基本应用
8.1中断的基本概念
8.1.1中断的定义
8.1.2中断的优点与应用
8.1.3中断源与中断屏蔽
8.1.4中断处理过程
8.1.5中断优先级与中断嵌套
8.2STM32F407中断系统
8.2.1嵌套向量中断控制器
8.2.2STM32F407中断优先级
8.2.3STM32F407中断向量表
8.2.4STM32F407中断服务函数
8.3STM32F407外部中断/事件控制器EXTI
8.3.1EXTI内部结构
8.3.2EXTI工作原理
8.3.3EXTI主要特性
8.4STM32F407外部中断HAL库函数
8.4.1STM32F407的NVIC相关库函数
8.4.2STM32F407的EXTI相关库函数
8.5EXTI项目实例
8.5.1项目分析
8.5.2项目实施
8.5.3ISR框架总结
8.6开发经验小结——前/后台嵌入式软件架构
本章小结
思考拓展
第9章基本定时器
9.1STM32F407定时器概述
9.2基本定时器
9.2.1基本定时器简介
9.2.2基本定时器的主要特性
9.2.3基本定时器的功能
9.2.4基本定时器寄存器
9.3基本定时器的HAL驱动
9.3.1基本定时器主要HAL驱动函数
9.3.2定时器通用操作宏函数
9.3.3定时器中断处理函数
9.4项目实例
9.4.1数字电子钟
9.4.2定时器刷新数码管
9.4.3定时器矩阵键盘扫描
本章小结
思考拓展
第10章通用定时器
10.1通用定时器功能概述
10.1.1通用定时器主要特性
10.1.2通用定时器功能描述
10.2通用定时器工作模式与HAL驱动
10.2.1PWM输出模式
10.2.2输出比较模式
10.2.3输入捕获模式
10.2.4PWM输入模式
10.3通用定时器寄存器
10.4通用定时器中断事件和回调函数
10.5项目实例
10.5.1PWM呼吸灯
10.5.2输出比较模式输出方波信号
10.5.3输入捕获模式测量脉冲频率
10.5.4PWM波频率和占空比测量
本章小结
思考拓展
第三篇扩 展 外 设
第11章串行通信接口USART
11.1数据通信基本概念
11.1.1并行通信与串行通信
11.1.2异步通信与同步通信
11.1.3串行通信的制式
11.1.4串行通信的校验
11.1.5串行通信的波特率
11.2USART工作原理
11.2.1USART介绍
11.2.2USART功能特性
11.2.3UART通信协议
11.2.4USART中断
11.2.5USART相关寄存器
11.3UART的HAL驱动
11.3.1UART常用功能函数
11.3.2UART常用的宏函数
11.3.3UART中断事件与回调函数
11.4串口通信项目实例
11.4.1项目分析
11.4.2微控制器端程序设计
11.4.3上位机程序设计
11.4.4串口通信调试
11.5开发经验小结——printf()重定向函数
11.5.1重写fputc()函数
11.5.2选择使用Micro LIB
11.5.3printf()串口打印信息
本章小结
思考拓展
第12章SPI与字库存储
12.1SPI通信原理
12.1.1SPI
12.1.2SPI互连
12.2STM32F407的SPI工作原理
12.2.1SPI主要特征
12.2.2SPI内部结构
12.2.3时钟信号的相位和极性
12.2.4数据帧格式
12.3Flash存储芯片W25Q128
12.3.1硬件接口和连接
12.3.2存储空间划分
12.3.3数据读写原则
12.3.4存储器操作指令
12.4SPI的HAL库驱动
12.4.1SPI寄存器操作的宏函数
12.4.2SPI初始化和阻塞式数据传输
12.4.3中断和DMA方式数据传输
12.5SPI Flash读写测试
12.5.1项目分析
12.5.2项目实施
12.6中文字库存储
12.6.1需求分析
12.6.2字库生成与合并
12.6.3字库存储
12.6.4LCD中文驱动程序
12.7基于SPI闪存的中文显示
12.8开发经验小结——条件编译
12.8.1命令形式
12.8.2应用示例
本章小结
思考拓展
第13章I2C接口与EEPROM
13.1I2C通信原理
13.1.1I2C串行总线概述
13.1.2I2C总线的数据传送
13.2STM32F407的I2C接口
13.2.1STM32F407的I2C主要特性
13.2.2STM32F407的I2C内部结构
13.2.3STM32F407的I2C工作模式
13.3I2C接口的HAL库驱动
13.3.1I2C接口的初始化
13.3.2阻塞式数据传输
13.3.3中断方式数据传输
13.3.4DMA方式数据传输
13.4EEPROM存储芯片24C02
13.4.1芯片概述与硬件连接
13.4.2接口与通信协议
13.5EEPROM存储开机密码项目
13.5.1项目分析
13.5.2项目实施
本章小结
思考拓展
第14章模/数转换与光照传感器
14.1ADC概述
14.1.1ADC基本原理
14.1.2ADC性能参数
14.1.3ADC主要类型
14.2STM32F407的ADC工作原理
14.2.1主要特征
14.2.2内部结构
14.2.3通道及分组
14.2.4时序图
14.2.5数据对齐
14.2.6校准
14.2.7转换时间
14.2.8转换模式
14.2.9外部触发转换和触发极性
14.2.10中断和DMA请求
14.2.11多重ADC模式
14.3ADC的HAL库驱动
14.3.1规则通道驱动
14.3.2注入通道驱动
14.3.3多重ADC驱动
14.4项目实例
14.4.1多通道轮询方式模拟信号采集
14.4.2光照传感器模拟与数字同步控制
本章小结
思考拓展
第15章直接存储器访问
15.1DMA的基本概念
15.1.1DMA的由来
15.1.2DMA的定义
15.1.3DMA的优点
15.2STM32F407的DMA工作原理
15.2.1DMA简介
15.2.2DMA通道选择
15.2.3DMA主要特性
15.2.4DMA传输属性
15.3DMA的HAL库驱动
15.3.1DMA的HAL函数概述
15.3.2DMA传输初始化配置
15.3.3启动DMA数据传输
15.3.4DMA中断
15.4项目实例
15.4.1USART接口DMA传输
15.4.2定时器触发DMA传输多通道模拟量采集
15.4.3三重ADC同步转换DMA传输
15.5开发经验小结——轮询、中断、DMA
15.5.1轮询
15.5.2中断
15.5.3DMA
本章小结
思考拓展
第16章数/模转换器
16.1DAC概述
16.1.1DAC基本原理
16.1.2DAC性能参数
16.2STM32F407的DAC工作原理
16.2.1DAC结构与特性
16.2.2DAC功能说明
16.3DAC的HAL库驱动
16.3.1DAC驱动宏函数
16.3.2DAC驱动功能函数
16.4项目实例
16.4.1软件触发D/A转换
16.4.2三角波输出
16.4.3使用DMA输出正弦波信号
本章小结
思考拓展
第17章位带操作与温湿度传感器
17.1STM32位带操作
17.1.1位带介绍
17.1.2位带区与位带别名区地址转换
17.1.3位带操作宏定义
17.2温湿度传感器DHT11
17.2.1DHT11功能说明
17.2.2DHT11单总线通信协议
17.3温湿度实时监测
17.3.1项目分析
17.3.2项目实施
本章小结
思考拓展
第18章RTC与蓝牙通信
18.1RTC概述
18.1.1RTC功能
18.1.2RTC工作原理
18.1.3RTC的中断和复用引脚
18.2RTC的HAL库驱动
18.2.1RTC的HAL基础驱动程序
18.2.2周期唤醒相关HAL函数
18.2.3闹钟相关HAL函数
18.3备份寄存器
18.4RTC日历和闹钟项目
18.4.1项目分析
18.4.2项目实施
18.5蓝牙模块通信
18.5.1蓝牙通信概述
18.5.2蓝牙透明传输原理
18.6无线时间同步电子万年历
18.6.1项目分析
18.6.2项目实施
本章小结
思考拓展
附录AASCII码表
附录B运算符和结合性关系表
附录CSTM32F407微控制器引脚定义表
参考文献
温馨提示:请使用泸西县图书馆的读者帐号和密码进行登录