第1章 单片机基础 1
1.1 什么是单片机 1
1.2 单片机是如何工作的 3
1.3 单片机与计算机的区别 7
1.4 晶振 10
1.5 系统时钟和周期 10
1.6 单片机指令和汇编语言 13
1.7 RAM/ROM的作用 20
1.8 单片机接口 21
1.9 接口驱动能力 27
1.10 方便实用的中断 32
1.11 函数和堆栈 42
1.12 单片机PAGE/BANK概念 46
1.13 CISC与RISC 48
1.14 为什么DSP“跑得快” 50
1.15 单片机产品开发常见用语 52
第2章 单片机应用小技巧 57
2.1 用I/O模拟接口 57
2.2 交流特性显神通 62
2.3 电阻网络低成本高速AD 64
2.4 利用电容充放电测电阻 68
2.5 晶振也能控制电源 69
2.6 如何降低功耗 70
2.7 开机请用NOP 75
2.8 查表与乘除法 76
2.9 RAM动态装载程序 80
2.10 程序也可被压缩 87
2.11 累计误差 89
2.12 让定时更准一些 91
2.13 寄存器也可当RAM 92
2.14 清中断标志的位置 95
2.15 键盘扫描 97
2.16 视觉暂留 99
2.17 让耳朵优先 100
2.18 1000与1024 101
2.19 PWM 102
2.20 单片机与虚拟机 104
第3章 单片机高级特性 107
3.1 Cache 108
3.2 总线 118
3.3 DMA 125
3.4 存储器管理 129
3.5 嵌入式与操作系统 136
第4章 单片机C语言 150
4.1 单片机C语言简介 150
4.2 for()/while()循环 152
4.3 循环里的i++与i-- 159
4.4 优化的方法与效果 161
4.5 全局变量的风险 171
4.6 变量类型与代码效率 179
4.7 慎用int 182
4.8 危险的指针 183
4.9 循环延时 191
4.10 运算表达式 195
4.11 溢出 200
4.12 强制转换 205
4.13 高效实用位运算 208
4.14 宏和register 212
4.15 手机里的计算器 221
4.16 函数设计 227
4.17 某产品函数编写规则 233
第5章 问题分析与调试 245
5.1 应该具备基本硬件能力 245
5.2 使自己站在别人的角度来思考问题 248
5.3 先找自己原因再假定他人出错 253
5.4 充分发掘IDE调试工具功能 255
5.5 IDE调试工具也会导致错误产生 263
5.6 没有IDE调试工具的测试 265
5.7 C语言要多查看汇编代码 266
5.8 养成查看寄存器内容的习惯 269
5.9 中断的一些特殊情况 270
5.10 别迷信文档与硬件 274
5.11 程序暂停不代表所有模块暂停 277
5.12 几种仪器好帮手 279
5.13 多用计算机工具软件 283
5.14 串口通信不能使用隔离变压器分析实例 286
5.15 Cache导致录音有杂音分析实例 287
5.16 Cache导致RAM验证结果不对分析实例 294
5.17 双口RAM读/写竞争出错分析实例 297
第6章 实际产品开发 302
6.1 如何开发一个产品 302
6.2 学会看电气参数表 303
6.3 接口的匹配 310
6.4 电源和地的影响 313
6.5 成本意识 317
6.6 别烦流程图 320
6.7 功能的全面与实用 322
6.8 批量产品的替代方案 324
6.9 多了解新器件 326
6.10 尽可能让生产更方便 329
6.11 性能预估 331
6.12 电磁兼容 335
6.13 上电与测试 336
6.14 程序版本发放记录 337
参考文献 343