第1章Cortex-M3及ST微处理器概述 1
1.1Cortex-M3处理器特点l 1
1.1.1高性能 1
1.1.2采用Thumb-2指令集具有更高的效率和性能 1
1.1.3先进的中断处理功能 2
1.1.4总线矩阵和接口的应用 2
1.1.5调试支持 3
1.1.6低成本低功耗、易于使用 3
1.2CortexM3内核结构 4
1.2.1Cortex-M3的基本结构 4
1.2.2寄存器组 4
1.2.3处理器工作模式和状态 8
1.2.4异常和中断 9
1.2.5向量表 9
1.2.6堆栈实现与双堆栈机制 10
1.3Cortex-M3的指令集 10
1.4STM32F系列微控制器简介 16
1.4.1STM32F微控制器的主要特点 16
1.4.2系统架构 16
1.4.3存储器组织 18
1.4.4STM32F处理器的启动配置 20
1.4.5STM32F微控制器的应用 21
第2章RealViewMDK开发工具 22
2.1RealViewMDK概述 22
2.2uVision4集成开发环境简介 26
2.3uVision4软件开发流程 27
2.3.1使用项目 28
2.3.2源文件 31
2.4uVison4编译器选项 32
2.5项目编译和生成 34
2.5.1编译项目 34
2.5.2项目生成 35
2.6对目标设备编程(Flash编程器) 35
2.6.1Flash编程器功能简介 35
2.6.2Flash编程器工具配置 36
2.7调试程序(Debug) 37
2.7.1uVision4调试器简介 37
2.7.2uVision4调试器的使用 38
2.8简易入门实例 40
2.8.1编辑HelloC 41
2.8.2编译、链接Hello例程 41
2.8.3测试程序 41
2.9工具集的使用技巧和窍门 42
2.9.1启动代码的图形化配置 42
2.9.2仿真IO端口 44
2.9.3仿真中断和时钟中断 44
2.9.4为PC的COM端口分配串行I/O 45
2.9.5向文件中写入调试输出信息 45
第3章I/O端口应用 46
3.1通用IO端口(GPIO)功能描述 46
3.1.1单独的位设置或位清除 47
3.1.2外部中断/唤醒线 47
3.1.3复用功能(AF) 47
3.1.4软件重新映射IO复用功能 48
3.1.5GPIO锁定机制 48
3.1.6输入配置 48
3.1.7输出配置 49
3.1.8复用功能配置 49
3.1.9模拟输入配置 50
3.1.10外设的GPIO配置 50
3.2GPIO相关寄存器描述 50
3.2.1端口配置低寄存器(GPIOxCRL)(x=AG) 50
3.2.2端口配置高寄存器(GPIOxCRH)(x=AG) 51
3.2.3端口输入数据寄存器(GPIOxIDR)(x=AG) 52
3.2.4端口输出数据寄存器(GPIOxODR)(x=AG) 52
3.2.5端口位设置/清除寄存器(GPIOxBSRR)(x=AG) 53
3.2.6端口位清除寄存器(GPIOxBRR)(x=AG) 53
3.2.7端口配置锁定寄存器(GPIOxLCKR)(x=AG) 54
3.3应用实例——按键控制驱动LED 54
3.3.1设计要求 55
3.3.2硬件电路设计 55
3.3.3应用程序流程图设计 56
3.3.4应用程序代码设计 56
3.3.5程序运行追踪 61
3.3.6实例注意事项总结 61
第4章A/D转换 62
4.1A/D转换器(ADC)介绍 62
4.1.1AD转换器功能描述 62
4.1.2校准 67
4.1.3数据对齐 67
4.1.4可编程的通道采样时间 68
4.1.5外部触发转换 68
4.1.6DMA请求 69
4.1.7双ADC模式 69
4.1.8ADC中断 70
4.2ADC相关寄存器设置及功能说明 70
4.2.1ADC状态寄存器(ADCSR) 70
4.2.2ADC控制寄存器1(ADCCR1) 71
4.2.3ADC控制寄存器2(ADCCR2) 72
4.2.4ADC采样时间寄存器1(ADCSMPR1) 74
4.2.5ADC采样时间寄存器2(ADCSMPR2) 75
4.2.6ADC注入通道数据偏移寄存器x(ADCJOFRx)(x=14) 75
4.2.7ADC看门狗高阈值寄存器(ADCHTR) 76
4.2.8ADC看门狗低阈值寄存器(ADCLRT) 76
4.2.9ADC规则序列寄存器1(ADCSQR1) 77
4.2.10ADC规则序列寄存器2(ADCSQR2) 77
4.2.11ADC规则序列寄存器3(ADCSQR3) 78
4.2.12ADC注入序列寄存器(ADCJSQR) 78
4.2.13ADC注入数据寄存器x(ADCJDRx)(x=14) 79
4.2.14ADC规则数据寄存器(ADCDR) 79
4.3应用实例——压力传感器A/D转换 80
4.3.1设计要求 80
4.3.2硬件电路设计 80
4.3.3硬件原理图及说明 81
4.3.4软件程序设计流程 83
4.3.5程序代码与注释 83
4.3.6程序运行追踪 90
4.3.7实例注意事项总结 91
第5章D/A转换 92
5.1DAC转换器介绍 92
5.1.1DAC转换器功能描述 92
5.1.2双DAC通道转换 97
5.2DAC相关寄存器功能说明 100
5.2.1DAC控制寄存器(DACCR) 100
5.2.2DAC软件触发寄存器(DACSWTRIGR) 103
5.2.3DAC通道1的12位右对齐数据保持寄存器(DACDHR12R1) 103
5.2.4DAC通道1的12位左对齐数据保持寄存器(DACDHR12L1) 103
5.2.5DAC通道1的8位右对齐数据保持寄存器(DACDHR8R1) 104
5.2.6DAC通道2的12位右对齐数据保持寄存器(DACDHR12R2) 104
5.2.7DAC通道2的12位左对齐数据保持寄存器(DACDHR12L2) 105
5.2.8DAC通道2的8位右对齐数据保持寄存器(DACDHR8R2) 105
5.2.9双DAC的12位右对齐数据保持寄存器(DACDHR12RD) 105
5.2.10双DAC的12位左对齐数据保持寄存器(DACDHR12LD) 106
5.2.11双DAC的8位右对齐数据保持寄存器(DACDHR8RD) 107
5.2.12DAC通道1数据输出寄存器(DACDOR1) 107
5.2.13DAC通道2数据输出寄存器(DACDOR2) 107
5.3DAC应用实例——产生三角波电压并输出 108
5.3.1硬件电路设计 108
5.3.2软件程序设计流程 108
5.3.3程序代码设计 109
5.3.4程序运行监测 112
5.3.5实例注意事项总结 112
第6章LCD/触摸屏接口 113
6.1LCD概述 113
6.1.1LCD工作原理 113
6.1.2LCD分类 113
6.1.3如何显示 114
6.1.4液晶显示模块的控制 115
6.2触摸屏概述 115
6.2.1电阻触摸屏工作原理 115
6.2.2触摸屏电路控制 116
6.3应用实例——LCD触摸屏显示 116
6.3.1设计要求 116
6.3.2硬件电路设计 117
6.3.3软件程序设计流程 124
6.3.4程序代码与注释 124
6.3.5程序运行追踪 132
6.3.6实例注意事项总结 132
第7章数码管显示接口应用 133
7.1数码管概述 133
7.1.1数码管工作原理 133
7.1.2如何驱动数码管 134
7.2应用实例——7段数码管驱动 135
7.2.1设计要求 135
7.2.2硬件电路设计 135
7.2.3数码管驱动程序流程图分析 137
7.2.4数码管驱动应用程序源代码设计 137
7.2.5程序运行实时监测 143
7.2.6实例注意事项总结 143
第8章SPI接口 144
8.1串行外设(SPI)接口介绍 144
8.1.1串行外设接口功能描述 144
8.1.2配置SPI为从模式 147
8.1.3配置SPI为主模式 148
8.1.4配置SPI为单工通信 148
8.1.5数据发送与接收过程 149
8.1.6CRC计算 152
8.1.7状态标志 153
8.1.8关闭SPI 153
8.1.9利用DMA的SPI通信 154
8.1.10错误标志 154
8.1.11SPI中断 155
8.2微处理器SPI接口相关寄存器功能说明 155
8.2.1SPI控制寄存器1(SPI_CR1) 155
8.2.2SPI控制寄存器2(SPI_CR2) 157
8.2.3SPI状态寄存(SPI_SR) 157
8.2.4SPI数据寄存器(SPI_DR) 158
8.2.5SPICRC多项式寄存器(SPI_CRCPR) 158
8.2.6SPIRxCRC寄存器(SPI_RXCRCR) 159
8.2.7SPITxCRC寄存器(SPI_TXCRCR) 159
8.3应用实例——利用SPI接口访问串行Flash 160
8.3.1设计要求 160
8.3.2硬件电路设计 160
8.3.3硬件电路原理图说明 167
8.3.4应用程序流程图及时序分析 167
8.3.5应用程序代码设计 168
8.3.6程序运行实时监测 171
8.3.7实例注意事项总结 171
第9章I2C接口 172
9.1I2C接口简介 172
9.1.1I2C接口功能描述 173
9.1.2I2C中断请求 181
9.1.3SMBus 182
9.1.4I2C调试模式 182
9.2微处理器I2C接口相关寄存器功能 183
9.2.1 I2C控制寄存器1(I2C_CR1) 183
9.2.2 I2C控制寄存器2(I2C_CR2) 184
9.2.3 I2C自身地址寄存器1(I2C_OARI) 185
9.2.4 I2C自身地址寄存器2(I2C_OAR2) 186
9.2.5 I2C数据寄存器(I2C_DR) 186
9.2.6 I2状态寄存器1(I2C_SRI) 187
9.2.7 I2C状态寄存器2(I2C_SR2) 189
9.2.8 I2C时钟控制寄存器(I2C_CCR) 190
9.2.9 I2CTRISE寄存器(I2C_TRISE) 190
9.3应用实例——实现温度传感器读写 191
9.3.1设计要求 191
9.3.2硬件电路设计 191
9.3.3温度传感器硬件原理图说明 195
9.3.4应用程序流程图分析 196
9.3.5应用程序代码设计 196
9.3.6程序运行实时追踪 199
9.3.7实例注意事项总结 199
第10章全速USB接口 200
10.1USB接口简介 200
10.1.1USB功能描述 200
10.1.2USB功能模块的组成 201
10.1.3USB接口编程中需要考虑的问题 202
10.2USB接口相关寄存器描述符说明 209
10.2.1通用寄存器 209
10.2.2端点寄存器 213
10.2.3缓冲区描述表 216
10.3应用实例——USB音频设备设计 218
10.3.1设计要求 218
10.3.2硬件电路设计 218
10.3.3硬件电路原理图说明 218
10.3.4USB音频设备编程介绍 220
10.3.5应用程序流程图分析 223
10.3.6应用程序代码设计 223
10.3.7程序运行实时追踪 233
10.3.8实例注意事项总结 233
第11章以太网控制器模块设计 234
11.1以太网接口介绍 234
11.1.1以太网模块主要功能 234
11.1.2以太网模块引脚和内部信号 236
11.1.3以太网模块功能描述:SMI、MIl和RMII 237
11.2以太网寄存器描述 242
11.2.1MAC寄存器描述 242
11.2.2MMC寄存器描述 254
11.2.3IEEE1588时间戳寄存器描述 259
11.2.4DMA寄存器描述 263
11.3应用实例——实现与收发器DP83848C的以太网通信 274
11.3.1设计要求 274
11.3.2硬件电路设计 274
11.3.3硬件电路原理设计 280
11.3.4应用程序流程图分析 282
11.3.5应用程序代码设计 283
11.3.7程序运行实时追踪 290
11.3.8实例注意事项总结 291
第12章NORFlash应用 292
12.1FSMC接口功能描述 292
12.1.1外部设备地址映像 293
12.1.2NOR和PSRAM地址映像 294
12.1.3NOR闪存和PSRAM的非对齐访问支持 294
12.1.4NAND和PC卡地址映像 294
12.2AHB总线接口简介 295
12.2.1支持的存储器和操作 295
12.2.2配置寄存器 296
12.3NOR闪存和PSRAM控制器 296
12.3.1外部存储器接口信号 296
12.3.2NOR闪存和PSRAM控制器支持的存储器类型及其操作方式 297
12.3.3NOR闪存和PSRAM控制器时序图 298
12.4NOR闪存和PSRAM控制器寄存器功能 305
12.4.1SRAM/NOR闪存片选控制寄存器1~4(FSMCBCR1~4) 305
12.4.2SRAM/NOR闪存片选时序寄存器1~4(FSMCBTR1~4) 307
12.4.3SRAM/NOR闪存写时序寄存器1~4(FSMCBWTRI~4) 308
12.5应用实例——实现存储器M29W128FL读/写 310
12.5.1硬件设计 310
12.5.2硬件电路原理图说明 321
12.5.3应用程序流程图 321
12.5.4NOR闪存应用程序代码设计 322
12.5.5调试程序及程序运行实时追踪 326
12.5.6实例注意事项总结 326
第13章SD/MMC应用 327
13.1SDIO接口概述 327
13.1.1SDIO的主要功能 327
13.1.2SDIO总线拓扑 327
13.2SDIO接口功能描述 328
13.2.1SDIO适配器 329
13.2.2SDIOAHB接口 335
13.3SDIO接口卡介绍 337
13.3.1卡状态寄存器 337
13.3.2SD状态寄存器 339
13.3.3SD的I/O功能模式 341
13.3.4命令集简介 342
13.3.5命令响应格式简介 344
13.4SDIO接口寄存器功能描述 347
13.4.1SDIO电源控制寄存器(SDIO_POWER) 347
13.4.2SDIO时钟控制寄存器(SDIO_CLKCR) 348
13.4.3SDIO参数寄存器(SDIO_ARG) 348
13.4.4SDIO命令寄存器(SDIO_CMD) 349
13.4.5SDIO命令响应寄存器(SDIO_RESPCMD) 350
13.4.6SDIO响应14寄存器(SDIO_RESPx) 350
13.4.7SDIO数据定时器寄存器(SDIO_DTIMER) 351
13.4.8SDIO数据长度寄存器(SDIO_DLEN) 351
13.4.9SDIO数据控制寄存器(SDIO_DCTRL) 352
13.4.10SDIO数据计数器寄存器(SDIO_DCOUNT) 353
13.4.11SDIO状态寄存器(SDIO_STA) 353
13.4.12SDIO清除中断寄存器(SDIO_ICR) 354
13.4.13SDIO中断屏蔽寄存器(SDIOMASK) 356
13.4.14SDIOFIFO计数器寄存器(SDIOFIFOCNT) 357
13.4.15SDIOFIFO数据寄存器(SDIOFIFO) 358
13.5应用实例——实现SD/MMC存储卡的读/写 358
13.5.1设计要求 358
13.5.2硬件电路设计 359
13.5.3硬件电路原理图说明 360
13.5.4应用程序流程图分析 360
13.5.5应用程序代码设计 361
13.5.6程序运行实时追踪 367
13.5.7实例注意事项总结 367
第14章无线数据传输综合应用项目 368
14.1嵌入式图形用户界面uC/GUI移植 368
14.2无线数据传输应用实例 370
14.2.1设计要求 370
14.2.2主要器件介绍 371
14.2.3芯片nRF24L01增强型ShockBurst模式配置与编程 379
14.2.4硬件电路设计 379
14.2.5应用程序设计流程图 380
14.2.6程序代码设计 381
14.3实例注意事项总结 390
第15章永磁同步电机控制综合应用项目 392
15.1永磁同步电机概述 392
15.1.1永磁同步电机的工作原理 392
15.1.2电机伺服系统的基本结构 393
15.1.3功率驱动控制单元 394
15.1.4磁场定向控制(FOC) 394
15.2永磁同步电机控制应用实例设计 397
15.2.1设计要求 398
15.2.2硬件电路设计 399
15.2.3应用程序设计流程图 403
15.2.4程序代码设计 404
15.3程序运行实时追踪 418
15.4实例注意事项总结 418
第16章车载GPS移动导航应用项目 419
16.1GPS系统概述 419
16.1.1GPS系统工作原理 420
16.1.2GPS数据格式 420
16.2车载GPS移动导航应用实例 424
16.2.1设计要求 424
16.2.2硬件电路设计 425
16.2.3应用程序设计流程图 425
16.2.4软件代码设计 425
16.3实例注意事项总结 446
第17章RFID+GPRS基于物联网技术的综合应用 447
17.1uC/OS-11概述 447
17.1.1utC/OS-ll简介 447
17.1.2uC/OS-1Ⅱ的特点 448
17.2uC/OS-II内核介绍 448
17.2.1uC/OS-Ⅱ内核结构 449
17.2.2任务管理 456
17.2.3时间管理 457
17.2.4任务之间的通信与同步 458
17.2.5内存管理 459
17.3uC/OS-II移植 460
17.3.1uC/OS-11文件体系结构 460
17.3.2移植uC/OS-II满足的条件 461
17.3.3移植要点 461
17.4综合实例——RFID+GPRS基于物联网技术的应用 464
17.4.1硬件电路设计 464
17.4.2uC/OS-Ⅱ软件设计 467
17.4.3程序运行实例说明 481
17.5实例注意事项总结 483