第1章ARM Cortex处理器概述 1
1.1 ARM处理器分类 1
1.2 ARM Cortex处理器 2
1.3 Cirtex-M0处理器 3
1.3.1概述 3
1.3.2 NUC100系列处理器 4
1.3.3 NXP Cortex-M0处理器 5
1.4 Cortex-M1处理器 7
1.4.1概述 7
1.4.2 Cortex-M1应用 8
1.5 Coretx-M3处理器 9
1.5.1概述 9
1.5.2 AT91SAM3U系列处理器 10
1.5.3 LPC1800系列处理器 11
1.6 Coretx-M4处理器 13
1.6.1概述 13
1.6.2 Kinetis系列处理器 14
1.6.3 LPC4300系列处理器 16
1.6.4 STM32F4系列处理器 19
1.7 Cortex-A8处理器 21
1.8 Cortex-A9处理器 21
1.9 Cortex-A15处理器 24
1.9.1 Cortex-A15内核简介 24
1.9.2 OMAP 5处理器 25
第2章从STM32F1到STM32F2的硬件兼容性设计 29
2.1 STM32F1及STM32F2系列处理器 29
2.1.1 STM32F1系列处理器 29
2.1.2 STM32F2系列处理器 30
2.1.3 STM32F1与STM32F2的区别 33
2.2 STM32F1与STM32F2之间的兼容性设计 34
2.3 STM32F207最小系统设计 37
2.3.1最小系统电路设计 37
2.3.2电源电路设计 42
2.3.3按键与LED电路设计 47
2.3.4时钟、复位、引导配置以及SWD接口电路设计 49
2.3.5通信接口电路设计 53
2.3.6其他外设电路设计 60
2.4图像传感器及接口 62
2.4.1图像传感器 62
2.4.2 OV7670摄像头 63
2.4.3 CMOS摄像头接口 65
2.5以太网接口 66
2.5.1 STM32F2以太网模块介绍 66
2.5.2 SMI、MII和RMII接口 66
2.5.3 STM32F207以太网接口电路设计 71
2.6引脚安排汇总 73
第3章从STM32F1到STM32F2的程序设计 78
3.1从STM32F1到STM32F2 78
3.1.1 STM32F1与STM32F2在开发工具版本上的差别 78
3.1.2 STM32F1与STM32F2系列的IP总线之间的映射差异 78
3.1.3 STM32F1和STM32F2 AHB/APB桥时钟差异 81
3.1.4 STM32F1和STM32F2在寄存器上的差别 84
3.1.5 STM32F1和STM32F2在GPIO上的差异 86
3.2基于Keil的第一个STM32F207程序 89
3.2.1创建一个Keil新项目 89
3.2.2添加主程序 92
3.2.3配置Flash Download 93
3.2.4在RealView MDK中调试程序 94
3.2.5与STM32F1的比较 95
3.3第一个基于GCC的STM32F207程序 98
3.3.1软件环境 98
3.3.2编写STM32的C语言程序 100
3.3.3用GCC编译STM32程序 104
3.3.4在Obtain_ Studio中编译Hello World程序 105
3.4使用C++开发STM32F2程序 106
3.5位操作方式 107
第4章STM32F2固件库的使用 110
4.1 STM32F2xx标准外设库 110
4.1.1 STM32F2xx标准外设库结构 110
4.1.2如何使用标准外设库 121
4.2在RealView MDK中使用STM32固件库 123
4.2.1 STM32固件库应用 123
4.2.2 STM32固件库应用程序分析 125
4.3在GCC中应用STM32固件库 133
4.3.1 STM32F2固件库GCC项目模板 133
4.3.2 Obtain_ Studio集成开发系统常用技巧 137
第5章STM32F2的启动原理及时钟控制 141
5.1 STM32F2启动原理 141
5.1.1 STM32F2启动过程分析 141
5.1.2 STM32F2物理重新映射 143
5.1.3 STM32软件复位与功耗控制 144
5.2 STM32F2时钟控制(RCC) 147
5.2.1 STM32F2时钟树 147
5.2.2 F2与F1系列RCC主要区别 149
5.2.3 RCC PLL配置寄存器与RCC时钟配置寄存器 153
5.2.4采用STM32F2xx-RevA-Z Clock Configuration进行时钟配置 159
5.3 RCC的应用 159
5.3.1 RCC的配置方法 159
5.3.2 STM32F2固件库中的时钟初始化的实现 161
5.3.3在主程序中调用STM32F2固件库时钟初始化函数 164
5.4系统配置控制器(SYSCFG) 165
第6章STM32F2新增的FSMC接口及LCD屏控制 169
6.1 STM32F2新增的FSMC接口 169
6.1.1 STM32F1与STM32F2的FSMC接口比较 169
6.1.2 AHB总线接口 171
6.2 LCD驱动芯片 171
6.2.1 LCD接口 171
6.2.2 Ili9xxx系列TFT驱动芯片 172
6.3基于FSMC的TFT驱动程序设计 177
6.3.1 FSMC与TFT端口连接与端口映射 177
6.3.2 FSMC与TFT的内存空间映射与操作 179
6.3.3 FSMC初始化 182
6.3.4 TFT初始化 187
6.3.5 TFT基本显示函数的实现 190
第7章STM32F2新增的日历功能及应用 195
7.1 STM32F2实时时钟 195
7.1.1 RTC简介 195
7.1.2 STM32F2与STM32F1在RTC上的区别 195
7.1.3 STM32F2实时时钟结构 196
7.1.4 STM32F2实时时钟固件库 197
7.2日历功能测试程序 200
7.2.1日历功能测试程序 200
7.2.2日历时钟源 201
7.2.3日历配置 204
7.2.4日历值的写入与读取 209
第8章STM32F2中断及SysTick应用 213
8.1 STM32F2中断 213
8.2 STM32F2用户程序中断向量表 216
8.3 SysTick时钟及中断处理 226
8.3.1关于SysTick 226
8.3.2 SysTick测试程序 228
8.3.3 SysTick程序分析 230
8.4 STM32F2中断向量管理器 234
8.4.1 NVIC嵌套中断向量控制器 234
8.4.2深入了解STM32F2的NVIC优先级 238
第9章STM32F2增强的闹钟、时间戳与篡改检测 242
9.1 STM32F2闹钟功能 242
9.1.1概述 242
9.1.2闹钟测试程序的实现 247
9.2 STM32F2唤醒功能 251
9.2.1 STM32F2定期唤醒定时器 251
9.2.2唤醒功能测试程序 255
9.3时间戳功能 257
9.3.1概述 257
9.3.2时间戳测试程序 259
9.4 STM32F2与STM32F1在备份寄存器上的区别 263
9.5篡改检测 264
9.5.1概述 264
9.5.2备份寄存器与篡改检测测试程序 265
9.6 STM32F2 RTC的数字校准 269
第10章STM32F2增强的定时器 272
10.1 STM32F2定时器的种类 272
10.1.1 SysTick定时器 272
10.1.2 RTC定时器 272
10.1.3通用定时器(TIM2~TIM5) 273
10.1.4通用定时器(TIM9~TIM14) 273
10.1.5基本定时器(TIM6、TIM7) 274
10.1.6高级控制定时器(TIM1及TIM8) 274
10.1.7独立看门狗 275
10.1.8窗口看门狗 276
10.2 STM32F2通用定时器计数模式 277
10.2.1时基单元 277
10.2.2计数器模式-向上计数模式 277
10.2.3计数器模式-向下计数模式 278
10.2.4计数器模式-中心对齐模式(向上/向下计数) 278
10.3 STM32F2通用定时器基本应用 279
10.4通用定时器工作模式 283
10.4.1概述 283
10.4.2 STM32F2通用定时器模式举例 285
第11章STM32F2新增的ETH以太网接口及LwIP应用 289
11.1 STM32F2与STM32F1以太网模块的差异 289
11.2 LwIP 292
11.2.1概述 292
11.2.2 LwIP主要模块 292
11.2.3 LwIP TCP协议工作过程 302
11.2.4 LwIP UDP协议工作过程 303
11.3 LwIP的移植 305
11.3.1 LwIP下载 305
11.3.2 LwIP网络设备驱动程序文件ethernetif…c 306
11.3.3 STM32F207以太网接口初始化 307
11.4 LwIP协议栈的httpserver测试程序 317
11.5 LwIP协议栈的udp_echo_client测试程序 319
第12章STM32F2新增的DCMI数码相机接口及应用 325
12.1 STM32F2新增的DCMI数码相机接口 325
12.1.1概述 325
12.1.2 DCMI的接口 326
12.1.3 DCMI固件库函数 327
12.2 OV7670摄像头 329
12.2.1概述 329
12.2.2 OV7670工作原理 331
12.3 CMOS摄像头测试程序 332
12.4深入CMOS摄像头驱动程序原理 335
12.4.1 SCCB协议 335
12.4.2 SCCB协议驱动程序设计 337
12.4.3 CMOS摄像头驱动程序设计 341
第13章STM32F2增强的USART接口与应用 352
13.1 STM32F2的USART接口 352
13.1.1概述 352
13.1.2 USART波特率的计算方法 354
13.1.3发送器 356
13.1.4接收器 358
13.2 USART通用串口程序设计 360
13.2.1 USART固件库函数 360
13.2.2 USART数据发送与接收程序设计 362
13.2.3中断方式的数据接收程序设计 365
13.2.4在LCD屏幕上显示USART收发数据接 368
第14章STM32F2增强的ADC模块及应用 370
14.1 STM32F2增强的ADC模块 370
14.1.1概述 370
14.1.2 STM32F2和STM32F1的ADC差异 371
14.1.3 STM32F2的ADC固件库函数 374
14.2 STM32 ADC测试程序 378
14.3 STM32 ADC程序分析 380
第15章 一步一步设计自已的嵌入式操作系统 392
15.1嵌入式操作系统 392
15.1.1概述 392
15.1.2实时操作系统 392
15.1.3常见的嵌入式操作系统 393
15.2自己设计一个简单的实时系统 398
15.2.1操作系统最核心的任务切换 398
15.2.2实时任务切换基础 403
15.2.3最简单的操作系统 411
15.2.4最简单操作系统原理分析 413
15.2.5为操作系统加上任务休眠功能 419
15.2.6任务调度策略 422
15.2.7内存分配技术 426
15.2.8任务的同步 430
15.2.9任务间通信 431
15.3 C++实时开源操作系统scmRTOS 432
15.3.1概述 432
15.3.2 scmRTOS测试程序 435
15.3.3把scmRTOS应用于前面章节的例子之中 442
第16章 一步一步设计自己的嵌入式GUI库 445
16.1嵌入式GUI 445
16.1.1概述 445
16.1.2常见的嵌入式GUI 446
16.2嵌入式GUI设计基础 449
16.3嵌入式GUI设计实例 451
16.3.1最简单的窗口程序 451
16.3.2嵌入式GUI的仿真 453
16.3.3带消息处理的GUI测试程序 456
16.3.4在main函数里处理消息的方式 458
16.4控件应用程序 459
16.4.1窗口的控件 459
16.4.2控件应用程序设计 461
16.5智能手机桌面风格的应用程序 465
16.6嵌入式GUI底层的设计 469
参考文献 482