01 绪论 2
1.1 综述 2
1.2 概念 2
1.2.1 控制系统的意义 2
1.2.2 使用电子设备和嵌入式计算机的原因 3
1.2.3 计算机嵌入的方式 4
1.2.4 嵌入式系统案例 5
1.2.5 典型的嵌入式系统软件操作 8
1.2.6 嵌入式系统属性 8
1.3 应用平台 12
1.3.1 概述 12
1.3.2 处理器 13
1.3.3 MCU 14
1.3.4 开发板 14
1.4 总结 15
1.5 练习 15
02 通用输入/输出接口 18
2.1 综述 18
2.2 MCU外部:0和1,电压和电流 18
2.2.1 输入信号 19
2.2.2 输出信号 19
2.2.3 与开关和LED灯交互 20
2.3 MCU内部 21
2.3.1 准备:控制寄存器和C代码 21
2.3.2 配置I/O路径 24
2.3.3 GPIO外围设备 27
2.3.4 将C代码组合起来 30
2.3.5 更多接口实例 31
2.3.6 其他引脚配置选项 34
2.4 总结 36
2.5 练习 36
03 软件并行基础 38
3.1 综述 38
3.2 概念 38
3.2.1 初始程序 39
3.2.2 任务的创建与使用 41
3.3 提高响应 45
3.3.1 中断和事件触发 46
3.3.2 通过有限状态机减少任务执行次数 50
3.3.3 使用硬件节省CPU时间 54
3.4 高级调度问题 57
3.4.1 等待 58
3.4.2 任务优先级 59
3.4.3 任务抢占 60
3.4.4 实时系统 61
3.5 总结 61
3.6 练习 61
04 Arm Cortex-M0+处理器内核和中断 65
4.1 综述 65
4.2 CPU内核 65
4.2.1 概念 65
4.2.2 架构 67
4.3 异常和中断 77
4.3.1 CPU异常处理 77
4.3.2 中断与异常硬件 79
4.3.3 中断软件 86
4.4 总结 92
4.5 练习 93
05 C汇编语言 95
5.1 综述 95
5.2 背景 95
5.3 软件开发工具 95
5.3.1 程序构建工具 96
5.3.2 编程器 99
5.3.3 调试器 99
5.4 C语言基础 100
5.4.1 程序与函数 100
5.4.2 启动代码 101
5.4.3 存储器类型 101
5.4.4 一个程序的存储器需求 101
5.5 构建函数 102
5.5.1 寄存器使用规范 103
5.5.2 程序首部与程序尾部 104
5.5.3 异常处理程序 106
5.6 控制程序流程 107
5.6.1 条件结构 107
5.6.2 循环结构 110
5.6.3 调用子函数 113
5.7 访问内存中的数据 114
5.7.1 静态分配内存 114
5.7.2 自动分配内存 115
5.7.3 动态分配内存和指针 116
5.7.4 数组元素 117
5.8 总结 119
5.9 练习 120
06 模拟接口 122
6.1 综述 122
6.2 简介 122
6.2.1 背景 122
6.2.2 概念 122
6.2.3 采样与量化 123
6.3 数模转换器 125
6.3.1 概念 125
6.3.2 转换器结构 126
6.3.3 Kinetis KL25ZDAC 126
6.3.4 应用实例:波形发生器 127
6.4 模拟比较器 128
6.4.1 概念 128
6.4.2 Kinetis KL25Z比较器 129
6.4.3 应用实例:电压转换监视器 131
6.5 模数转换器 132
6.5.1 概念 132
6.5.2 Kinetis KL25Z ADC 134
6.5.3 应用实例 138
6.6 总结 145
6.7 练习 146
07 定时器 148
7.1 综述 148
7.2 概念 148
7.2.1 定时器硬件电路 148
7.2.2 定时器应用实例 149
7.3 定时器外设 151
7.3.1 SysTick定时器 151
7.3.2 Kinetis KL25Z正确操作计算机看门狗定时器 153
7.3.3 Kinetis KL25Z定时器/脉冲宽度调制模块 157
7.4 总结 168
7.5 练习 169
08 串行通信 171
8.1 综述 171
8.2 概念 171
8.2.1 背景 171
8.2.2 使用方法 172
8.2.3 开发工具 174
8.2.4 通信软件结构 175
8.3 串行通信协议与外设 180
8.3.1 同步串行通信 180
8.3.2 异步串行通信 186
8.3.3 内部集成电路(Inter-Integrated Circuit,I2C)总线 194
8.4 总结 204
8.5 练习 204
09 直接内存访问 207
9.1 综述 207
9.2 概念 207
9.3 KL25Z DMA控制器和多路复用器外设 208
9.3.1 DMA多路复用器和触发源 209
9.3.2 DMA控制器 210
9.3.3 基本DMA配置和使用 211
9.3.4 实例 211
9.4 总结 218
9.5 练习 218
测量FRDM-KL25Z的电流、功率和能量 220
A.1 综述 220
A.2 FRDM-KL25Z的供电系统架构 220
A.2.1 电源输入 220
A.2.2 稳压 221
A.2.3 电源域 221
A.3 电流测量和功率计算 221
A.3.1 测量目标MCU电流 222
A.3.2 测量OpenSDA调试电路电流 222
A.3.3 测量稳压器输出电流 222
A.4 功率降低 222
A.4.1 断开OpenSDA调试MCU供电与重启线 222
A.4.2 断开稳压器UI 223
A.5 电能测量 223
A.5.1 基于电容测量 223
A.5.2 实现 224
A.6 电路改造总结 224
词汇表 226
参考文献 232