基础篇 3
第1章 ARM嵌入式基础 3
1.1 ARM嵌入式系统简介 3
1.1.1 ARM嵌入式的发展历程及其应用 3
1.1.2 ARM嵌入式的性能特性 5
1.1.3 ARM嵌入式系统的开发要点 6
1.1.4常用车载ARM嵌入式芯片STM32F103XX 8
1.2 ARM嵌入式系统的开发环境 9
1.2.1 Keil MDK简介 10
1.2.2 Keil MDK开发步骤 12
1.3 ARM嵌入式系统的硬件构成 17
1.3.1 ARM嵌入式处理器结构 18
1.3.2 ARM嵌入式中的指令 19
1.3.3 ARM硬件配置 20
1.4 ARM嵌入式系统开发实例——车载嵌入式芯片STM32F103XX 21
1.4.1系统资源与性能参数 21
1.4.2系统硬件设计 24
1.4.3系统外围接口 25
第2章 ARM指令系统 27
2.1 ARM指令系统简介 27
2.1.1 ARM汇编语言的基本语法 28
2.1.2 ARM汇编指令中的后缀 31
2.1.3 ARM汇编指令的书写格式 31
2.2 ARM指令集的基本概念 33
2.2.1 ARM指令的基本格式 33
2.2.2 ARM指令中的条件执行 34
2.2.3 ARM指令中的S标志 36
2.3 ARM指令集的类型 37
2.3.1跳转指令 37
2.3.2算术运算指令 43
2.3.3逻辑运算指令 55
2.3.4存储器访问指令 60
2.3.5数据传送指令 62
2.3.6协处理器指令 65
2.3.7异常中断产生指令 69
2.3.8 ARM指令小结 70
2.4 Thumb指令集 70
2.4.1 Thumb指令的基本概念 70
2.4.2 Thumb指令集的结构 71
2.4.3 Thumb状态下的寄存器 72
2.4.4 Thumb指令集的类型 73
2.4.5 Thumb指令小结 73
第3章 STM32嵌入式处理器 74
3.1 STM32F103XX系统简介 74
3.1.1 STM32F103XX系列处理器芯片 75
3.1.2 STM32F103XX器件信息 76
3.2 STM32F103XX引脚信息 78
3.3 STM32F103XX的内部结构 82
3.3.1 STM32F103XX芯片总体结构 83
3.3.2 STM32F103XX片上FLASH程序存储器 83
3.3.3 STM32F103XX片内静态RAM 84
3.4 STM32F103XX存储器映射 84
3.4.1存储系统中的大/小端配置 85
3.4.2系统存储器的映射 85
3.4.3系统存储器的访问属性 87
3.4.4系统存储器的地址重映射 88
3.4.5系统存储中止的异常 89
3.5 STM32F103XX的系统控制模块 89
3.5.1晶体振荡器 91
3.5.2外部中断输入 92
3.5.3系统的启动模式 93
3.5.4系统锁相环PLL 94
3.5.5系统休眠与低功耗 95
3.5.6系统复位 98
3.5.7系统时钟分频 100
3.5.8系统掉电检测与控制 100
3.6 STM32F103XX向量中断控制器 101
3.6.1中断的概念与类型 101
3.6.2外部中断/事件控制器的特点与结构 103
3.6.3 EXTI的寄存器 105
3.6.4中断的处理过程 107
第4章 嵌入式程序设计 109
4.1 STM32F103XX处理器的汇编程序开发框架 109
4.1.1 ARM汇编语言中的代码程序段 110
4.1.2 ARM汇编语言中的数据程序段 111
4.1.3 ARM汇编语言中的宏定义 112
4.1.4 ARM汇编语言中的符号数据 113
4.2 STM32F103XX处理器的数据操作 114
4.2.1 C语言中的数据类型 115
4.2.2 C语言中的数据输入/输出格式 116
4.2.3 C语言中的变量和常量 119
4.2.4 C语言中的整型数据 120
4.2.5 C语言中的实型数据 124
4.2.6 C语言中的字符型数据 127
4.2.7 C语言中的字符串常量 132
4.2.8 不同类型数据之间的混合运算 133
4.3 STM32F103XX处理器的数据运算 135
4.3.1 ARM程序代码中的算术运算符 136
4.3.2算术运算符的优先级和结合性 137
4.3.3数据类型的强制转换 137
4.3.4自增与自减操作 139
4.3.5赋值运算符和赋值表达式 140
4.3.6逗号运算符 142
4.4 STM32F103XX的流程控制语句 143
4.4.1 ARM中的if条件判断语句 143
4.4.2 ARM中的switch分支选择语句 147
4.4.3 ARM中的循环控制语句 150
提高篇 159
第5章 STM32F103XX系统资源 159
5.1 ARM处理器的选型与功能模块 159
5.1.1 ARM处理器的性能参数 159
5.1.2 ARM处理器的外部接口 160
5.1.3 ARM处理器的芯片封装 161
5.1.4 STM32F103XX系列ARM处理器 163
5.2 GPIO接口模块 165
5.2.1 GPIO引脚特性 165
5.2.2 GPIO引脚描述 165
5.2.3 GPIO引脚函数库 167
5.2.4 GPIO的硬件电路 175
5.2.5基础实验一:汽车安全带报警指示灯与蜂鸣器实验 177
5.3 ADC模数转换模块 181
5.3.1 ADC特性 181
5.3.2 ADC引脚描述 182
5.3.3 ADC库函数 183
5.3.4 ADC硬件电路 193
5.3.5基础实验二:汽车发动机水温测量系统实验 195
5.4 EXTI中断模块 208
5.4.1外部中断/事件的分类 209
5.4.2外部中断/事件的结构 210
5.4.3外部中断/事件的执行顺序与嵌套 212
5.4.4外部中断/事件的选择 213
5.4.5外部中断/事件库函数 215
5.4.6外部中断/事件硬件电路 221
5.4.7基础实验三:汽车紧急制动实验 222
5.5高级控制定时器TIM1 229
5.5.1 TIM1的结构特性 231
5.5.2 TIM1的功能 233
5.5.3 TIM1的控制寄存器 240
5.5.4 TIM1的库函数功能说明 244
5.5.5基础实验四:PWM驱动汽车灯光照明实验 251
5.6通用定时器TIMx 258
5.6.1 TIMx的结构特性 258
5.6.2 TIMx的功能 258
5.6.3 TIMx的控制寄存器 263
5.6.4基础实验五:汽车轮胎压力检测实验 267
第6章 STM32F103XX外部接口 275
6.1实时时钟模块 275
6.1.1 RTC实时时钟的功能特性 276
6.1.2 RTC实时时钟的结构 277
6.1.3 RTC寄存器的操作方式 278
6.1.4 RTC实时时钟的寄存器 280
6.1.5 RTC实时时钟的库函数 281
6.1.6基础实验一:车载时钟与电子日历 290
6.2看门狗WatchDog模块 298
6.2.1 STM32系列处理器中的看门狗 299
6.2.2独立看门狗的功能特性 299
6.2.3独立看门狗的寄存器 300
6.2.4独立看门狗的库函数 301
6.2.5窗口看门狗功能特性 305
6.2.6窗口看门狗的寄存器 307
6.2.7窗口看门狗的库函数 307
6.2.8基础实验二:基于秒中断的新能源汽车电池SOC值检测实验 312
6.3 USART串口通信模块 316
6.3.1 USART的功能特性 319
6.3.2 USART的字符描述 320
6.3.3 USART的发送器 320
6.3.4 USART的接收器 323
6.3.5 USART的中断请求 326
6.3.6 USART的寄存器 327
6.3.7 USART的库函数 328
6.3.8基础实验三:汽车轮速检测实验 341
6.4 CAN通信模块 347
6.4.1 CAN的功能结构 347
6.4.2 CAN的运行模式 348
6.4.3 CAN的功能描述 350
6.4.4 CAN的寄存器 357
6.4.5 CAN的库函数 359
6.4.6基础实验四:基于CAN通信的车载电机冷控实验 376
综合篇 383
第7章 基于STM32F103XX的车载温/湿度检测仪的设计 383
7.1基于STM32F103XX的车载温/湿度检测仪的设计 383
7.1.1项目内容概述 383
7.1.2项目需求分析 388
7.2系统硬件电路设计 388
7.2.1系统电源设计 389
7.2.2传感电路及运放电路设计 392
7.2.3 DS18B20数字式温度传感器电路设计 394
7.2.4 SHTXX数字式湿度传感器电路设计 395
7.2.5串口通信与BOOT启动电路设计 397
7.2.6人机交互界面 399
7.3系统软件工程设计 401
第8章 汽车故障在线检测诊断教学平台 404
8.1基于TFT触摸屏的汽车故障在线检测诊断教学平台设计 404
8.1.1项目内容概述 404
8.1.2项目需求分析 406
8.2系统硬件电路设计 409
8.2.1系统电源设计 409
8.2.2系统逻辑控制电路设计 413
8.2.3TFT LCD触摸屏电路设计 413
8.2.4串口通信电路与JTAG电路 416
8.3系统软件工程设计 418