内容简介

  《STM32库开发实战指南:基于STM32F4》的主要内容将着重介绍STM32的库函数,以及如何使用库的方式进行开发。使初学者能够快速入门能够在此基础上迅速入门,掌握STM32的开发方法。《STM32库开发实战指南:基于STM32F4》内容基于ARM-CortexM3内核的STM32F429芯片,紧紧围绕“库”展开,系统地讲述了STM32固件库的原理、使用方法。

作者简介

  刘火良,网名野火,是目前国内大的电子工程师社区阿莫论坛的版主,也是业内畅销的STM32开发板供应商野火嵌入式工作室的联合创始人。野火工作室是嵌入式开发方式中库开发方式的倡导者,也是针对初学者在业内推动学习库开发方法的排头兵。

目录

前 言
第1章 如何安装KEIL51
1.1 温馨提示1
1.2 获取KEIL5安装包1
1.3 开始安装KEIL51
1.4 安装STM32芯片包3
第2章 如何用DAP仿真器下载程序6
2.1 仿真器简介6
2.2 硬件连接6
2.3 仿真器配置6
2.4 选择目标板9
2.5 下载程序9
第3章 初识STM3210
3.1 什么是STM3210
3.2 STM32能做什么10
3.2.1 智能手环11
3.2.2 微型四轴飞行器12
3.2.3 淘宝众筹12
3.3 STM32选型13
3.3.1 STM32分类13
3.3.2 STM32命名方法14
3.3.3 选择合适的MCU14
第4章 寄存器17
4.1 寄存器简介17
4.2 STM32的外观17
4.3 芯片里面有什么18
4.4 存储器映射21
4.5 寄存器映射23
4.5.1 STM32的外设地址映射23
4.5.2 C语言对寄存器的封装26
第5章 新建工程——寄存器版31
5.1 新建本地工程文件夹工程31
5.1.1 新建本地工程文件夹31
5.1.2 新建工程32
5.2 下载程序38
第6章 使用寄存器点亮LED39
6.1 GPIO简介39
6.2 GPIO框图剖析39
6.2.1 基本结构分析39
6.2.2 GPIO工作模式42
6.3 实验:使用寄存器点亮LED43
6.3.1 硬件连接44
6.3.2 启动文件44
6.3.3 stm32f4xx.h文件46
6.3.4 main文件47
6.3.5 下载验证51
第7章 自己写库——构建库函数雏形52
7.1 STM32函数库简介52
7.2 采用库来开发及学习的原因53
7.3 实验:构建库函数雏形53
7.3.1 修改寄存器地址封装54
7.3.2 定义访问外设的结构体指针55
7.3.3 定义初始化结构体59
7.3.4 定义引脚模式的枚举类型60
7.3.5 定义GPIO初始化函数62
7.3.6 使用函数点亮LED64
7.3.7 下载验证66
7.3.8 总结66
第8章 初识STM32标准库67
8.1 CMSIS标准及库层次关系67
8.1.1 库目录、文件简介68
8.1.2 各库文件间的关系74
8.2 使用帮助文档75
8.2.1 常用官方资料75
8.2.2 初识库函数76
第9章 新建工程——库函数版78
9.1 新建本地工程文件夹78
9.2 新建工程79
9.3 配置魔术棒选项卡82
9.4 下载器配置85
9.5 选择Flash大小86
第10章 GPIO输出——使用固件库点亮LED88
10.1 硬件设计88
10.2 软件设计88
10.2.1 编程要点89
10.2.2 代码分析89
10.2.3 下载验证94
10.3 STM32标准库补充知识94
第11章 GPIO输入——按键检测98
11.1 硬件设计98
11.2 软件设计99
11.2.1 编程要点99
11.2.2 代码分析99
11.2.3 下载验证102
第12章 GPIO——位带操作103
12.1 位带简介103
12.1.1 外设位带区103
12.1.2 SRAM位带区104
12.1.3 位带区和位带别名区地址转换104
12.2 GPIO位带操作105
第13章 启动文件108
13.1 启动文件简介108
13.2 查找ARM汇编指令108
13.3 启动文件代码讲解109
第14章 RCC——使用HSE/HSI配置时钟116
14.1 RCC主要作用——时钟部分116
14.2 RCC框图剖析——时钟树116
14.2.1 系统时钟116
14.2.2 其他时钟121
14.3 配置系统时钟实验122
14.3.1 使用HSE122
14.3.2 使用HSI122
14.3.3 硬件设计123
14.3.4 软件设计123
14.3.5 下载验证129
第15章 STM32中断应用概览130
15.1 异常类型130
15.2 NVIC简介131
15.2.1 NVIC寄存器简介131
15.2.2 NVIC中断配置固件库132
15.3 优先级的定义132
15.3.1 优先级定义132
15.3.2 优先级分组133
15.4 中断编程134
第16章 EXTI——外部中断/事件控制器136
16.1 EXTI简介136
16.2 EXTI功能框图136
16.3 中断/事件线138
16.4 EXTI初始化结构体详解139
16.5 外部中断控制实验139
16.5.1 硬件设计140
16.5.2 软件设计140
16.5.3 下载验证144
第17章 SysTick——系统定时器145
17.1 SysTick简介145
17.2 SysTick寄存器介绍145
17.3 SysTick定时实验146
17.3.1 硬件设计146
17.3.2 软件设计146
第18章 通信的基本概念152
18.1 串行通信与并行通信152
18.2 全双工、半双工及单工通信153
18.3 同步通信与异步通信153
18.4 通信速率154
第19章 USART——串口通信155
19.1 串口通信协议简介155
19.1.1 物理层155
19.1.2 协议层158
19.2 STM32的USART简介159
19.3 USART功能框图160
19.4 USART初始化结构体详解166
19.5 USART1接发通信实验167
19.5.1 硬件设计168
19.5.2 软件设计168
19.5.3 下载验证173
19.6 USART1指令控制RGB彩灯实验174
19.6.1 硬件设计174
19.6.2 软件设计174
19.6.3 下载验证179
第20章 DMA180
20.1 DMA简介180
20.2 DMA功能框图180
20.3 DMA数据配置184
20.4 DMA初始化结构体详解188
20.5 DMA存储器到存储器模式实验190
20.5.1 硬件设计190
20.5.2 软件设计190
20.5.3 下载验证195
20.6 DMA存储器到外设模式实验195
20.6.1 硬件设计195
20.6.2 软件设计195
20.6.3 下载验证199
第21章 常用存储器介绍200
21.1 存储器种类200
21.2 RAM存储器200
21.2.1 DRAM201
21.2.2 SRAM202
21.2.3 DRAM与SRAM的应用场合202
21.3 非易失性存储器202
21.3.1 ROM存储器202
21.3.2 Flash存储器203
第22章 I2C——读写EEPROM205
22.1 I2C协议简介205
22.1.1 I2C物理层205
22.1.2 协议层206
22.2 STM32的I2C特性及架构209
22.2.1 STM32的I2C外设简介209
22.2.2 STM32的I2C架构剖析210
22.2.3 通信过程212
22.3 I2C初始化结构体详解213
22.4 I2C——读写EEPROM实验215
22.4.1 硬件设计215
22.4.2 软件设计216
22.4.3 下载验证234
第23章SPI——读写串行Flash235
23.1 SPI协议简介235
23.1.1 SPI物理层235
23.1.2 协议层236
23.2 STM32的SPI特性及架构238
23.2.1 STM32的SPI外设简介238
23.2.2 STM32的SPI架构剖析239
23.2.3 通信过程241
23.3 SPI初始化结构体详解242
23.4 SPI——读写串行Flash实验243
23.4.1 硬件设计243
23.4.2 软件设计244
23.4.3 下载验证264
第24章串行Flash文件系统FatFs265
24.1 文件系统265
24.2 FatFs文件系统简介266
24.2.1 FatFs的目录结构266
24.2.2 FatFs帮助文档266
24.2.3 FatFs源码267
24.3 FatFs文件系统移植实验268
24.3.1 FatFs程序结构图268
24.3.2 硬件设计269
24.3.3 FatFs移植步骤269
24.3.4 FatFs底层设备驱动函数271
24.3.5 FatFs功能配置276
24.3.6 FatFs功能测试277
24.3.7 下载验证280
24.4 FatFs功能使用实验281
24.4.1 硬件设计281
24.4.2 软件设计281
24.4.3 下载验证286
第25章FMC——扩展外部SDRAM287
25.1 SDRAM控制原理287
25.1.1 SDRAM信号线288
25.1.2 控制逻辑289
25.1.3 地址控制289
25.1.4 SDRAM的存储阵列289
25.1.5 数据输入输出289
25.1.6 SDRAM的命令290
25.1.7 SDRAM的初始化流程295
25.1.8 SDRAM的读写流程296
25.2 FMC简介297
25.3 FMC框图剖析298
25.4 FMC的地址映射300
25.5 SDRAM时序结构体302
25.6 SDRAM初始化结构体303
25.7 SDRAM命令结构体304
25.8 FMC——扩展外部SDRAM实验305
25.8.1 硬件设计305
25.8.2 软件设计305
25.8.3 下载验证316
第26章LTDC/DMA2D——液晶显示317
26.1 显示器简介317
26.1.1 液晶显示器317
26.1.2 LED和OLED显示器318
26.1.3 显示器的基本参数319
26.2 液晶屏控制原理319
26.2.1 液晶面板的控制信号320
26.2.2 液晶数据传输时序321
26.2.3 显存323
26.3 LTDC液晶控制器简介323
26.3.1 图像数据混合323
26.3.2 LTDC结构框图剖析324
26.4 DMA2D图形加速器简介327
26.5 LTDC初始化结构体329
26.6 LTDC层级初始化结构体331
26.7 DMA2D初始化结构体334
26.8 LTDC/DMA2D——液晶显示实验336
26.8.1 硬件设计336
26.8.2 软件设计338
26.8.3 下载验证358
第27章LTDC——液晶显示中英文359
27.1 字符编码359
27.1.1 ASCII编码359
27.1.2 中文编码362
27.1.3 Unicode字符集和编码365
27.1.4 UTF-32365
27.1.5 UTF-16365
27.1.6 UTF-8366
27.1.7 BOM367
27.2 字模简介367
27.2.1 字模的构成368
27.2.2 字模显示原理368
27.2.3 如何制作字模370
27.2.4 字模寻址公式371
27.2.5 存储字模文件372
27.3 LTDC——各种模式的液晶显示字符实验372
27.3.1 硬件设计373
27.3.2 显示ASCII编码的字符373
27.3.3 显示GB2312编码的字符382
27.3.4 显示任意大小的字符391
27.3.5 下载验证398
第28章电容触摸屏——触摸画板399
28.1 触摸屏简介399
28.1.1 电阻触摸屏检测原理399
28.1.2 电容触摸屏检测原理401
28.2 电容触摸屏控制芯片402
28.2.1 GT9157芯片的引脚403
28.2.2 上电时序与I2C设备地址404
28.2.3 寄存器配置404
28.2.4 读取坐标信息406
28.3 电容触摸屏——触摸画板实验408
28.3.1 硬件设计408
28.3.2 软件设计409
28.3.3 下载验证430
第29章ADC——电压采集431
29.1 ADC简介431
29.2 ADC功能框图剖析431
29.2.1 ADC功能431
29.2.2 电压转换437
29.3 ADC初始化结构体详解437
29.4 独立模式单通道采集实验438
29.4.1 硬件设计439
29.4.2 软件设计439
29.4.3 下载验证443
29.5 独立模式多通道采集实验443
29.5.1 硬件设计443
29.5.2 软件设计443
29.5.3 下载验证449
29.6 三重ADC交替模式采集实验449
29.6.1 硬件设计449
29.6.2 软件设计450
29.6.3 下载验证455
第30章TIM——基

