书刊介绍
《STM32库开发实战指南》内容简介
本书着重讲解STM32F429的外设以及外设的应用,力争全面分析每个外设的功能框图和使用方法,让读者可以零死角地玩转STM32F429。
刘火良:网名野火,嵌入式开发工程师,野火嵌入式开发工作室的创始人,长期从事基于ARMCortex—M系列MCLJ嵌入式开发工作,积累了丰富的实战开发经验。作者在国内最受嵌入式开发工程师欢迎的阿莫电子论坛中担任版主。担任版主期间,为网友贡献了大量的实战开发教程和资料,累计下载量超过3万次,且被广泛转载,深得网友喜爱。
杨森:网名flyleaf,嵌入式开发工程师,野火嵌入式开发工作室发起人,对嵌入式实时操作系统有深入的研究和理解。曾推出《从零开始移植uC/OS到野火STM32开发板》,以全新的视角自上而下讲解uC/OS移植方法,深受网友好评。作品目录
前言
第1章:如何安装KEIL5、1.1、温馨提示
1.2、获取KEIL5安装包
1.3、开始安装KEIL5、1.4、安装STM32芯片包
第2章:如何用DAP仿真器下载程序
2.1、仿真器简介
2.2、硬件连接
2.3、仿真器配置
2.4、选择目标板
2.5、下载程序
第3章:初识STM32、3.1、什么是STM32、3.2、STM32能做什么
3.2.1、智能手环
3.2.2、微型四轴飞行器
3.2.3、淘宝众筹
3.3、STM32选型
3.3.1、STM32分类
3.3.2、STM32命名方法
3.3.3、选择合适的MCU
第4章:寄存器
4.1、寄存器简介
4.2、STM32的外观
4.3、芯片里面有什么
4.4、存储器映射
4.5、寄存器映射
4.5.1、STM32的外设地址映射
4.5.2、C语言对寄存器的封装
第5章:新建工程——寄存器版
5.1、新建本地工程文件夹工程
5.1.1、新建本地工程文件夹
5.1.2、新建工程
5.2、下载程序
第6章:使用寄存器点亮LED
6.1、GPIO简介
6.2、GPIO框图剖析
6.2.1、基本结构分析
6.2.2、GPIO工作模式
6.3、实验:使用寄存器点亮LED
6.3.1、硬件连接
6.3.2、启动文件
6.3.3、stm32f4xx.h文件
6.3.4、main文件
6.3.5、下载验证
第7章:自己写库——构建库函数雏形
7.1、STM32函数库简介
7.2、采用库来开发及学习的原因
7.3、实验:构建库函数雏形
7.3.1、修改寄存器地址封装
7.3.2、定义访问外设的结构体指针
7.3.3、定义初始化结构体
7.3.4、定义引脚模式的枚举类型
7.3.5、定义GPIO初始化函数
7.3.6、使用函数点亮LED
7.3.7、下载验证
7.3.8、总结
第8章:初识STM32标准库
8.1、CMSIS标准及库层次关系
8.1.1、库目录、文件简介
8.1.2、各库文件间的关系
8.2、使用帮助文档
8.2.1、常用官方资料
8.2.2、初识库函数
第9章:新建工程——库函数版
9.1、新建本地工程文件夹
9.2、新建工程
9.3、配置魔术棒选项卡
9.4、下载器配置
9.5、选择Flash大小
第10章:GPIO输出——使用固件库点亮LED
10.1、硬件设计
10.2、软件设计
10.2.1、编程要点
10.2.2、代码分析
10.2.3、下载验证
10.3、STM32标准库补充知识
第11章:GPIO输入——按键检测
11.1、硬件设计
11.2、软件设计
11.2.1、编程要点
11.2.2、代码分析
11.2.3、下载验证
第12章:GPIO——位带操作
12.1、位带简介
12.1.1、外设位带区
12.1.2、SRAM位带区
12.1.3、位带区和位带别名区地址转换
12.2、GPIO位带操作
第13章:启动文件
13.1、启动文件简介
13.2、查找ARM汇编指令
13.3、启动文件代码讲解
第14章:RCC——使用HSE/HSI配置时钟
14.1、RCC主要作用——时钟部分
14.2、RCC框图剖析——时钟树
14.2.1、系统时钟
14.2.2、其他时钟
14.3、配置系统时钟实验
14.3.1、使用HSE
14.3.2、使用HSI
14.3.3、硬件设计
14.3.4、软件设计
14.3.5、下载验证
第15章:STM32中断应用概览
15.1、异常类型
15.2、NVIC简介
15.2.1、NVIC寄存器简介
15.2.2、NVIC中断配置固件库
15.3、优先级的定义
15.3.1、优先级定义
15.3.2、优先级分组
15.4、中断编程
第16章:EXTI——外部中断/事件控制器
16.1、EXTI简介
16.2、EXTI功能框图
16.3、中断/事件线
16.4、EXTI初始化结构体详解
16.5、外部中断控制实验
16.5.1、硬件设计
16.5.2、软件设计
16.5.3、下载验证
第17章:SysTick——系统定时器
17.1、SysTick简介
17.2、SysTick寄存器介绍
17.3、SysTick定时实验
17.3.1、硬件设计
17.3.2、软件设计
第18章:通信的基本概念
18.1、串行通信与并行通信
18.2、全双工、半双工及单工通信
18.3、同步通信与异步通信
18.4、通信速率
第19章:USART——串口通信
19.1、串口通信协议简介
19.1.1、物理层
19.1.2、协议层
19.2、STM32的USART简介
19.3、USART功能框图
19.4、USART初始化结构体详解
19.5、USART1接发通信实验
19.5.1、硬件设计
19.5.2、软件设计
19.5.3、下载验证
19.6、USART1指令控制RGB彩灯实验
19.6.1、硬件设计
19.6.2、软件设计
19.6.3、下载验证
第20章:DMA
20.1、DMA简介
20.2、DMA功能框图
20.3、DMA数据配置
20.4、DMA初始化结构体详解
20.5、DMA存储器到存储器模式实验
20.5.1、硬件设计
20.5.2、软件设计
20.5.3、下载验证
20.6、DMA存储器到外设模式实验
20.6.1、硬件设计
20.6.2、软件设计
20.6.3、下载验证
第21章:常用存储器介绍
21.1、存储器种类
21.2、RAM存储器
21.2.1、DRAM
21.2.2、SRAM
21.2.3、DRAM与SRAM的应用场合
21.3、非易失性存储器
21.3.1、ROM存储器
21.3.2、Flash存储器
第22章:I\(^{2}\)C——读写EEPROM
22.1、I\(^{2}\)C协议简介
22.1.1、I\(^{2}\)C物理层
22.1.2、协议层
22.2、STM32的I\(^{2}\)C特性及架构
22.2.1、STM32的I\(^{2}\)C外设简介
22.2.2、STM32的I\(^{2}\)C架构剖析
22.2.3、通信过程
22.3、I\(^{2}\)C初始化结构体详解
22.4、I\(^{2}\)C——读写EEPROM实验
22.4.1、硬件设计
22.4.2、软件设计
22.4.3、下载验证
第23章:SPI——读写串行Flash
23.1、SPI协议简介
23.1.1、SPI物理层
23.1.2、协议层
23.2、STM32的SPI特性及架构
23.2.1、STM32的SPI外设简介
23.2.2、STM32的SPI架构剖析
23.2.3、通信过程
23.3、SPI初始化结构体详解
23.4、SPI——读写串行Flash实验
23.4.1、硬件设计
23.4.2、软件设计
23.4.3、下载验证
第24章:串行Flash文件系统FatFs
24.1、文件系统
24.2、FatFs文件系统简介
24.2.1、FatFs的目录结构
24.2.2、FatFs帮助文档
24.2.3、FatFs源码
24.3、FatFs文件系统移植实验
24.3.1、FatFs程序结构图
24.3.2、硬件设计
24.3.3、FatFs移植步骤
24.3.4、FatFs底层设备驱动函数
24.3.5、FatFs功能配置
24.3.6、FatFs功能测试
24.3.7、下载验证
24.4、FatFs功能使用实验
24.4.1、硬件设计
24.4.2、软件设计
24.4.3、下载验证
第25章:FMC——扩展外部SDRAM
25.1、SDRAM控制原理
25.1.1、SDRAM信号线
25.1.2、控制逻辑
25.1.3、地址控制
25.1.4、SDRAM的存储阵列
25.1.5、数据输入输出
25.1.6、SDRAM的命令
25.1.7、SDRAM的初始化流程
25.1.8、SDRAM的读写流程
25.2、FMC简介
25.3、FMC框图剖析
25.4、FMC的地址映射
25.5、SDRAM时序结构体
25.6、SDRAM初始化结构体
25.7、SDRAM命令结构体
25.8、FMC——扩展外部SDRAM实验
25.8.1、硬件设计
25.8.2、软件设计
25.8.3、下载验证
第26章:LTDC/DMA2D——液晶显示
26.1、显示器简介
26.1.1、液晶显示器
26.1.2、LED和OLED显示器
26.1.3、显示器的基本参数
26.2、液晶屏控制原理
26.2.1、液晶面板的控制信号
26.2.2、液晶数据传输时序
26.2.3、显存
26.3、LTDC液晶控制器简介
26.3.1、图像数据混合
26.3.2、LTDC结构框图剖析
26.4、DMA2D图形加速器简介
26.5、LTDC初始化结构体
26.6、LTDC层级初始化结构体
26.7、DMA2D初始化结构体
26.8、LTDC/DMA2D——液晶显示实验
26.8.1、硬件设计
26.8.2、软件设计
26.8.3、下载验证
第27章:LTDC——液晶显示中英文
27.1、字符编码
27.1.1、ASCII编码
27.1.2、中文编码
27.1.3、Unicode字符集和编码
27.1.4、UTF-32、27.1.5、UTF-16、27.1.6、UTF-8、27.1.7、BOM
27.2、字模简介
27.2.1、字模的构成
27.2.2、字模显示原理
27.2.3、如何制作字模
27.2.4、字模寻址公式
27.2.5、存储字模文件
27.3、LTDC——各种模式的液晶显示字符实验
27.3.1、硬件设计
27.3.2、显示ASCII编码的字符
27.3.3、显示GB2312编码的字符
27.3.4、显示任意大小的字符
27.3.5、下载验证
第28章:电容触摸屏——触摸画板
28.1、触摸屏简介
28.1.1、电阻触摸屏检测原理
28.1.2、电容触摸屏检测原理
28.2、电容触摸屏控制芯片
28.2.1、GT9157芯片的引脚
28.2.2、上电时序与I\(^{2}\)C设备地址
28.2.3、寄存器配置
28.2.4、读取坐标信息
28.3、电容触摸屏——触摸画板实验
28.3.1、硬件设计
28.3.2、软件设计
28.3.3、下载验证
第29章:ADC——电压采集
29.1、ADC简介
29.2、ADC功能框图剖析
29.2.1、ADC功能
29.2.2、电压转换
29.3、ADC初始化结构体详解
29.4、独立模式单通道采集实验
29.4.1、硬件设计
29.4.2、软件设计
29.4.3、下载验证
29.5、独立模式多通道采集实验
29.5.1、硬件设计
29.5.2、软件设计
29.5.3、下载验证
29.6、三重ADC交替模式采集实验
29.6.1、硬件设计
29.6.2、软件设计
29.6.3、下载验证
第30章:TIM——基本定时器
30.1、TIM简介
30.2、基本定时器
30.3、基本定时器功能框图
30.4、定时器初始化结构体详解
30.5、基本定时器定时实验
30.5.1、硬件设计
30.5.2、软件设计
30.5.3、下载验证
第31章:TIM——高级定时器
31.1、高级控制定时器
31.2、高级控制定时器功能框图
31.3、输入捕获应用
31.3.1、测量脉宽或者频率
31.3.2、PWM输入模式
31.4、输出比较应用
31.5、定时器初始化结构体详解
31.6、PWM互补输出实验
31.6.1、硬件设计
31.6.2、软件设计
31.6.3、下载验证
31.7、PWM输入捕获实验
31.7.1、硬件设计
31.7.2、软件设计
31.7.3、下载验证
第32章:TIM——电容按键检测
32.1、电容按键原理
32.2、电容按键检测实验
32.2.1、硬件设计
32.2.2、软件设计
32.2.3、下载验证
第33章:SDIO——SD卡读写测试
33.1、SDIO简介
33.2、SD卡物理结构
33.3、SDIO总线
33.3.1、总线拓扑
33.3.2、总线协议
33.3.3、命令
33.3.4、响应
33.4、SD卡的操作模式及切换
33.4.1、SD卡的操作模式
33.4.2、卡识别模式
33.4.3、数据传输模式
33.5、STM32的SDIO功能框图
33.6、SDIO初始化结构体
33.7、SDIO命令初始化结构体
33.8、SDIO数据初始化结构体
33.9、SD卡读写测试实验
33.9.1、硬件设计
33.9.2、软件设计
33.9.3、下载验证
第34章:基于SD卡的FatFs文件系统
34.1、FatFs移植步骤
34.2、FatFs接口函数
34.3、FatFs功能测试
第35章:I\(^{2}\)S——音频播放与录音输入
35.1、I\(^{2}\)S简介
35.1.1、数字音频技术
35.1.2、I\(^{2}\)S总线接口
35.1.3、音频数据传输协议标准
35.2、I\(^{2}\)S功能框图
35.3、WM8978音频编译码器
35.4、WAV格式文件
35.4.1、RIFF文件规范
35.4.2、WAV文件
35.4.3、WAV文件实例分析
35.5、I\(^{2}\)S初始化结构体详解
35.6、录音与回放实验
35.6.1、硬件设计
35.6.2、软件设计
35.6.3、下载验证
35.7、MP3播放器
35.7.1、MP3文件结构
35.7.2、MP3解码库
35.7.3、Helix解码库移植
35.7.4、MP3播放器功能实现
35.7.5、下载验证
第36章:ETH——LwIP以太网通信
36.1、互联网模型
36.2、以太网
36.2.1、PHY层
36.2.2、MAC子层
36.3、TCP/IP协议栈
36.3.1、需要协议栈的原因
36.3.2、各网络层的功能
36.4、以太网外设
36.4.1、SMI接口
36.4.2、MII和RMII接口
36.4.3、MAC数据包发送和接收
36.4.4、MAC过滤
36.5、PHY:LAN8720A
36.6、LwIP:轻型TCP/IP协议栈
36.7、ETH初始化结构体详解
36.8、以太网通信实验:无操作系统LwIP移植
36.8.1、硬件设计
36.8.2、移植步骤
36.8.3、下载验证
36.9、基于μCOS-III移植LwIP实验
第37章:CAN——通信实验
37.1、CAN协议简介
37.1.1、CAN物理层
37.1.2、协议层
37.2、STM32的CAN外设简介
37.3、CAN初始化结构体
37.4、CAN发送及接收结构体
37.5、CAN筛选器结构体
37.6、CAN——双机通信实验
37.6.1、硬件设计
37.6.2、软件设计
37.6.3、下载验证
第38章:RS-485通信实验
38.1、RS-485通信协议简介
38.2、RS-485——双机通信实验
38.2.1、硬件设计
38.2.2、软件设计
38.2.3、下载验证
第39章:电源管理——实现低功耗
39.1、STM32的电源管理简介
39.1.1、电源监控器
39.1.2、STM32的电源系统
39.1.3、STM32的功耗模式
39.2、电源管理相关的库函数及命令
39.2.1、配置PVD监控功能
39.2.2、WFI与WFE命令
39.2.3、进入停止模式
39.2.4、进入待机模式
39.3、PWR——睡眠模式实验
39.3.1、硬件设计
39.3.2、软件设计
39.3.3、下载验证
39.4、PWR——停止模式实验
39.4.1、硬件设计
39.4.2、软件设计
39.4.3、下载验证
39.5、PWR——待机模式实验
39.5.1、硬件设计
39.5.2、软件设计
39.5.3、下载验证
39.6、PWR——PVD电源监控实验
39.6.1、硬件设计
39.6.2、软件设计
39.6.3、下载验证
第40章:RTC——实时时钟
40.1、RTC简介
40.2、RTC功能框图解析
40.3、RTC初始化结构体讲解
40.4、RTC时间结构体讲解
40.5、RTC日期结构体讲解
40.6、RTC闹钟结构体讲解
40.7、RTC—日历实验
40.7.1、硬件设计
40.7.2、软件设计
40.7.3、下载验证
40.8、RTC—闹钟实验
40.8.1、硬件设计
40.8.2、软件设计
40.8.3、下载验证
第41章:DCMI——OV5640摄像头
41.1、摄像头简介
41.1.1、数字摄像头与模拟摄像头的区别
41.1.2、CCD与CMOS的区别
41.2、OV5640摄像头
41.2.1、OV5640传感器简介
41.2.2、OV5640引脚及功能框图
41.2.3、SCCB时序
41.2.4、OV5640的寄存器
41.2.5、像素数据输出时序
41.3、STM32的DCMI接口简介
41.3.1、DCMI整体框图
41.3.2、DCMI接口内部结构
41.3.3、同步方式
41.3.4、捕获模式及捕获率
41.4、DCMI初始化结构体
41.5、DCMI——OV5640摄像头实验
41.5.1、硬件设计
41.5.2、软件设计
41.5.3、下载验证
第42章:MDK的编译过程及文件类型全解
42.1、编译过程
42.1.1、编译过程简介
42.1.2、具体工程中的编译过程
42.2、程序的组成、存储与运行
42.2.1、CODE、RO、RW、ZI
Data域及堆栈空间
42.2.2、程序的存储与运行
42.3、编译工具链
42.3.1、设置环境变量
42.3.2、armcc、armasm及armlink
42.3.3、armar、fromelf及用户指令
42.4、MDK工程的文件类型
42.4.1、uvprojx、uvoptx、uvguix及ini工程文件
42.4.2、源文件
42.4.3、Output目录下生成的文件
42.4.4、Listing目录下的文件
42.4.5、sct分散加载文件的格式与应用
42.5、实验:自动分配变量到外部SDRAM空间
42.5.1、硬件设计
42.5.2、软件设计
42.5.3、下载验证
42.6、实验:优先使用内部SRAM并把堆区分配到SDRAM空间
42.6.1、硬件设计
42.6.2、软件设计
42.6.3、下载验证
第43章:在SRAM中调试代码
43.1、在RAM中调试代码
43.2、STM32的启动方式
43.3、内部Flash的启动过程
43.4、实验:在内部SRAM中调试代码
43.4.1、硬件设计
43.4.2、软件设计
43.4.3、下载验证
第44章:读写内部Flash
44.1、STM32的内部Flash简介
44.2、对内部Flash的写入过程
44.3、查看工程的空间分布
44.4、操作内部Flash的库函数
44.5、实验:读写内部Flash
44.5.1、硬件设计
44.5.2、软件设计
44.5.3、下载验证
第45章:设置Flash的读写保护及解除
45.1、选项字节与读写保护
45.1.1、选项字节的内容
45.1.2、RDP读保护级别
45.1.3、PCROP代码读出保护
45.2、修改选项字节的过程
45.3、操作选项字节的库函数
45.4、实验:设置读写保护及解除
45.4.1、硬件设计
45.4.2、软件设计
45.4.3、下载验证