《Cortex-M3开发技术及实践》是2014年西安电子科技大学出版社出版的图书,作者是青岛东合信息技术有限公司。
基本介绍
- 书名:Cortex-M3开发技术及实践
- 作者:青岛东合信息技术有限公司
- ISBN:978-7-5606-3121-9
- 定价:58.65元
- 出版社:西安电子科技大学出版社
- 出版时间:2014-10
内容简介
全书以Cortex-M3核心的STM32F107晶片为基础,以“Cortex开发套件”为硬体开发平台,以MDK-ARM为软体开发环境,基于STM32固件库的编程方法,讲解了STM32F107的各种常用外设的工作原理及套用,并特别介绍了LWIP、?C/GUI、?C/OS-Ⅱ的应用程式设计。
全书分为两篇:理论篇和实践篇。理论篇共有16章,包括概述、STM32F107核心架构、GPIO和AFIO、NVIC和EXTI、定时器(TIM)、看门狗(WDG)、通用同步/异步收发器(USART)、直接存储器访问(DMA)、控制器区域网路(CAN)、ADC和DAC、串列外设接口(SPI)、通用串列汇流排(USB)、乙太网(ETH)、嵌入式界面(?C/GUI)、嵌入式作业系统(?C/OS-Ⅱ)和物联网网关程式设计。实践篇共有16个实践,分别与理论篇的16章内容相对应,包括套用案例和知识拓展等内容。
本书偏重STM32F107的套用,採用理论与实践相结合的方法,使Cortex-M3技术运用于实践中,更深层地剖析了ARM技术与各种相关技术的关係,为物联网的学习奠定了基础。
本书适应面广,可作为物联网工程、通信工程、电子信息工程、自动化、计算机科学与技术、计算机网路等专业本科生教材。
目录
理论篇
第1章 概述 2
本章目标 2
学习导航 2
任务描述 2
1.1 ARM体系概述 2
1.1.1 ARM简介 3
1.1.2 ARM架构的发展 3
1.2 Cortex核心 5
1.2.1 Cortex核心分类 5
1.2.2 CM3核心特点 6
1.3 CM3指令集 6
1.3.1 Thumb指令集 6
1.3.2 Thumb-2指令集 7
1.4 STM32系列MCU 7
1.4.1 STM32系列MCU分类 8
1.4.2 STM32F107资源 9
1.5 STM32固件库 11
1.5.1 CMSIS含义 11
1.5.2 STM32固件库简介 12
1.5.3 STM32固件库结构 12
1.5.4 固件库命名规则 13
1.5.5 基于固件库的STM32F107程式设计 14
1.6 开发工具 17
1.6.1 STM32F107开发工具介绍 17
1.6.2 流水灯示例 18
小结 23
练习 23
第2章 STM32F107核心架构 24
本章目标 24
学习导航 24
任务描述 24
2.1 核心架构 25
2.1.1 CM3核心架构 25
2.1.2 STM32F107架构 26
2.2 存储器组织 27
2.3 存储器映像 29
2.3.1 位带操作 31
2.3.2 位带计算方法 31
2.4 暂存器组 33
2.4.1 通用暂存器 33
2.4.2 特殊功能暂存器 34
2.5 堆叠 34
2.5.1 CM3的堆叠 34
2.5.2 双堆叠机制 35
2.6 电源管理 35
2.6.1 电源 35
2.6.2 备份区域 37
2.6.3 电源管理器 39
2.6.4 低功耗模式 41
2.7 复位和启动配置 41
2.7.1 CM3的复位机制 42
2.7.2 RCC 43
2.7.3 STM32F107的启动配置 46
2.8 时钟 47
2.8.1 时钟概述 47
2.8.2 系统时钟 49
2.8.3 时钟安全系统 49
2.8.4 RTC时钟 49
2.8.5 时钟输出 49
小结 50
练习 50
第3章 GPIO和AFIO 52
本章目标 52
学习导航 52
任务描述 52
3.1 通用IO和复用功能 53
3.1.1 GPIO概述 53
3.1.2 输入功能 54
3.1.3 输出功能 55
3.1.4 复用功能 56
3.1.5 模拟输入功能 56
3.2 复用功能IO重映射 57
3.3 GPIO编程实例 58
3.3.1 GPIO配置 59
3.3.2 GPIO实例 61
3.4 GPIO库函式 62
小结 63
练习 64
第4章 NVIC和EXTI 65
本章目标 65
学习导航 65
任务描述 65
4.1 CM3异常和中断系统 66
4.1.1 嵌套向量中断控制器 66
4.1.2 中断优先权 66
4.1.3 抢占优先权与从优先权 67
4.1.4 中断输入与悬起 67
4.1.5 中断回响序列 68
4.1.6 中断返回 69
4.1.7 中断嵌套 69
4.1.8 CM3特殊中断机制 69
4.1.9 SysTick定时器 69
4.2 中断向量 70
4.2.1 (异常)向量表 70
4.2.2 stm32f10x_it.c档案 78
4.3 NVIC库函式配置 80
4.3.1 NVIC配置 80
4.3.2 NVIC库函式 84
4.4 外部中断/事件控制器 85
4.4.1 功能说明 85
4.4.2 外部中断/事件线路映像 86
4.5 EXTI库函式配置 88
4.5.1 EXTI配置 88
4.5.2 EXTI库函式 90
4.6 中断套用实例 91
4.6.1 main函式 91
4.6.2 中断服务函式 93
4.6.3 程式验证 94
小结 94
练习 94
第5章 定时器(TIM) 96
本章目标 96
学习导航 96
任务描述 96
5.1 STM32F107定时器概述 97
5.2 高级和通用定时器 97
5.2.1 主要特性 98
5.2.2 时钟源 98
5.2.3 时基单元 99
5.3 计数模式 100
5.3.1 计数模式工作方式 101
5.3.2 计数模式时序 101
5.3.3 计数模式配置 102
5.3.4 库函式TIM_TimeBaseInit( ) 103
5.4 捕获/比较通道 104
5.5 输出模式 105
5.5.1 PWM模式 105
5.5.2 PWM模式配置 106
5.5.3 输出比较模式 110
5.5.4 单脉冲模式 111
5.6 输入模式 111
5.6.1 输入捕获模式 111
5.6.2 PWM输入模式 114
5.6.3 定时器输入异或功能 115
5.6.4 TIMx定时器和外部触发的同步 115
5.6.5 定时器同步 115
5.7 电机控制 116
5.7.1 互补输出和死区插入 116
5.7.2 使用剎车功能 116
5.7.3 产生六步PWM输出 116
5.7.4 与霍尔感测器的接口 116
5.8 基本定时器TIM6和TIM7 117
5.8.1 主要特性 117
5.8.2 时钟源 117
5.8.3 时基单元 117
5.8.4 预分频器 118
5.8.5 计数模式 118
5.9 定时器库函式 118
?小结 122
练习 123
第6章 看门狗(WDG) 124
本章目标 124
学习导航 124
任务描述 124
6.1 看门狗概述 125
6.2 独立看门狗 125
6.2.1 IWDG的功能描述 125
6.2.2 IWDG的配置 127
6.2.3 IWDG库函式 128
6.3 视窗看门狗 128
6.3.1 WWDG的功能描述 128
6.3.2 WWDG的配置 130
6.3.3 WWDG库函式 131
小结 131
练习 132
第7章 通用同步/异步收发器(USART) 133
本章目标 133
学习导航 133
任务描述 133
7.1 USART的功能描述 134
7.1.1 USART的主要特性 134
7.1.2 STM32F107的USART 134
7.2 USART异步模式 136
7.2.1 分数波特率 136
7.2.2 数据位和校验位 138
7.2.3 传送器 138
7.2.4 接收器 139
7.2.5 DMA传输 139
7.2.6 中断请求 139
7.2.7 异步模式配置 140
7.3 USART同步模式 142
7.4 LIN模式 144
7.5 USART编程实例 145
7.5.1 USART2管脚配置 145
7.5.2 USART2配置 146
7.5.3 USART实例 147
7.6 USART库函式 148
小结 150
练习 150
第8章 直接存储器访问(DMA) 151
本章目标 151
学习导航 151
任务描述 151
8.1 DMA的功能描述 152
8.1.1 DMA的结构及特性 152
8.1.2 DMA通道 153
8.1.3 DMA传送 154
8.1.4 仲裁器和优先权 154
8.1.5 循环模式 154
8.1.6 存储器到存储器模式 155
8.1.7 DMA中断 155
8.1.8 指针增量 155
8.2 DMA编程实例 155
8.2.1 DMA配置步骤 155
8.2.2 DMA配置 156
8.2.3 DMA实例 159
8.3 DMA库函式 164
小结 164
练习 165
第9章 控制器区域网路(CAN) 166
本章目标 166
学习导航 166
任务描述 166
9.1 CAN汇流排 167
9.1.1 CAN汇流排简介 167
9.1.2 CAN汇流排技术规範 168
9.1.3 CAN帧 169
9.1.4 汇流排仲裁 171
9.2 STM32F107的bxCAN 172
9.2.1 bxCAN的工作模式 172
9.2.2 bxCAN的调试模式 173
9.2.3 出错管理 174
9.2.4 离线恢复 175
9.2.5 位时间特性 175
9.2.6 波特率的计算 176
9.2.7 bxCAN配置 176
9.3 传送处理 179
9.3.1 传送优先权 179
9.3.2 中止 179
9.3.3 禁止自动重传模式 179
9.3.4 传送配置 180
9.4 接收管理 181
9.4.1 有效报文 181
9.4.2 FIFO管理 181
9.4.3 溢出 182
9.4.4 接收相关的中断 182
9.4.5 接收配置 182
9.5 bxCAN标识符过滤 183
9.5.1 bxCAN过滤器组 183
9.5.2 过滤器组的配置 185
9.6 bxCAN中断 187
9.7 bxCAN编程实例 188
9.7.1 主函式 188
9.7.2 中断服务函式 191
9.7.3 运行结果 191
9.8 bxCAN库函式 193
小结 194
练习 194
第10章 ADC和DAC 195
本章目标 195
学习导航 195
任务描述 195
10.1 模拟/数字转换器(ADC) 196
10.1.1 ADC功能简介 196
10.1.2 ADC管脚分布和输入源 197
10.1.3 通道选择 199
10.1.4 ADC中断 199
10.1.5 DMA请求 199
10.1.6 模拟看门狗 200
10.2 ADC的工作模式 200
10.2.1 转换模式 201
10.2.2 扫描模式 201
10.2.3 间断模式 201
10.2.4 注入通道管理 201
10.2.5 数据对齐 202
10.2.6 通道採样时间 202
10.2.7 外部触发转换 203
10.3 ADC编程实例 203
10.3.1 ADC配置 203
10.3.2 ADC实例 207
10.4 双ADC模式 208
10.4.1 同步注入模式 209
10.4.2 同步规则模式 209
10.4.3 快速交叉模式 209
10.4.4 慢速交叉模式 209
10.4.5 交替触发模式 210
10.4.6 同步注入模式+同步规则模式 210
10.4.7 同步规则模式+交替触发模式 210
10.4.8 同步注入模式+交叉模式 210
10.5 数字/模拟转换器(DAC) 211
10.5.1 DAC功能简介 211
10.5.2 DAC转换 212
10.5.3 DAC输出电压 212
10.5.4 DAC数据格式 212
10.5.5 选择DAC触发 213
10.5.6 DMA请求 213
10.6 DAC输出模式 214
10.6.1 噪声生成 214
10.6.2 三角波生成 214
10.7 DAC编程实例 214
10.7.1 DAC配置 214
10.7.2 DAC实例 217
小结 218
练习 219
第11章 串列外设接口(SPI) 220
本章目标 220
学习导航 220
任务描述 220
11.1 SPI简介 221
11.2 SPI的功能和特点 221
11.3 SPI管脚 222
11.4 SPI的数据传送与接收 222
11.4.1 接收与传送缓冲器 223
11.4.2 主模式下的数据传输 223
11.4.3 从模式下的数据传输 223
11.4.4 处理数据的传送与接收 224
11.5 SPI时钟信号的相位和极性 224
11.6 SPI的从设备选择 225
11.7 CRC计算 225
11.8 SPI的DMA 226
11.9 SPI中断 227
11.10 SPI编程实例 227
11.10.1 SPI配置 227
11.10.2 SPI实例 231
小结 237
练习 238
第12章 通用串列汇流排(USB) 239
本章目标 239
学习导航 239
任务描述 239
12.1 USB简介 240
12.1.1 USB版本 240
12.1.2 USB接口 241
12.1.3 汇流排结构 241
12.1.4 USB接口HID设备 242
12.1.5 USB OTG 243
12.2 USB协定基础 243
12.2.1 USB逻辑组织 243
12.2.2 包 244
12.2.3 事务 246
12.2.4 描述符 247
12.2.5 枚举 249
12.3 STM32F107的USB OTG 249
12.3.1 通用功能 250
12.3.2 OTG全速控制器 251
12.3.3 全速OTG PHY(物理接口) 251
12.3.4 ID信号检测 252
12.3.5 上电状态 252
12.3.6 软体断开 252
12.3.7 默认状态 253
12.3.8 挂起状态 253
12.3.9 设备端点 253
12.3.10 端点配置 254
12.3.11 端点传输 254
12.3.12 端点状态/中断 254
12.3.13 设备SOF 255
12.3.14 供电选项 255
12.3.15 USB数据FIFO 256
12.3.16 OTG_FS 中断 256
12.4 USB OTG固件库 256
12.4.1 ST USB固件库的文档结构 256
12.4.2 USB开发模板 258
12.5 HID类设备开发模板 260
12.5.1 开发模板修改 260
12.5.2 主要函式 261
小结 263
练习 264
第13章 乙太网(ETH) 265
本章目标 265
学习导航 265
任务描述 265
13.1 ETH简介 266
13.1.1 乙太网物理层 266
13.1.2 乙太网的工作方式 267
13.1.3 帧结构 267
13.1.4 冲突/冲突域 268
13.1.5 IEEE 802.3 268
13.1.6 IEEE 1588 268
13.2 STM32F107的ETH 269
13.2.1 MAC控制器的功能 269
13.2.2 DMA功能 270
13.2.3 PTP 功能 271
13.2.4 乙太网模组的管脚和内部信号 271
13.2.5 乙太网模组功能描述:RMII 272
13.2.6 乙太网模组功能描述:MAC 802.3 273
13.2.7 MAC中断 273
13.2.8 精确时间协定(IEEE 1588 PTP) 274
13.2.9 乙太网功能描述:DMA控制器操作 274
13.3 LWIP协定栈 274
13.3.1 LWIP的特性 275
13.3.2 LWIP的结构 275
13.4 建立ETH模板 275
13.4.1 官方ETH固件库 276
13.4.2 修改ETH固件库 276
小结 282
练习 282
第14章 嵌入式界面(?C/GUI) 283
本章目标 283
学习导航 283
任务描述 283
14.1 ?C/GUI简介 284
14.1.1 ?C/GUI特点 284
14.1.2 ?C/GUI档案结构 285
14.1.3 ?C/GUI层次结构 286
14.2 ?C/GUI功能 286
14.2.1 文本显示 287
14.2.2 数值显示 288
14.2.3 2-D图形库 288
14.2.4 字型 290
14.2.5 颜色 290
14.2.6 存储设备 292
14.2.7 视窗管理器 292
14.2.8 视窗对象 294
14.2.9 对话框 303
14.3 ?C/GUI移植 305
小结 308
练习 308
第15章 嵌入式作业系统(μC/OS-Ⅱ) 309
本章目标 309
学习导航 309
任务描述 309
15.1 嵌入式系统程式设计 310
15.1.1 嵌入式系统程式设计特点 310
15.1.2 嵌入式系统程式结构 311
15.1.3 模组化程式设计 312
15.1.4 嵌入式作业系统 312
15.2 μC/OS-Ⅱ简介 313
15.3 μC/OS-Ⅱ的时钟和中断 314
15.3.1 μC/OS-Ⅱ的时钟 315
15.3.2 μC/OS-Ⅱ的时间管理 315
15.3.3 临界段 316
15.3.4 μC/OS-Ⅱ的中断过程 316
15.4 μC/OS-Ⅱ的任务 317
15.4.1 任务 317
15.4.2 任务的优先权 318
15.4.3 任务的状态 319
15.4.4 任务堆叠 319
15.4.5 任务控制块 320
15.4.6 任务调度 320
15.4.7 任务建立 320
15.5 μC/OS-Ⅱ任务的同步与通信 322
15.5.1 任务间的同步 322
15.5.2 事件 323
15.5.3 信号量 323
15.5.4 互斥型信号量 326
15.5.5 讯息信箱 327
15.5.6 讯息伫列 330
15.5.7 信号量集 330
15.6 μC/OS-Ⅱ记忆体管理 331
15.7 μC/OS-Ⅱ的裁剪 331
小结 332
练习 333
第16章 物联网网关程式设计 334
本章目标 334
学习导航 334
任务描述 334
16.1 物联网网关 335
16.1.1 物联网 335
16.1.2 网关 335
16.1.3 物联网网关 335
16.1.4 Zigbee无线感测网 336
16.2 网关功能设计 337
16.2.1 CC2530模组 337
16.2.2 网关协定转换 337
16.2.3 Zigbee通信协定 337
16.2.4 网关功能设计 338
16.3 网关界面设计 338
16.3.1 网关界面资源表 338
16.3.2 回调函式 339
16.4 网关任务设计 341
16.4.1 网关任务 342
16.4.2 任务间同步 346
16.5 网关中断设计 347
16.6 网关实例 349
16.6.1 主函式编写 349
16.6.2 网关软体界面 352
16.6.3 网关串口输出 353
小结 353
练习 354
实践篇
实践1 概述 356
实践指导 356
实践1.G.1 356
?实践1.G.2 359
?实践1.G.3 360
?实践1.G.4 362
知识拓展 368
实践2 STM32F107核心架构 372
?实践指导 372
实践2.G.1 372
?实践2.G.2 373
?实践2.G.3 375
?实践2.G.4 381
知识拓展 384
实践3 通用GPIO和复用AFIO 388
?实践指导 388
?实践3.G.1 388
知识拓展 391
实践4 NVIC和EXTI 393
?实践指导 393
?实践4.G.1 393
?实践4.G.2 396
?实践4.G.3 399
知识拓展 405
实践5 定时器(TIM) 407
?实践指导 407
实践5.G.1 407
?实践5.G.2 410
?实践5.G.3 414
实践6 看门狗(DWG) 418
?实践指导 418
实践6.G.1 418
?实践6.G.2 420
实践7 通用同步/异步收发器(USART) 424
?实践指导 424
实践7.G.1 424
?实践7.G.2 426
实践8 直接存储器访问(DMA) 429
?实践指导 429
实践8.G.1 429
实践9 控制区域网路(CAN) 432
?实践指导 432
实践9.G.1 432
?实践9.G.2 433
实践10 ADC和DAC 442
?实践指导 442
?实践10.G.1 442
?实践10.G.2 443
实践11 串列外设接口(SPI) 449
?实践指导 449
?实践11.G.1 449
?实践11.G.2 450
实践12 通用串列汇流排(USB) 453
?实践指导 453
?实践12.G.1 453
?实践12.G.2 454
实践13 乙太网(ETH) 466
?实践指导 466
?实践13.G.1 466
?实践13.G.2 468
实践14 嵌入式界面(μC/GUI) 476
?实践指导 476
?实践14.G.1 476
?实践14.G.2 477
?实践14.G.3 480
实践15 嵌入式作业系统(μC/OS-II) 484
?实践指导 484
?实践15.G.1 484
?实践15.G.2 486
实践16 物联网网关程式设计 489
?实践指导 489
?实践16.G.1 489
附录A STM32F107管脚定义 504
附录B STM32F107中断映射 509
附录C 复用功能的GPIO配置 512
附录D STM32F107重映射 515