种豆资源网

当前位置:首页 > 经验 / 正文

跟工程师学嵌入式开发 ——基于STM32和μC/OS-III

(2021-01-13 12:38:39) 经验
跟工程师学嵌入式开发 ——基于STM32和μC/OS-III

跟工程师学嵌入式开发 ——基于STM32和μC/OS-III

《跟工程师学嵌入式开发 ——基于STM32和μC/OS-III》是电子工业出版社于2017年出版的图书,作者是谭贵。

基本介绍

  • 书名:跟工程师学嵌入式开发 ——基于STM32和μC/OS-III
  • 作者:谭贵
  • ISBN:9787121327254
  • 页数:448
  • 定价:88.00
  • 出版社:电子工业出版社
  • 出版时间:2017年10月1日
  • 装帧:平装
  • 开本:16开

内容简介

本书选用的STM32晶片基于ARM Cortex-M3体系结构,根据基于MCU的嵌入式技术实际套用需求,合理地选择了多种常用的重要外设接口,如USART、SPI、I2C、FSCM、SDIO汇流排、乙太网等,结合丰富的实例及工程原始码,由浅入深、系统全面地介绍嵌入式系统的底层工作原理。在此过程中,通过穿插多个综合示例的讲解,如命令行外壳程式Shell、eFat档案系统、Telnet远程控制、?C/OS-III实时作业系统的移植过程,无论是嵌入式的初学者,还是有一定开发经验的工程师都能从中获益,使读者既能系统全面地掌握嵌入式开发所需的软硬体知识,又能锻鍊他们的综合开发能力,为将来从事嵌入式开发方面的工作奠定坚实的基础。

作者简介

谭贵,男,北京大学计算机科学与技术学士毕业,现供职于富士康科技集团,热爱嵌入式开发技术,精通C、Java语言,Tcl和bash脚本套用;熟悉从MCU裸板外设驱动开发和uCosII实时作业系统的移植,以及基于Linux系统的嵌入式套用开发。

目录

