第1章 新唐M451系列微控制器 1
1.1 M451系列芯片特性 1
1.2 M451旗舰板硬件平台 9
第2章 环境搭建 12
2.1 安装NuLink 12
2.2 平台的搭建 13
2.3 工程的创建与运行 14
2.4 硬件仿真 22
2.5 启动流程 25
2.6 ISP下载程序 36
第3章 位图编解码及内存模块 39
3.1 简介 39
3.2 结构 41
3.3 实验 44
3.3.1 位图显示 44
3.3.2 屏幕截图 53
3.4 内存模块 65
3.4.1 模块设计 65
3.4.2 位图快速显示 68
第4章 JPEG解码 75
4.1 简介 75
4.2 文件格式 78
4.3 解码过程 81
4.4 实验:显示JPEG图片 82
第5章 GIF解码 86
5.1 简介 86
5.2 实验:显示GIF图片 87
第6章 触摸按键 91
6.1 概述 91
6.2 功能描述 93
6.3 实验:触摸按键识别 97
第7章 温湿度传感器 107
7.1 简介 107
7.2 串行接口 108
7.3 实验:显示温湿度 110
第8章 红外编解码 116
8.1 简介 116
8.1.1 红外遥控器原理 116
8.1.2 遥控距离的影响因素 118
8.1.3 红外接收头 119
8.2 实验:红外捕捉 119
8.3 NEC协议 128
8.4 实验:NEC协议解码 130
第9章 音乐播放器及录音机 139
9.1 VS1053简介 139
9.2 实验 140
9.2.1 简易播放器 140
9.2.2 高级播放器带歌词显示 159
9.3 WAV文件 172
9.4 实验:录音机 176
第10章 FM 188
10.1 RDA5820简介 188
10.2 实验 190
10.2.1 FM收音机 190
10.2.2 FM空中音频传输 201
第11章 MPU6050六轴传感器 207
11.1 MPU6050简介 207
11.1.1 特征 207
11.1.2 数据读取的初始化 209
11.1.3 重要寄存器简介 210
11.2 DMP使用简介 214
11.3 实验:姿态解算 217
11.4 计步器简介 226
11.5 实验:计步器 227
第12章 摄像头 232
12.1 概述 232
12.2 OV7670简介 234
12.2.1 OV7670的特点 234
12.2.2 OV7670的功能模块 234
12.2.3 OV7670的图像数据输出格式 236
12.2.4 SM-OV7670摄像头模块 238
12.3 SCCB 240
12.3.1 概述 240
12.3.2 引脚描述 241
12.3.3 通信过程 242
12.4 AL422简介 245
12.4.1 特点 246
12.4.2 系统实现 247
12.5 实验:摄像头抓拍 249
第13章 PS/2接口 260
13.1 简介 260
13.2 PS/2键盘接口 266
13.3 实验:PS/2键盘 271
第14章 RS485 281
14.1 简介 281
14.1.1 特性 281
14.1.2 MAX485 284
14.2 实验:简单数据传输 285
第15章 CAN 293
15.1 概述 293
15.2 CAN协议 294
15.2.1 总线物理特性 294
15.2.2 冲突检测 295
15.2.3 帧结构 295
15.2.4 错误检测 300
15.2.5 错误计数 301
15.2.6 错误抑制 301
15.2.7 波特率 302
15.3 新唐CAN的特点 303
15.4 实验:CAN数据收发 304
第16章 蓝牙2.0通信 314
16.1 简介 314
16.1.1 起源 316
16.1.2 优势 317
16.2 工作原理 318
16.3 版本 320
16.4 SM-HC05蓝牙2.0模块 323
16.4.1 简介 323
16.4.2 AT指令 323
16.5 实验 325
16.5.1 AT指令测试 325
16.5.2 PC与蓝牙模块通信 331
16.5.3 手机与蓝牙模块通信 340
第17章 蓝牙4.0通信 343
17.1 简介 343
17.2 SM-BLE蓝牙4.0模块 345
17.3 AT指令 346
17.4 实验 348
17.4.1 AT指令测试 348
17.4.2 苹果/安卓手机蓝牙模块通信 351
第18章 无线2.4GHz通信 359
18.1 概述 359
18.2 实验:数据传输 367
18.3 无线串口 377
18.4 星形组网 379
18.5 握手协议 380
18.5.1 向从机0~5发送数据 380
18.5.2 从从机0~5获取数据 381
18.5.3 设置模块角色 382
18.6 实验:一对多通信 382
第19章 uIP与无线WiFi网络通信 397
19.1 uIP概述 397
19.2 uIP移植 399
19.3 uIP层次结构 400
19.3.1 实现设备驱动与uIP对接的接口程序 400
19.3.2 应用层要调用的函数 404
19.3.3 主要结构体 407
19.3.4 uIP的初始化函数与配置宏定义 411
19.4 uIP主程序循环 413
19.5 网络芯片ENC28J60 415
19.5.1 功能描述 417
19.5.2 SPI指令集与命令序列 423
19.6 uIP实验 425
19.6.1 TCP服务器通信 425
19.6.2 TCP客户端通信 438
19.6.3 UDP通信 450
19.7 WiFi概述 459
19.8 SM-ESP8266无线模块 459
19.8.1 简介 459
19.8.2 AT指令 462
19.9 无线WiFi实验:TCP服务器通信 465
第20章 USB协议 478
20.1 概述 478
20.2 数据流模型 481
20.3 四种传输类型 483
20.4 框架 485
20.5 命令 487
20.6 USB描述符 490
20.6.1 设备描述符 492
20.6.2 配置描述符 495
20.6.3 接口描述符 496
20.6.4 端点描述符 498
20.6.5 字符串描述符 500
第21章 USB设备通信 502
21.1 概述 502
21.2 特征 504
21.3 功能描述 505
21.4 实验 508
21.4.1 USB鼠标 508
21.4.2 USB键盘 520
21.4.3 USB闪存盘 529
21.4.4 USB转串口 537
21.4.5 USB数据收发 544
第22章 USB主机通信 552
22.1 概述 552
22.2 功能描述 553
22.3 实验:简易音乐播放器 554
第23章 FreeRTOS嵌入式操作系统 563
23.1 FreeRT OS特色 567
23.2 任务管理 567
23.2.1 任务函数 567
23.2.2 基本任务状态 570
23.2.3 任务创建 570
23.2.4 任务的优先级 578
23.2.5 非运行状态 581
23.2.6 空闲任务及空闲任务钩子函数 588
23.2.7 改变任务优先级 591
23.2.8 删除任务 596
23.2.9 调度算法概述 600
23.3 队列管理 602
23.3.1 概述 602
23.3.2 使用队列 604
23.3.3 复合数据类型的数据传输 612
23.3.4 大型数据单元传输 620
23.4 中断管理 621
23.4.1 延迟中断处理 621
23.4.2 计数信号量 630
23.4.3 在中断服务程序中使用队列 636
23.4.4 中断嵌套 642
23.5 资源管理 643
23.5.1 基本概念 643
23.5.2 临界区与挂起调度器 646
23.5.3 互斥量 648
23.6 内存管理 656
23.6.1 概述 656
23.6.2 内存分配方案范例 657
23.7 软件定时器 660
23.7.1 概述 660
23.7.2 例程 661
23.8 错误排查 663
23.8.1 概述 663
23.8.2 栈溢出 663
23.8.3 其他常见错误 665
23.9 FreeRTOSConfig.h 666
23.10 Cortex-M内核注意事项 682
23.10.1 有效优先级 682
23.10.2 与数值相反的优先级值和逻辑优先级设置 683
23.10.3 Cortex-M内部优先级概述 684
23.10.4 临界区 686
23.11 编码标准及风格指南 686
23.11.1 编码标准 686
23.11.2 命名规则 687
23.11.3 数据类型 688
23.11.4 风格指南 688
附录A 开发板实物照片 689
附录B 姊妹篇 691
附录C 单片机多功能调试助手 692
附录D 综合实验界面 693
参考文献 694