第1章 Cortex-M4内核简介 1
1.1 主流的ARM处理器介绍 1
1.1.1 ARM体系结构的命名规则 2
1.1.2 ARM Cortex应用程序处理器 2
1.1.3 ARM Cortex嵌入式处理器 4
1.1.4 经典ARM处理器 8
1.1.5 ARM专家处理器 9
1.1.6 其他ARM处理器 10
1.1.7 ARM处理器的特点 11
1.2 应用领域 11
1.3 ARM Cortex-M4简介 12
1.3.1 Cortex-M4信号处理技术 13
1.3.2 ARM Cortex-M微控制器技术 13
1.4 以ARM Cortex-M4为核心的处理器 14
本章小结 16
第2章 Cortex-M4内核结构 17
2.1 Cortex-M4处理器与核心外围设备 17
2.2 流水线 21
2.3 Cortex-M4的总线接口 23
2.4 Cortex-M4相关寄存器组 28
2.4.1 寄存器 28
2.4.2 异常与中断 34
2.5 操作模式 34
本章小结 35
第3章 Cortex-M4汇编指令集 37
3.1 Cortex-M4指令集 37
3.1.1 ARM32和Thumb指令集 37
3.1.2 Thumb-2指令集 38
3.2 CMSIS标准 38
3.3 ARM汇编语言基础 39
3.3.1 指令的格式 40
3.3.2 操作数 40
3.3.3 PC与SP寄存器的使用限制 40
3.3.4 灵活的第二个操作数 40
3.3.5 移位运算 40
3.3.6 地址对齐 43
3.3.7 标号——PC相对地址表达式 44
3.3.8 条件码 44
3.3.9 指令宽度 46
3.4 Cortex-M4处理器寻址方式 47
3.4.1 立即寻址 47
3.4.2 寄存器寻址 48
3.4.3 寄存器间接寻址 48
3.4.4 寄存器偏移寻址 48
3.4.5 基址变址寻址 48
3.4.6 多寄存器寻址 49
3.4.7 堆栈寻址 49
3.5 Cortex-M4指令集 50
3.5.1 分支指令 50
3.5.2 常见的数据处理指令 55
3.5.3 乘除指令 59
3.5.4 饱和指令 61
3.5.5 扩展指令 62
3.5.6 位段操作指令 63
3.5.7 状态寄存器访问指令 65
3.5.8 加载存储指令 67
3.5.9 多寄存器加载和存储指令 69
3.5.1 0杂项处理指令 70
3.5.1 1异常生成指令 72
3.5.1 2 协处理指令——Cortex-M4不支持的指令 73
3.6 汇编实例 74
本章小结 75
第4章 DSP扩展指令和FPU 77
4.1 简介 77
4.2 DSP扩展指令 77
4.2.1 乘加指令 78
4.2.2 饱和指令 82
4.2.3 位段指令 83
4.2.4 SIMD并行加减指令 85
4.2.5 杂项数据处理指令 86
4.3 FPU 87
4.3.1 FPU的寄存器 87
4.3.2 FPU的操作模式 88
4.3.3 浮点数加载存储指令 88
4.3.4 浮点数寄存器传送指令 89
4.3.5 浮点数数据处理指令 89
本章小结 91
第5章 Cortex-M4汇编与C混合编程 93
5.1 ATPCS概述 93
5.1.1 寄存器的使用规则 94
5.1.2 数据栈使用规则 94
5.1.3 参数传递规则 95
5.2 内嵌汇编 96
5.2.1 内嵌汇编的语法格式 96
5.2.2 内嵌汇编指令的特点 96
5.2.3 内嵌汇编指令注意事项 98
5.2.4 内嵌汇编指令举例 100
5.3 ARM中的汇编和C语言相互调用 101
5.3.1 从汇编程序中访问C程序变量 102
5.3.2 C程序调用汇编程序 102
5.3.3 汇编程序调用C程序 104
本章小结 104
第6章 系统控制和存储管理 105
6.1 系统控制 105
6.1.1 系统控制和ID寄存器 106
6.1.2 系统定时器 107
6.1.3 可嵌套中断向量控制器(NVIC) 108
6.1.4 内存保护系统架构(PMSAv7) 109
6.2 内存映射 109
6.2.1 对齐访问 112
6.2.2 字节序(Endian) 113
6.3 位带操作 114
6.3.1 bit-band和bit-band alias区域的访问 116
6.3.2 bit-banding的功能 116
6.4 内存保护单元(MPU) 117
6.4.1 内存保护单无(MPU)简介 117
6.4.2 MPU寄存器组 119
6.4.3 MPU应用示例 122
本章小结 123
第7章 Cortex-M4的异常处理 125
7.1 异常类型 125
7.2 异常的优先级 127
7.3 异常向量表 130
7.4 异常处理 131
7.4.1 异常的进入 131
7.4.2 异常中断的响应时序 132
7.4.3 异常的返回 133
7.4.4 中断late-arrive和tail-chaining机制 133
7.5 故障类异常 135
7.5.1 总线故障 135
7.5.2 存储器管理故障 136
7.5.3 应用故障 138
7.5.4 硬故障 139
本章小结 139
第8章 嵌套中断向量控制器 141
8.1 NVIC介绍 141
8.2 NVIC工作原理 142
8.3 NVIC寄存器 143
8.4 中断编程实例 145
本章小结 151
第9章 Cortex-M4调试与跟踪系统 153
9.1 嵌入式调试技术概述 153
9.2 CoreSight技术介绍 154
9.3 Cortex-M4调试架构 155
9.4 SW-DP和SWJ-DP 156
9.4.1 SWJ-DP 156
9.4.2 SWJ-DP接口 157
9.4.3 SWJ-DP中JTAG和SWD的选择机制 157
9.5 Cortex-M4调试模式 158
9.6 Cortex-M4的跟踪系统 160
9.6.1 数据观察点与跟踪(DWT) 161
9.6.2 仪器化跟踪宏单元(ITM) 162
9.6.3 嵌入式跟踪单元ETM 163
9.6.4 跟踪端口接口单元(TPIU) 163
9.6.5 闪存地址重载及断点单元(FPB) 164
本章小结 165
第10章 开发环境介绍 167
10.1 USBDM调试器 167
10.2 CodeWarrior for MCU v10.2 介绍 168
10.2.1 CodeWarrior的功能和特点 168
10.2.2 CodeWarrior安装与配置 168
10.2.3 建立第一个工程 169
10.3 Keil MDK介绍 171
10.4 Keil ULINK仿真器 173
10.5 MDK-ARM的软件开发周期 174
10.6 μVisionIDE的使用 174
10.6.1 μVision调试器 176
10.6.2 建立第一个工程 177
10.6.3 调试 180
10.6.4 烧写Flash 185
10.7 IAR forARM基本介绍 186
10.7.1 IAR EWARM开发环境IDE介绍 187
10.7.2 建立第一个工程 188
10.7.3 调试器C-SPY 191
本章小结 193
第11章 以μC/OS-Ⅱ移植例程理解Cortex-M4内核编程 195
11.1 μC/OS-Ⅱ操作系统 195
11.1.1 μC/OS-Ⅱ操作系统简介 195
11.1.2 μC/OS-Ⅱ的工作原理 196
11.2 μC/OS-Ⅱ在Kinetis K10开发板上的移植 196
11.2.1 μC/OS-Ⅱ目录结构简介 196
11.2.2 移植概述 197
11.2.3 移植详解 198
11.3 测试μC/OS-Ⅱ 209
11.4 板级支持包 214
本章小结 214
第12章 基于Cortex-M4内核的Kinetis架构介绍 215
12.1 Cortex-M4总线接口 215
12.2 Cortex-M4内核同Kinetis系统架构的连接 216
12.3 交叉开关 218
12.3.1 交叉开关简介 218
12.3.2 交叉开关的寄存器定义 218
12.3.3 交叉开关功能描述 219
12.3.4 Kinetis K10处理器中的交叉开关 219
12.3.5 Kinetis K10处理器中的MPU 220
本章小结 221
第13章 Kinetis系统控制模块和时钟模块 223
13.1 Kinetis的系统控制 223
13.1.1 Kinetis架构 223
13.1.2 核心总线 224
13.1.3 交叉开关 224
13.1.4 内存耦合 226
13.1.5 系统访问时间 228
13.2 时钟管理 229
13.2.1 多时钟发生器 229
13.2.2 系统振荡器 235
13.2.3 实时时钟振荡器 238
13.3 电源管理 238
13.3.1 电源模式 239
13.3.2 进入及退出电源模式 240
13.3.3 电源模式转换 240
13.3.4 电源模式关闭序列 240
13.3.5 低功耗模式操作模块 241
13.3.6 时钟门控技术 244
13.3.7 时钟初始化实例 244
本章小结 248
第14章 Freescale Kinetis开发实例 249
14.1 系统初始化框架 249
14.2 GPIO 257
14.3 实时时钟RTC 266
14.4 通用异步收发器 272
14.4.1 UART功能概述 272
14.4.2 UART相关寄存器 273
14.4.3 UART测试实例 278
14.5 定时器 287
14.5.1 定时器简介 287
14.5.2 定时器测试实例 288
14.6 看门狗 291
14.6.1 看门狗简介 291
14.6.2 测试实例 293
14.7 模/数转换模块 295
14.7.1 ADC功能概述 295
14.7.2 ADC特殊功能寄存器 296
14.7.3 ADC测试实例 298
14.8 矩阵键盘 300
14.8.1 键盘概述 300
14.8.2 矩阵键盘测试实例 302
14.9 PWM模块操作(servo9g舵机) 309
14.9.1 FTM功能概述 309
14.9.2 FTM特殊功能寄存器 310
14.9.3 FTM控制舵机测试实例 318
本章小结 324
参考文献 325