第1章 开发利器:STM32库和MDK Keil 1
1.1 学习启航:闪烁的跑马灯 1
1.1.1 实验结果呈现 1
1.1.2 实验分析 2
1.1.3 配置GPIO引脚 5
1.1.4 实验控制逻辑 6
1.2 STM32库结构和CMSIS标準 8
1.2.1 STM32库层次结构 9
1.2.2 CMSIS层次结构 9
1.2.3 STM32库结构中的档案关係 10
1.2.4 STM32库函式命名规则 13
1.2.5 STM32库常见的几个状态类型 13
1.3 工程开发环境设定 14
1.3.1 有关MDK 14
1.3.2 使用MDK建立工程的步骤 15
第2章 STM32体系结构 25
2.1 汇流排与通信接口 25
2.1.1 汇流排组成 25
2.1.2 重要的汇流排术语 26
2.2 STM32功能框架 27
2.2.1 系统组成 27
2.2.2 汇流排单元及挂接设备 28
2.3 STM32存储器映射 29
2.3.1 独立编址 30
2.3.2 统一编址(存储器映像编址) 31
2.3.3 CM3外设地址空间映射 32
2.3.4 地址空间映射详解 34
2.4 STM32时钟结构 39
2.4.1 STM32F103ZET6的时钟树 39
2.4.2 时钟树二级框架 40
2.4.3 时钟启用过程 41
2.5 系统时钟树与地址空间映射的关係 43
第3章 STM32系统启动过程分析 44
3.1 CM3的复位序列 44
3.1.1 堆叠 45
3.1.2 向量表 47
3.2 STM32启动代码分析 49
3.3 STM32系统时钟初始化 52
3.3.1 时钟源的选择 52
3.3.2 系统时钟设定 56
3.4 程式运行环境初始化函式__main() 60
3.4.1 回顾编译和连结过程 60
3.4.2 映像档案的组成 61
3.4.3 映像的载入过程 63
3.4.4 由MDK集成环境自动生成的分散载入档案 65
3.4.5 _main()函式的作用 66
第4章 通用GPIO操作 68
4.1 实验结果预览:LED跑马灯 68
4.2 GPIO基本知识 68
4.2.1 GPIO分组管理及其引脚 69
4.2.2 GPIO工作模式及其配置 69
4.2.3 GPIO引脚的写入和读出 71
4.3 实验代码解析 74
4.3.1 实验现象原理分析 74
4.3.2 原始码分析 78
4.4 创建工程 81
4.4.1 建立工程目录结构 81
4.4.2 导入原始码档案 81
4.4.3 编译执行 82
4.5 编译调试 82
4.5.1 调试方法 82
4.5.2 栈和变数观察视窗 83
4.5.3 运行程式并调试:一个函式一个断点 84
4.5.4 运行程式并调试:多个函式多个断点 86
第5章 外部中断EXTI操作 90
5.1 实验结果预览:LED跑马灯_中断控制 90
5.2 异常与中断 91
5.2.1 Cortex-M3的异常向量 91
5.2.2 异常向量表 92
5.3 NVIC与中断控制 93
5.3.1 NVIC简述 93
5.3.2 NVIC与外部中断 93
5.3.3 NVIC中断的优先权 94
5.3.4 NVIC初始化 95
5.4 EXTI基本知识 97
5.4.1 EXTI简介 97
5.4.2 EXTI控制器组成结构 97
5.4.3 GPIO引脚到EXTI_Line的映射 100
5.4.4 EXTI_Line到NVIC的映射 102
5.5 实验代码解析 103
5.5.1 工程源码的逻辑结构 103
5.5.2 实验代码软硬体原理 104
5.5.3 实验代码分析 107
5.6 创建工程 109
5.6.1 建立工程目录结构 109
5.6.2 导入原始码档案 109
5.6.3 编译执行 110
5.7 编译调试 111
5.7.1 打开记忆体视窗 111
5.7.2 设定断点 111
5.7.3 运行程式并调试 112
第6章 USART接口 115
6.1 实验结果预览 115
6.1.1 实验準备工作 115
6.1.2 实验现象描述 116
6.2 USART基本知识 117
6.2.1 串列异步通信协定 117
6.2.2 USART与接口标準RS-232 118
6.3 STM32 USART结构 119
6.3.1 USART工作模式 119
6.3.2 精简的USART结构 119
6.3.3 USART单位元组收发过程 120
6.4 USART暂存器位功能定义 121
6.4.1 状态暂存器(USART_SR) 121
6.4.2 数据暂存器(USART_DR) 122
6.4.3 控制暂存器1(USART_CR1) 122
6.4.4 控制暂存器2(USART_CR2) 123
6.4.5 控制暂存器3(USART_CR3) 123
6.4.6 分数波特率暂存器USART_BRR 124
6.4.7 USART模组暂存器组 125
6.4.8 USART模组初始化函式 126
6.4.9 USART常用函式功能说明 127
6.5 USART实验代码分析 128
6.5.1 实验电路(硬体连线关係) 128
6.5.2 工程原始码档案层次结构 130
6.5.3 套用层(主程式控制逻辑) 131
6.5.4 用户驱动层 133
6.5.5 函式printf()重定向 135
6.6 创建工程 135
6.6.1 建立工程目录结构 135
6.6.2 创建档案组和导入源档案 136
6.6.3 编译执行 137
第7章 USART综合套用:命令行外壳程式Shell 138
7.1 实验结果预览 138
7.2 基于USART的I/O函式 139
7.2.1 字元及字元串获取函式:xgetc()和xgets() 139
7.2.2 字元及字元串列印函式:xputc()和xputs() 141
7.3 可变参数输出函式xprintf() 142
7.3.1 可变参数 142
7.3.2 可变参数宏的使用与作用 143
7.3.3 用可变参数宏实现自己的格式化输出函式xprintf() 144
7.4 Shell外壳 145
7.4.1 Shell命令管理结构 146
7.4.2 Shell命令解析过程 147
7.4.3 命令函式之参数解析 150
7.5 建立工程,编译和运行 151
7.5.1 创建和配置工程 151
7.5.2 编译执行 153
第8章 I2C接口 154
8.1 实验结果预览:轮询写入/读出EEPROM数据 154
8.2 I2C汇流排协定 155
8.2.1 汇流排特点 155
8.2.2 I2C套用结构 155
8.2.3 汇流排信号时序分析 156
8.3 STM32 I2C模组 158
8.3.1 I2C组成框图 158
8.3.2 I2C主模式工作流程 159
8.3.3 I2C中断及DMA请求 161
8.4 I2C EEPROM读写示例及分析 162
8.4.1 示例电路连线 162
8.4.2 app.c档案中的main()函式 163
8.4.3 eeprom.h档案 166
8.4.4 eeprom.c档案 167
8.4.5 shell.c档案 174
8.5 建立工程,编译及运行 175
8.5.1 创建和配置工程 175
8.5.2 编译执行 176
第9章 DMA接口 177
9.1 实验结果预览 177
9.2 通用DMA的作用及特徵 178
9.3 STM32 DMA基本知识 178
9.3.1 DMA与系统其他模组关係图 178
9.3.2 STM32 DMA组成 179
9.4 实验示例分析 183
9.4.1 main.c档案中的main()函式 184
9.4.2 USART1的初始化 184
9.4.3 DMA通道中断处理函式 189
9.4.4 sysTick中断处理函式 190
9.4.5 DMA通道配置的其他暂存器 191
9.4.6 DMA用户测试命令及其执行函式 192
9.5 建立工程,编译和执行 193
9.5.1 建立以下工程资料夹 194
9.5.2 创建档案组和导入源档案 194
9.5.3 编译运行 194
第10章 实时时钟RTC 195
10.1 实验结果预览 195
10.2 STM32 RTC模组 196
10.2.1 STM32后备供电区域 196
10.2.2 RTC组成 199
10.3 RTC实验设计与源码分析 204
10.3.1 硬体连线和GPIO资源 204
10.3.2 实验原始码逻辑结构 204
10.3.3 原始码分析 205
10.4 建立工程,编译和执行 212
10.4.1 建立以下工程资料夹 212
10.4.2 创建档案组和导入源档案 212
10.4.3 编译执行 213
第11章 系统定时器SysTick 214
11.1 SysTick简述 214
11.2 SysTick工作过程 214
11.3 SysTick暂存器位功能定义 215
11.3.1 控制和状态暂存器:STK_CTRL 215
11.3.2 重载暂存器:STK_LOAD 216
11.3.3 当前计数值暂存器:STK_VAL 217
11.3.4 校正暂存器:STK_CALIB 217
11.3.5 SysTick模组暂存器组 217
11.3.6 配置SysTick定时器 218
11.4 基于SysTick的延时函式代码分析 220
11.4.1 实现原理 220
11.4.2 实现代码分析 220
11.4.3 基于SysTick延时的LED闪烁命令 223
11.5 建立工程,编译和执行 224
11.5.1 建立以下工程资料夹 224
11.5.2 创建档案组和导入源档案 224
11.5.3 编译运行 226
第12章 SPI接口 227
12.1 实验现象预览:轮询写入/读出SPI Flash数据 227
12.2 SPI汇流排协定 228
12.2.1 汇流排信号及其套用结构 228
12.2.2 SPI内部结构与工作原理 229
12.3 STM32 SPI模组 231
12.3.1 SPI组成框图 231
12.3.2 STM32 SPI主模式数据收发过程 232
12.3.3 SPI中断及DMA请求 234
12.4 W25Q128FV规格说明 234
12.4.1 W25Q128FV状态和控制管理 235
12.4.2 W25Q128FV常用指令 236
12.5 程式入口与SPI初始化代码 237
12.5.1 实验硬体资源 237
12.5.2 工程入口档案main.c 238
12.5.3 spiflash.c档案中的spiFlash_Init()函式 239
12.6 SPI Flash测试代码分析 243
12.6.1 spiflash.c档案中的SPI Flash测试函式spiTest() 244
12.6.2 SPI Flash ID读取函式sFLASH_readID() 245
12.6.3 扇区擦除函式sFLASH_eraseSector() 246
12.6.4 Flash页写函式sFLASH_writePage() 246
12.6.5 Flash读函式sFLASH_readBuffer() 247
12.6.6 Flash位元组传送函式sFLASH_SendByte() 248
12.7 向Shell添加SPI测试指令spitest 249
12.8 建立工程,编译和执行 250
12.8.1 建立以下工程资料夹 250
12.8.2 创建档案组和导入源档案 250
12.8.3 编译运行 252
第13章 网路接口:乙太网 253
13.1 网路体系结构简介 253
13.1.1 三种网路模型 253
13.1.2 乙太网标準(Ethernet) 256
13.2 ENC28J60知识 257
13.2.1 ENC28J60概述 257
13.2.2 控制暂存器 259
13.2.3 乙太网缓冲器 260
13.2.4 PHY暂存器 261
13.2.5 ENC28J60 SPI指令集 261
13.2.6 ENC28J60初始化 263
13.2.7 使用ENC28J60收发数据 268
13.2.8 ENC28J60驱动代码总结 272
13.3 uIP协定栈简介 274
13.3.1 uIP特性 274
13.3.2 uIP套用接口 275
13.3.3 uIP的初始化及配置函式 277
13.3.4 uIP的主程式循环 277
13.4 uIP移植分析 279
13.4.1 下载uIP1.0版源码档案 279
13.4.2 理解两个中间层档案与套用层和协定层之间的关係 280
13.4.3 添加uIP协定栈后的工程档案组 285
第14章 综合示例:基于uIP的Telnet服务 286
14.1 实验现象预览 286
14.2 Telnet远程登录协定 287
14.2.1 Telnet概述 287
14.2.2 Telnet协定主要技术 288
14.2.3 Telnet命令 288
14.3 Telnetd服务框架及实现 290
14.3.1 本实验Telnetd服务框架 290
14.3.2 Telnetd服务框架的实现 291
14.4 上层套用与uIP协定的接口:telnetd_appcall() 304
14.5 建立工程,编译和运行 309
14.5.1 创建和配置工程 309
14.5.2 编译执行 311
第15章 SDIO汇流排协定与SD卡操作 312
15.1 SD卡简介 312
15.1.1 SD卡家族 312
15.1.2 SD卡引脚功能定义 313
15.1.3 SD卡内部组成 314
15.1.4 SD卡容量规格 315
15.1.5 SDIO接口规範和汇流排套用拓扑 315
15.2 SD协定 316
15.2.1 工作模式与状态 316
15.2.2 命令和回响格式 316
15.2.3 卡识别模式 317
15.2.4 数据传输模式 320
15.3 STM32 SDIO控制器 322
15.3.1 控制器总体结构描述 322
15.3.2 SDIO适配器模组 323
15.3.3 SDIO AHB接口 325
15.4 工程入口及配置 326
15.4.1 实验硬体资源 326
15.4.2 工程入口档案main.c 327
15.5 SDIO初始化 328
15.5.1 SD卡上电初始化函式SD_PowerON() 330
15.5.2 SD卡规格信息获取函式SD_InitializeCards() 336
15.6 SDIO卡测试代码分析 339
15.6.1 块擦除 340
15.6.2 多块写 342
15.6.3 多块读 345
15.7 建立工程,编译和运行 348
15.7.1 建立以下工程资料夹 348
15.7.2 创建档案组和导入源档案 348
15.7.3 编译执行 349
第16章 移植档案系统FatFs 350
16.1 实验现象预览:基于Shell的档案系统命令 350
16.2 FatFs档案系统 351
16.2.1 FatFs特点 351
16.2.2 FatFs在设备系统中的层次与接口 351
16.3 移植FatFs档案系统 352
16.3.1 FatFs原始码结构 352
16.3.2 基于FatFs套用的常用数据类型说明 353
16.3.3 FatFs的移植 355
16.4 FatFs档案系统套用示例分析 357
16.4.1 工程原始码逻辑 357
16.4.2 工程原始码分析 358
16.5 建立工程,编译和运行 363
16.5.1 创建和配置工程 363
16.5.2 编译执行 364
第17章 无线接入:Wi-Fi模组ESP8266套用 365
17.1 无线技术标準:IEEE 802.11 365
17.1.1 IEEE 802.11简介 365
17.1.2 无线区域网路的组网拓扑 366
17.1.3 无线接入过程的三个阶段 367
17.2 ESP-WROOM-02模组 368
17.2.1 ESP-WROOM-02性能参数 368
17.2.2 ESP-WROOM-02与主机系统的电路连线 369
17.3 ESP-WROOM-02指令集 370
17.3.1 ESP8266 AT常用指令 370
17.3.2 使用ESP-WROOM-02进行真实通信 373
17.4 封装ESP-WROOM-02的配置函式 375
17.4.1 ESP-WROOM-02的初始化函式 375
17.4.2 ESP-WROOM-02的配置函式 377
17.4.3 最佳化USART接收快取的数据结构 379
17.4.4 ESP-WROOM-02的Shell操作命令 381
17.5 建立工程,编译和运行 384
17.5.1 工程程式档案 384
17.5.2 创建和配置工程 384
17.5.3 编译执行 385
第18章 移植?C/OS-III作业系统 387
18.1 ?C/OS-III基础 387
18.1.1 ?C/OS-III简介 387
18.1.2 ?C/OS-III核心组成架构 388
18.2 ?C/OS-III任务基础 390
18.2.1 任务状态 390
18.2.2 任务控制块和就绪任务表 391
18.2.3 创建任务 391
18.2.4 任务同步与通信 393
18.3 ?C/OS-III的信号量 393
18.3.1 信号量分类及其套用 393
18.3.2 信号量工作方式 394
18.3.3 信号量套用操作步骤 396
18.4 ?C/OS-III的讯息伫列 396
18.4.1 讯息伫列工作模型 397
18.4.2 讯息伫列套用操作步骤 397
18.5 ?C/OS-III的事件标誌组 398
18.5.1 事件标誌组工作模型 398
18.5.2 事件标誌组套用操作步骤 399
18.6 信号量、讯息伫列和事件标誌组综合示例 399
18.6.1 综合示例任务关係图 400
18.6.2 任务代码头档案task.h 400
18.6.3 任务代码C档案task.c 402
18.6.4 中断异常处理档案stm32f10x_it.c 409
18.7 ?C/OS-III移植 410
18.7.1 ?C/OS-III源码组织架构 410
18.7.2 简化?C/OS-III源码组织架构 411
18.7.3 建立基于?C/OS-III的工程 412
18.7.4 ?C/OS-III综合示例运行效果 414
第19章 基于?C/OS-III的信息系统 415
19.1 系统功能描述 415
19.1.1 系统任务划分 415
19.1.2 系统实际运行效果 415
19.2 系统任务设计分析 417
19.2.1 Shell任务 417
19.2.2 LED灯闪烁任务 420
19.2.3 事件监测任务 420
19.2.4 系统统计任务 422
19.2.5 无线通信处理任务 425
19.3 工程原始码(档案)整合 428
19.3.1 主档案main.c 428
19.3.2 任务头档案task.h 428
19.3.3 includes.h档案 429
19.3.4 任务实现档案task.c 430
19.4 建立工程,编译和运行 430
19.4.1 建立工程原始码结构 430
19.4.2 建立档案组,导入源档案 430
19.4.3 编译执行 431
参考文献 432
搜索
热门图片
最近更新
随机推荐

Powered By 种豆资源网||