前言/序言

  《STM32库开发实战指南:基于STM32F4》的编写风格《STM32库开发实战指南:基于STM32F4》着重讲解STM32F429的外设以及外设的应用,力争全面分析每个外设的功能框图和使用方法,让读者可以零死角地玩转STM32F429。
  基本每个章节对应一个外设,每章的主要内容大概分为3个部分,第1部分为简介,第2部分为外设功能框图分析,第3部分为代码讲解。
  外设简介则是用作者自己的话把外设概括性地介绍一遍,力求语句简短,通俗易懂,避免照抄数据手册中的介绍。
  外设功能框图分析是每章的重点,该部分会详细讲解功能框图各部分的作用,是学习STM32F429的精髓所在,掌握了整个外设的框图则可以熟练地使用该外设,熟练地编程,日后学习其他型号的单片机也会得心应手。即使单片机的型号不同,外设的框图基本也是一样的。这一步的学习比较枯燥,但是必须下功夫钻研,方能学有所成。
  代码分析则是讲解使用该外设的实验过程,主要分析代码流程和一些编程注意事项。在掌握了框图之后,学习代码部分则会轻而易举。
  《STM32库开发实战指南:基于STM32F4》的学习方法《STM32库开发实战指南:基于STM32F4》第3~11章连贯性非常强,属于单片机底层知识的讲解,对后面章节的学习起着“千斤顶”的作用,读者需要按照顺序学习,不可跳跃阅读。学完这部分之后,能力稍强的用户基本可以入门STM32。其余章节连贯性较弱,可根据项目需要选择阅读。另外《STM32库开发实战指南:基于STM32F4》配套200集手把手教学视频和大量的PPT,观看视频辅助学习,效果会更佳。相关视频请到秉火论坛下载。
  《STM32库开发实战指南:基于STM32F4》的参考资料《STM32库开发实战指南:基于STM32F4》的参考资料为《STM32F4xx中文参考手册》和《Cortex-M4内核参考手册》,这两本是ST官方的手册,属于精华版,内容面面俱到,无所不包。限于篇幅问题,《STM32库开发实战指南:基于STM32F4》着重于STM32F429的功能框图分析和代码讲解,有关寄存器的详细描述则略过,在学习《STM32库开发实战指南:基于STM32F4》的时候,涉及寄存器描述部分还请参考上述两本手册,这样学习效果会更佳。
  《STM32库开发实战指南:基于STM32F4》的配套硬件和程序《STM32库开发实战指南:基于STM32F4》配套的硬件平台为秉火STM32F429挑战者开发板,见图0-1。如果配合该硬件平台做实验,必会达到事半功倍的学习效果,省去中间移植时遇到的各种问题。书中提到的配套工程程序可以在秉火论坛下载。
  《STM32库开发实战指南:基于STM32F4》的技术论坛如果在学习过程中遇到问题,可以到秉火论坛发帖交流,开源共享,共同进步。
  鉴于作者水平有限,《STM32库开发实战指南:基于STM32F4》难免存在纰漏,热心的读者也可把勘误发到论坛,以便我们改进。祝你学习愉快!M4的世界,秉火与您同行!

其他推荐