第1章 绪论 1
1.1 微处理器定义 1
1.2 ARM发展历程 3
1.3 ARM体系结构与特点 5
1.4 处理器选型 9
1.4.1 嵌入式微处理器选型的考虑因素 9
1.4.2 嵌入式微处理器选型示例 10
第2章 ARM核体系结构 11
2.1 寄存器 15
2.2 ALU 21
2.3 存储部件 21
2.4 中断控制 26
2.5 总线 27
2.6 外围接口I/O 28
2.7 流水线 28
2.8 ARM协处理器接口 29
第3章 ARM指令集 30
3.1 指令简介 31
3.2 ARM寻址方式 34
3.2.1 数据处理指令的操作数的寻址方式 34
3.2.2 字及无符号字节的Load/Store指令的寻址方式 35
3.2.3 杂类Load/Store指令的寻址方式 36
3.2.4 批量Load/Store指令的寻址方式 37
3.2.5 协处理器Load/Store指令的寻址方式 39
3.3 Cortex指令集 39
3.3.1 数据传送类指令 40
3.3.2 数据处理指令 44
3.3.3 其他计算类指令 48
3.3.4 饱和运算 48
3.3.5 无条件跳转指令 49
3.3.6 标志位与条件转移指令 49
3.3.7 IF-THEN指令块 52
3.3.8 Barrier隔离指令 53
3.3.9 其他一些有用的指令 53
3.3.10 对内存的互斥访问 54
3.4 伪指令 55
3.5 内嵌汇编 57
第4章 Cortex-M3特性 58
4.1 特殊功能寄存器 58
4.2 中断建立全过程的演示 66
4.3 复位序列 67
4.4 中断咬尾 67
4.5 晚到异常 68
4.6 位带操作 69
4.7 互斥访问 74
第5章 C语言与汇编语言混编 76
5.1 ATPCS与AAPCS 76
5.2 嵌入式C编写与编译 80
5.3 C语言与汇编语言混编规范 88
5.3.1 内嵌汇编 88
5.3.2 汇编程序中访问C全局变量 92
5.3.3 C语言与汇编语言的相互调用 92
5.4 C语言与汇编语言混编实践 94
5.4.1 Keil使用和STM32固件库 95
5.4.2 建立自己的第一个Keil程序 98
第6章 STM32输入/输出 101
6.1 pin配置 101
6.1.1 单独的位设置或位清除 106
6.1.2 外部中断/唤醒线 106
6.1.3 复用功能 106
6.1.4 软件重新映射I/O复用功能 106
6.1.5 GPIO锁定机制 106
6.1.6 输入配置 107
6.1.7 输出配置 107
6.1.8 复用功能配置 107
6.1.9 模拟输入配置 107
6.2 输入/输出基本概念(寄存器、输入/输出类型) 107
6.2.1 基本概念 107
6.2.2 寄存器详解 108
6.2.3 复用I/O配置寄存器 113
6.2.4 通用I/O和AFIO使用的配置步骤 118
6.3 通用I/O锁定机制 122
6.4 系统时钟 123
6.4.1 时钟配置 123
6.4.2 时钟输出的使能控制 125
6.5 输入/输出常用固件库函数 127
6.5.1 GPIO_DeInit函数 127
6.5.2 GPIO_AFIODeInit函数 127
6.5.3 GPIO_Init函数 128
6.5.4 GPIO_StructInit函数 129
6.5.5 GPIO_ReadInputDataBit函数 130
6.5.6 GPIO_ReadInputData函数 130
6.5.7 GPIO_ReadOutputDataBit函数 131
6.5.8 GPIO_ReadOutputData函数 131
6.5.9 GPIO_SetBits函数 131
6.5.10 GPIO_ResetBits函数 132
6.5.11G PIO_WriteBit函数 133
6.5.12 GPIO_Write函数 134
6.5.13 GPIO_PinLockConfig函数 134
6.5.14 GPIO_EventOutputConfig函数 135
6.5.15 GPIO_EventOutputCmd函数 137
6.5.16 GPIO_PinRemapConfig函数 137
6.5.17 GPIO_EXTILineConfig函数 138
6.6 GPIO控制LED灯 139
6.6.1 硬件设计 139
6.6.2 软件设计 141
6.7 GPIO控制蜂鸣器 142
6.7.1 硬件设计 142
6.7.2 软件设计 144
6.8 跑马灯实验 145
6.8.1 硬件设计 145
6.8.2 软件设计 146
6.9 LCD1602驱动 149
6.9.1 硬件设计 150
6.9.2 软件设计 159
第7章 串行通信模块与中断程序 160
7.1 接口与通信标准 160
7.1.1 I2C接口 160
7.1.2 通用同步/异步收发器(USART) 163
7.1.3 串行外设接口(SPI) 167
7.1.4 控制器区域网络(CAN) 174
7.1.5 通用串行总线(USB) 182
7.2 串口USART实例 190
7.3 扫描键盘 195
7.4 继电器 203
7.5 脉宽调制 204
7.6 步进电动机 209
第8章 STM32带操作系统编程 213
8.1 RAM、Flash启动 214
8.2 小型操作系统STM32移植 216
8.2.1 μCOS-Ⅱ内核简介 217
8.2.2 开始移植 217
8.2.3 程序开发模式讨论 221
第9章 综合案例 223
9.1 硬件连接方式 226
9.2 驱动软件编写 227
9.2.1 串口通信 227
9.2.2 数据采集 228
9.2.3 小车的方向控制 229
9.2.4 小车的速度控制 232
9.3 Z-Stack软件框架 233
9.3.1 任务调度 233
9.3.2 ZigBee无线传输系统开发 234
9.4 计算机端程序开发 236
附录A STM32F10x.h中的定义 239
附录B LCD1602程序 241