第1章 ARM Cortex-M4内核 1
1.1数字信号控制器(DSC ) 1
1.2 Coretx-M4处理器 4
1.3从Cortex-M3到Cortex-M4 6
1.4常见ARM Cortex-M4处理器 8
1.4.1飞思卡尔的Kinetis系列 8
1.4.2 NXP的LPC4300系列 10
1.4.3 ST公司的STM32F4系列 10
1.4.4 TI的LM4Fx系列 12
1.4.5 Atmel的SAM4系列 12
第2章 STM32F4系统架构 13
2.1 STM32F407xx系列 13
2.2 STM32F4总线架构 14
2.2.1 STM32F4总线特点 14
2.2.2 STM32F1和STM32F4系列AHB/APB桥时钟差异 15
2.3存储器组织 18
2.3.1嵌入式SRAM 18
2.3.2位操作 18
2.3.3备份SRAM 19
2.4 STM32F4物理重新映射 19
2.5系统配置控制器 24
第3章 STM32F4电路设计 27
3.1 STM32F1与STM32F4之间的兼容性设计 27
3.2 STM32F407最小系统设计 31
3.2.1最小系统电路设计 31
3.2.2电源电路设计 31
3.2.3按键与LED电路设计 36
3.2.4时钟、复位、引导配置以及 SWD接口电路设计 39
3.3通信接口电路设计 43
3.3.1 RS232接口 43
3.3.2 CAN与RS485接口 44
3.3.3 USB接口 45
3.4 ADC与DAC接口 46
3.5 LCD及SDIO接口 46
3.6 SDIO接口 47
3.7图像传感器及接口 48
3.8以太网接口 49
3.9引脚安排说明 51
3.10本书配套开发板 52
第4章 STM32F4程序设计入门 54
4.1 Keil环境下的第一个STM32F407程序 54
4.1.1创建一个Keil新项目 54
4.1.2添加主程序 54
4.1.3配置Flash Download 57
4.1.4在RealView MDK中调试程序 60
4.2第一个基于GCC的STM32F407程序 61
4.2.1软件环境 61
4.2.2编写STM32的C语言程序 64
4.2.3使用GCC编译STM32程序 67
4.2.4在Obtain_ Studio中编译Hello World程序 69
4.2.5使用C+++开发STM32F4程序 69
第5章 STM32F4标准外设库应用 72
5.1 STM32F4标准外设库 72
5.1.1 STM32F4标准外设库结构 72
5.1.2 ARM Cortex微控制器软件接口标准CMSIS 73
5.1.3 STM32F4标准外设库的驱动程序结构 81
5.1.4 STM32F4外设库文件 82
5.2 STM32F标准外设库使用规则 88
5.3在RealView MDK中使用STM32F4外设库 90
5.4在GCC中应用STM32F4外设库 92
5.4.1 STM32F4外设库GCC项目模板 92
5.4.2 Obtain_ Studio集成开发系统常用技巧 98
第6章 STM32F4 FPU单元及浮点数运算 102
6.1 Cortex-M4 FPU单元 102
6.1.1概述 102
6.1.2 Cortex-M4 FPU的功能 106
6.2 Cortex-M4 VFP指令 108
6.2.1 Cortex-M4 VFP指令集 108
6.2.2 Cortex-M4 FPU寄存器 109
6.2.3 Cortex-M4 FPU编程模型 113
6.3 STM32F4浮点运算测试 113
6.3.1编译器设置 113
6.3.2 STM32F4浮点运算测试 116
6.3.3使用STM32F4标准库的浮点运算测试 118
第7章 STM32F4 DSP指令及DSP库 119
7.1 ARM DSP技术 119
7.1.1概述 119
7.1.2 Cortex-M4 DSP单元 121
7.2 Cortex-M4的DSP指令 122
7.3 STM32F4 DSP库 123
7.4三角函数的应用实例 129
7.5 FIR滤波函数的应用实例 132
7.5.1 FIR滤波函数结构 132
7.5.2 STM32F4中实现FIR低通滤波器实例 134
7.6快速傅立叶变换函数的应用实例 140
7.6.1 STM32F4 DSP库的CFFT实现 140
7.6.2 CFFT测试实例 144
第8章 STM32F4启动与复位 147
8.1 STM32F4启动原理 147
8.2 STM32F4复位 149
8.2.1系统复位 150
8.2.2电源复位 150
8.2.3备份域复位 151
8.3 STM32F4软件复位 151
8.3.1概述 151
8.3.2软件复位实例 153
第9章 STM32F4 PWR电源管理 155
9.1 PWR电源管理 155
9.1.1内部电源结构 155
9.1.2独立ADC的电源和参考电压 155
9.1.3电池备份域 155
9.1.4内部稳压器 157
9.2 STM32F4 PWR单元的管理与编程 157
9.2.1 STM32F4 PWR备份域 157
9.2.2 STM32F4 PWR低功耗模式 159
9.2.3 STM32F4 PWR低功耗模式的实现 161
第10章 STM32F4 CCM核心耦合存储器 164
10.1 CCM核心耦合存储器 164
10.2 CCM作为高速运算缓冲使用 165
10.2.1直接使用CCM 165
10.2.2通过定义CCM数据段来使用CCM内存 167
10.3 CCM作为堆栈使用 168
第11章 STM32F4 RCC及系统时钟配置 171
11.1系统时钟配置 171
11.1.1系统时钟配置方法 171
11.1.2采用STM32F4xx-Clock_Configuration程序进行时钟配置 178
11.2 STM32F4 RCC 179
11.2.1 STM32F4时钟树 179
11.2.2 F4与F1系列RCC主要区别 181
11.2.3 RCC PLL配置寄存器与RCC时钟配置寄存器 185
11.3其他外设的时钟配置方法 190
第12章 STM32F4 GPIO及应用 193
12.1 STM32F4 GPIO的结构与特点 193
12.1.1 GPIO 193
12.1.2 I/O引脚多路复用器和映射 194
12.2 STM32F1和STM32F4系列GPIO的差异 198
12.2.1 IP总线之间的映射差异 198
12.2.2 GPIO结构上的差异 200
12.2.3 GPIO性能上的差异 201
12.2.4 GPIO编程上的差异 202
12.3 STM32F4 GPIO测试程序 205
12.3.1创建STM32F4- KEY_ LED项目 205
12.3.2 STM32F4 KEY_ LED项目程序分析 207
12.4 STM32F4外设库应用程序分析 210
第13章 STM32F4 NVIC及中断管理 219
13.1 STM32F4中断控制器 219
13.1.1嵌套矢量中断控制器(NVIC) 219
13.1.2 AAPCS及函数调用过程 220
13.1.3 Cortex-M中断响应过程 222
13.2 STM32F4中断管理 225
13.2.1 STM32F4中断向量 225
13.2.2 STM32F4用户程序中断向量表 229
13.3 STM32F4中断向量配置方法 239
13.3.1 NVIC嵌套中断向量控制器 239
13.3.2深入了解STM32F4的NVIC优先级 243
第14章 STM32F4 SysTick定时器 247
14.1 Cortex-M SysTick定时器 247
14.1.1 SysTick定时器 247
14.1.2 SysTick库函数 248
14.1.3 SysTick的设置 249
14.2 SysTick测试程序 250
14.3 SysTick程序分析 253
第15章 STM32F4 EXTI外部中断 257
15.1 STM32F4外部中断 257
15.2 STM32F4外部中断实例 259
15.3 STM32F4中断配置 262
15.3.1 STM32F4外部中断程序分析 262
15.3.2中断通道配置 263
15.3.3中断优先级配置 264
15.3.4外部中断模式配置 264
15.3.5外部中断响应函数配置 268
第16章 STM32F4 USART通信 271
16.1 STM32F4的USART接口 271
16.1.1概述 271
16.1.2 USART波特率的计算方法 274
16.1.3发送器 275
16.1.4接收器 277
16.2 USART通用串口程序设计 279
16.2.1 USART标准库函数 279
16.2.2 USART数据发送与接收程序设计 282
16.2.3中断方式的数据接收程序设计 284
16.3 USART通用串口C++程序设计 287
16.3.1 USART数据发送C+++程序设计 287
16.3.2 USART数据接收C+++程序设计 288
16.4中断方式的数据接收 290
16.4.1中断方式的数据接收C+++程序设计 290
16.4.2多个串口驱动对象的协调工作 291
16.5 USART C++驱动程序的设计 293
16.5.1 USART驱动程序 293
16.5.2 printf与cout的实现 295
第17章 FSMC接口及LCD屏控制 298
17.1 STM32F4新增的FSMC接口 298
17.1.1 STM32F1与STM32F4的FSMC接口比较 298
17.1.2 AHB接口 299
17.1.3外部设备地址映像 300
17.1.4 NOR和PSRAM地址映像 301
17.1.5 NAND和PC卡地址映像 302
17.1.6 NOR闪存和PSRAM控制器 303
17.2 LCD驱动芯片 304
17.2.1 LCD接口 304
17.2.2 Ili9xx系列TFT驱动芯片 305
17.3基于FSMC的TFT驱动程序设计 309
17.3.1 FSMC与TFT端口连接及端口映射 309
17.3.2 FSMC与TFT的内存空间映射及操作 311
17.3.3 FSMC初始化 313
17.3.4 TFT屏初始化 318
17.3.5 TFT驱动程序统一接口函数的实现 322
17.4 FSMC接口驱动TFT屏的测试程序 325
第18章 STM32F4触摸屏控制 327
18.1触摸屏概述 327
18.2触摸屏驱动IC 329
18.3触摸屏测试程序 332
18.4触摸屏驱动程序分析 334
18.5触摸屏校准 341
18.5.1触摸屏校准算法 341
18.5.2触摸屏校准的实现 344
第19章 STM32F4 RTC实时时钟及日历功能 348
19.1 STM32F4实时时钟(RTC) 348
19.1.1概述 348
19.1.2 STM32F4与STM32F1在RTC上的区别 348
19.1.3 STM32F4实时时钟结构 350
19.2日历功能测试程序 351
19.2.1日历功能测试程序 352
19.2.2日历时钟源 353
19.2.3日历配置 356
19.2.4日历值的写入与读取 360
第20章 STM32F4定时器 363
20.1 STM32F4定时器的种类 363
20.1.1 SysTick定时器 363
20.1.2 RTC定时器 364
20.1.3通用定时器(TIM2~TIM5) 364
20.1.4通用定时器(TIM9~TIM14) 365
20.1.5基本定时器(TIM6、 TIM7) 365
20.1.6高级控制定时器(TIM1及TIM8) 366
20.1.7独立看门狗(IWDG) 366
20.1.8窗口看门狗(WWDG) 367
20.2 STM32F4通用定时器计数模式 368
20.2.1时基单元 368
20.2.2计数器模式——向上计数模式 368
20.2.3计数器模式——向下计数模式 369
20.2.4计数器模式——中心对齐模式(向上/向下计数) 369
20.3 STM32F4通用定时器基本应用 370
20.4通用定时器工作模式 374
20.4.1通用定时器常用工作模式 374
20.4.2 STM32F4通用定时器模式举例 376
第21章 STM32F4 ADC应用 381
21.1 STM32F4 ADC模块 381
21.1.1 STM32F4 ADC 381
21.1.2 STM32F4和STM32F1的ADC差异 382
21.1.3 STM32F4的ADC固件库函数 385
21.2 STM32 ADC测试实例 387
21.2.1 STM32 ADC测试程序代码 387
21.2.2 STM32 ADC程序分析 389
第22章 STM32F4 DMA应用 397
22.1 STM32F4 DMA 397
22.1.1 STM32F4 DMA概述 397
22.1.2 STM32F1和STM32F4之间的DMA差异 399
22.1.3 STM32F4的DMA库函数 404
22.2 DMA在ADC中的应用 406
22.2.1任务转移策略之DMA ADC应用实例 406
22.2.2 DMA ADC程序分析 408
22.3 DMA在USART中的应用 414
22.3.1任务转移策略之USART DMA数据发送 414
22.3.2任务转移策略之USART DMA数据接收 418
22.3.3任务队列策略之USART DMA发送中断应用 421
22.3.4任务循环策略之USART DMA接收中断应用 425
第23章 STM32F4以太网接口及应用 428
23.1 STM32F4以太网接口特点 428
23.2 LwIP 432
23.2.1 LwIP概述 432
23.2.2 LwIP主要模块 433
23.2.3 LwIP TCP协议工作过程 443
23.2.4 LwIP UDP协议工作过程 444
23.3 LwIP的移植 445
23.3.1 LwIP下载 445
23.3.2 LwIP网络设备驱动程序文件 446
23.3.3 STM32F407以太网接口初始化 448
23.4 LwIP协议栈的 httpserver测试程序 457
23.5 LwIP协议栈的udp_echo_client测试程序 460
第24章 STM32F4 DCMI视频接口及应用 465
24.1 STM32F4新增的DCMI数码相机接口 465
24.1.1概述 465
24.1.2 DMA的接口 466
24.1.3 DCMI固件库函数 468
24.2 OV7670摄像头 469
24.3 CMOS摄像头测试程序 470
24.4 CMOS摄像头驱动程序原理 472
24.4.1 SCCB协议 472
24.4.2 SCCB协议驱动程序设计 475
24.4.3 CMOS摄像头驱动程序设计 479
24.4.4 DCMI驱动程序设计 484
参考文献 489