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

目录

第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

基于stm32的linux开发的书籍,跟工程师学嵌入式开发:基于STM32和μC OS-Ⅲ 带目录高清版pdf...相关推荐

  1. 阿里巴巴《Linux命令行与shell脚本编程大全》高清版 PDF 开放下载

    今天我要把我参与编写的这套<Linux命令行与shell脚本编程大全>免费分享出来,真正弘扬Linux开源精神! 01 资料目录 02 部分视频资料展示 03 如何获取?

  2. STM32收入高也好找工作,所以我学嵌入式linux终究是错付了吗

    STM32收入高也好找工作,所以我学嵌入式linux终究是错付了吗 经常有同学纠结问我:我到底是学STM32还是学嵌入式linux. 这个问题很多人都会有自己的看法,今天我试着从多个角度,把了解到的事 ...

  3. 几本国外著名反演书籍(高清版资源)

    几本国外著名反演书籍(高清版资源) 2015-11-18 桔灯勘探 ↑↑↑ 1<反演理论>(Inverse Problem Theory) 下载地址链接: http://pan.baid ...

  4. Linux管理传世经典:Linux 系统管理技术手册(第二版) 中文高清版下载

    Linux管理传世经典:Linux 系统管理技术手册(第二版) 中文高清版下载 转载于:https://www.cnblogs.com/gavinhughhu/archive/2010/07/05/1 ...

  5. 【嵌入式系统开发】学习笔记四:嵌入式开发的基本概念与工具链

    提示:本文内容参考慕课课程:<ARM微控制器与嵌入式系统> 嵌入式开发的基本概念与工具链 前言 一.电路板 1.开发板:EVB(Evaluation board) 2.最小系统板 二.开发 ...

  6. Swift开发指南 高清 电子书 pdf [关东升,赵志荣著][人民邮电出版社][2014-09][312页]sample-pdf...

    [@2010-1-0记录一下自己的脚印:今天下载了<Swift开发指南 高清 电子书 pdf [关东升,赵志荣著][人民邮电出版社][2014-09][312页]sample-pdf>觉得 ...

  7. 基于Wav2Lip+GFPGAN的高清版AI主播

    继上一篇 基于Wav2Lip的AI主播 的内容之后很多小伙伴反应一个问题就是生成的AI人物并不是很清晰,尤其是放到编辑器里会出现明显的痕迹,因此这次带来的了 Wav2Lip+GFPGAN 高清版的内容 ...

  8. 基于安卓的兼职app开发!深度解析跳槽从开始到结束完整流程,分享PDF高清版

    开头 最近有粉丝反应,不想做安卓了,有朋友转到前端了,安卓不行了,问我怎么办? 自从RN,Weex这种跨平台编程语言出来以后,安卓将死的言论总是不绝于耳.随着颇有摧枯拉朽之势Flutter的出现,加之 ...

  9. 嵌入式Linux开发教程(上册) (周立功著) 完整pdf高清版

    嵌入式Linux开发教程是面向嵌入式Linux学习和产品开发的入门教程,分3篇,共18章,围绕嵌入式Linux产品开发的应用编程展开,内容涵盖Linux操作系统介绍.安装和基本使用.嵌入式Linux开 ...

最新文章

  1. 不改文件名的情况下上传突破
  2. 三个python文件怎么关联___name__= __main__怎么解释 怎么用 另外两个py文件之间的互动关联...
  3. 【PySpark入门】手把手实现PySpark机器学习项目-回归算法
  4. ESP8266在线视频网址
  5. Eclipse里PHP built-in server在操作系统中的实际位置
  6. 自定义拦截器用于用户登录的
  7. P4768 [NOI2018] 归程(kruskal 重构树)
  8. 计算机丢失wpcap.dll会影响什么,Win7系统提示wpcap.dll丢失如何解决?
  9. java皮肤_java程序的皮肤效果实现代码
  10. 浅析busybox如何集成到openwrt
  11. 10 个 Linux 网络和监控命
  12. C/C++[codeup 1907]吃糖果
  13. 金立android手机怎么截图,金立手机怎么截屏
  14. FIR滤波器结合快速卷积滤波
  15. 30最棒的响应式css前端框架
  16. Spring中的事务控制(Transacion Management with Spring)
  17. Redmine3.3.3 搭建与不完全填坑指南
  18. html缩小网页时版块乱跑,解决动网论坛最后发表显示代码的问题(或导致首页排版错乱)...
  19. 企业如何选择企业网盘
  20. CELL_FACH和CELL_PCH状态

热门文章

  1. halcon算法思路_halcon常用算法
  2. 视频教程-赵强老师:大数据从入门到精通(23)配置Hive On Spark-Spark
  3. yshon对讲机如何调频率_其实很简单,对讲机频率这么调?
  4. vue 导出表格 xlsx
  5. onlyoffice的安装使用
  6. 我与 CSDN 这几年,当技术遇到 CSDN,开启人生新篇章
  7. html不用css超链接去掉下划线,div css之去掉a超链接下划线样式
  8. 「干货」用YOLOv5模型识别出表情!
  9. Android之获取、设置EditText的文本...
  10. TR069协议与商业应用1——概述(带目录索引)