新書推薦:
《
宽容是件奢侈品(人生360度·一分钟经典故事)
》
售價:NT$
203.0
《
甲骨拼合六集
》
售價:NT$
1520.0
《
视觉美食家:商业摄影实战与创意解析
》
售價:NT$
602.0
《
中国经济发展的新阶段:机会与选择
》
售價:NT$
454.0
《
DK月季玫瑰百科
》
售價:NT$
959.0
《
为你想要的生活
》
售價:NT$
301.0
《
关键改变:如何实现自我蜕变
》
售價:NT$
352.0
《
超加工人群:为什么有些食物让人一吃就停不下来
》
售價:NT$
454.0
|
編輯推薦: |
《嵌入式系统及应用开发基础》基于STM32系列Cortex-M3/4内核处理器结构讲解嵌入式系统,及其在物联网方面的应用。
|
內容簡介: |
《嵌入式系统及应用开发基础》全面讲述ARM嵌入式微处理器结构及其软硬件编程基础,并结合典型案例,详细论述嵌入式微处理器应用于物联网中的硬件设计过程和驱动软件编程方法。主要内容包括:ARM7TDMI/Cortex-M3内核结构、编程模型、指令集,C语言与汇编语言混合程序设计,ARM存储系统与端口映射,Cortex-M3异常和中断系统,STM32编程基础与STM32库函数,GPIO、I2C、LCD屏、UART等接口设计与硬件驱动编程,物联网综合应用案例等。
|
關於作者: |
吴君钦,江西理工大学信息工程学院教授,硕士研究生导师。有10年从事嵌入式系统方面工程技术开发工作经历,长期从事嵌入式系统、物联网、无线宽带通信等方面的课程教学和相关科研。
|
目錄:
|
第1部分嵌入式微处理器架构及编程基础
第1章嵌入式系统与物联网概述1
1.1嵌入式系统概述1
1.1.1嵌入式系统概念1
1.1.2嵌入式微处理器简介2
1.1.3嵌入式微处理器分类3
1.2ARM系列嵌入式处理器概述4
1.2.1ARM及其商业模式简介4
1.2.2ARM架构与版本的演进5
1.2.3ARM指令系统演进6
1.3嵌入式操作系统8
1.4开源硬件与嵌入式软件新技术11
1.4.1Arduino开源硬件11
1.4.2Lua语言开源硬件13
1.4.3Micro EJ/OS项目14
1.5物联网与智能硬件产业16
练习题18
第2章ARM7TDMI处理器内核结构21
2.1ARM7TDMI处理器内核结构概述21
2.1.1处理器内核结构21
2.1.2处理器工作状态22
2.1.3处理器工作模式与任务的特权级别23
2.1.4三级流水线24
2.1.5处理器支持数据类型24
2.1.6内部寄存器25
2.1.7CPSR程序状态字功能详解28
2.1.8Thumb状态下寄存器集30
2.2ARM7TDMI主存储器32
2.2.1存储结构特点概述32
2.2.2地址空间33
2.2.3存储顺序与存储模式33
2.2.4存储器的非对齐访问35
2.3存储器映射I/O空间36
2.4ARM7TDMI中断与异常38
2.4.1中断与异常概述38
2.4.2异常处理进入与返回39
2.4.3异常向量40
2.4.4异常优先级40
2.4.5异常处理程序模板41
2.4.6异常分类详细描述41
2.4.7中断响应延时43
2.5JTAG接口43
练习题45
第3章Cortex-M3处理器内核结构48
3.1M3处理器内核结构概述48
3.2M3内核寄存器49
3.2.1通用寄存器49
3.2.2特殊功能寄存器50
3.3M3工作状态/工作模式/特权级别53
3.3.1M3工作状态53
3.3.2M3处理器工作模式与特权级别54
3.3.3特权级别与工作模式转换55
3.4M3三级流水线57
3.5M3指令系统57
3.6M3存储系统58
3.7M3总线接口60
3.8M3中断异常61
3.8.1中断异常事件源61
3.8.2异常中断向量表62
3.8.3中断向量控制器64
3.9M3复位序列与堆栈64
3.10M3堆栈空间及其操作模式65
3.11M3内核私有外围设备69
3.12M3软硬件集成开发环境70
练习题71
第4章ARM处理器指令系统74
4.1ARM/Thumb/Thumb-2指令集概述74
4.1.1ARM系列处理器指令集简介74
4.1.2ARM/Thumb/Thumb-2指令特性75
4.1.3ARM汇编器基本语法76
4.2ARM/Thumb/Thumb-2指令基础78
4.2.1ARM内核寄存器编程模型78
4.2.2指令编码格式80
4.2.3程序状态寄存器标志位与条件码82
4.2.4指令后缀码83
4.2.5指令寻址方式84
4.332位ARM指令集88
4.3.132位ARM指令分类详解88
4.3.2地址装载与空操作宏指令105
4.416位Thumb指令集简介108
4.5Thumb-2指令集110
4.5.1Thumb-2指令简介110
4.5.2Thumb-2特色指令详解114
4.6常用汇编伪指令简介123
练习题126
第5章ARM汇编语言程序设计128
5.1汇编语言程序设计基本流程128
5.2顺序程序设计129
5.3分支程序设计130
5.4循环程序设计134
5.5子程序设计135
5.6汇编语言程序访问全局C变量139
练习题140
第6章汇编语言与C/C 语言混合程序设计143
6.1混合程序设计概述143
6.2C语言启动代码144
6.3ATPCS/AAPCS规范147
6.3.1ATPCS/AAPCS概述147
6.3.2ATPCS基本规则148
6.3.3ATPCS规范使用范例152
6.4C/C 内嵌汇编器的使用155
6.4.1内嵌汇编指令用法156
6.4.2内嵌汇编器和ARM汇编器的区别157
6.4.3在C/C 语言程序中使用内嵌汇编语言158
6.4.4内嵌汇编语言的应用举例160
6.5汇编语言程序访问C语言程序中的全局变量162
6.6汇编语言程序与C/C 语言程序的相互调用163
6.6.1在C 语言程序中使用C语言程序头文件164
6.6.2汇编语言程序与C/C 语言程序的相互调用举例165
6.7嵌入式系统常用C语言代码优化168
练习题170
第7章ARM存储系统与I/O端口映射173
7.1ARM系列处理器主存储器控制器接口173
7.2LPC2000芯片存储系统174
7.2.1主存储器地址空间174
7.2.2主存储器映象174
7.2.3外设I/O空间映射176
7.3内存映射I/O端口读写控制方法177
7.4存储器映射I/O端口扩展案例178
7.5Cortex-M3存储器总线结构181
7.5.1Cortex-M3内部总线接口181
7.5.2Cortex-M3外部总线接口184
7.6Cortex-M3存储器系统185
7.6.1存储器系统概览185
7.6.2存储器映射186
7.7Cortex-M3位带区189
7.7.1位带区概念189
7.7.2位带区地址空间189
7.7.3位带区位地址映射190
7.7.4位带区操作汇编代码191
7.7.5位带区操作与非位带区操作方法对比191
7.7.6C语言操作位带区193
练习题194
第8章Cortex-M3异常和中断系统196
8.1Cortex-M3异常196
8.1.1异常类型196
8.1.2中断优先级197
8.1.3中断向量表198
8.2Cortex-M3中断行为与处理机制199
8.2.1异常进入199
8.2.2异常退出200
8.3Cortex-M3中断向量控制器202
8.3.1中断向量控制器概述202
8.3.2NVIC寄存器功能详解206
8.4Cortex-M3中断编程基础214
8.5基于STM32固件函数库的NVIC中断编程216
练习题224
第2部分嵌入式微处理器硬件接口驱动编程及案例
第9章STM32F10x驱动编程基础226
9.1引言226
9.2STM32F10x SoC芯片226
9.2.1概述226
9.2.2STM32F10x片内外部设备229
9.2.3STM32F10x芯片引脚231
9.2.4STM32F10x最小系统233
9.3STM32F10x GPIO并行接口234
9.3.1STM32F10x GPIO端口内部结构235
9.3.2STM32F10x GPIO端口寄存器236
9.3.3GPIO外设时钟控制240
9.3.4GPIO最基本应用示例代码241
9.3.5GPIO位带区操作代码243
练习题245
第10章I2C总线协议及应用案例246
10.1I2C总线协议规范246
10.2应用案例(一):GPIO模拟I2C总线协议251
10.2.1I2C协议驱动程序分层模型252
10.2.2I2C总线协议实现方式252
10.2.3I2C接口功能芯片252
10.2.4GPIO模拟I2C电路实例253
10.2.5软件模拟I2C协议代码详解253
10.3应用案例(二):STM32片内I2C接口应用262
10.3.1STM32F10x I2C接口控制器概述262
10.3.2STM32F10x I2C控制器寄存器263
10.3.3STM32F10x I2C控制器库函数264
10.3.4STM32 I2C接口应用案例266
练习题271
第11章并行接口驱动编程应用案例272
11.1应用案例(三):128×64点阵液晶屏模块接口硬件驱动设计272
11.1.1点阵液晶显示模块272
11.1.2GPIO驱动点阵液晶屏接口设计275
11.1.3SRAM总线驱动点阵液晶屏接口设计277
11.2应用案例(四):TFT点阵液晶屏与STM32接口设计281
11.2.1TFT点阵液晶屏简介281
11.2.2MCU与ILI9486通信方式282
11.2.3TFT点阵液晶屏模块接口信号283
11.2.4ILI9486操作时序284
11.2.5STM32与ILI9486接口电路285
11.2.6ILI9486驱动程序285
练习题288
第12章STM32库函数驱动编程及应用案例290
12.1引言290
12.2STM32F10x固件函数库290
12.2.1概述290
12.2.2固件函数库工程文件结构291
12.2.3固件函数库接口标准与文档命名格式292
12.2.4固件函数库各部分内在逻辑关系292
12.2.5固件函数库部分函数清单293
12.3STM32库函数驱动GPIO编程实例295
12.3.1GPIO库函数清单295
12.3.2GPIO初始化代码分析296
12.4SysTick定时器301
12.4.1SysTick定时器硬件结构301
12.4.2SysTick固件函数库API303
12.4.3SysTick应用案例:精确延时函数的实现305
12.4.4SysTick的配置使用方法总结306
12.5STM32片内通用定时器309
12.5.1STM32定时器简介309
12.5.2通用定时器TIM2—TIM5配置310
12.5.3应用范例311
练习题313
第13章UART异步串行通信316
13.1异步串行通信基本概念316
13.2异步串行通信接口电路319
13.3STM32 USART硬件结构323
13.3.1STM32 USART接口概述323
13.3.2USART接口寄存器描述324
13.3.3USART接口中断325
13.4STM32 USART接口软件编程326
13.4.1USART接口固件函数库326
13.4.2USART库函数使用详解328
13.4.3USART应用案例331
练习题335
第3部分嵌入式微处理器物联网应用案例
第14章STM32物联网应用案例337
14.1引言337
14.2OneNET智能云平台概述338
14.2.1OneNET应用系统功能分层模型338
14.2.2OneNET应用系统软硬件组成338
14.2.3OneNET设备开发流程339
14.2.4OneNET设备接入的有关概念339
14.3OneNET设备接入协议340
14.3.1OneNET支持协议类型340
14.3.2HTTP接入协议340
14.3.3HTTP接入流程与步骤341
14.4数据点操作API接口协议详解343
14.4.1协议详解343
14.4.2HTTP/POST数据包范例347
14.5OneNET数据采集系统方案设计348
14.5.1系统总体功能结构348
14.5.2设备及数据流注册348
14.6数据采集子系统设计349
14.6.1节点设备硬件结构349
14.6.2岩体裂缝距离测量技术方案349
14.6.3网络接口设计350
14.6.4DHT11数字温湿度模块350
14.6.5节点设备软件设计与实现350
14.7实验与测试357
14.8物联网应用案例总结358
练习题358
参考文献359
|
內容試閱:
|
“嵌入式系统及应用”或近似名称课程,是电类专业的一门重要的专业课,也是电类专业计算机硬件基础教学课程,涉及的专业包括:通信、电子、计算机、机电、电器、自动化、仪器仪表等。嵌入式微处理器系统的应用极其广泛,涉及的产业包括:航天航空、医疗电子、工业40、家用电器、智能交通、智能物流、5G与物联网等。嵌入式微处理器技术是开发设计电子信息系统不可或缺的基础性技术。
目前,国内高校多数电类专业的计算机硬件基础教学,一般通过顺序学习“微型计算机原理”“单片机原理及应用”“嵌入式系统及应用”三门课程,来达到相关教学目标。该培训模式存在下列问题。
(1) 内容陈旧,与产业需求脱节。“微型计算机原理”课程选用8086处理器作为模型机来进行教学,8086/8088是Intel公司在1978/1979年推出的16位微处理器,至今已40多年了,基本退出应用舞台,与8086配套芯片在市场中也难见踪影,在教学过程中,理论脱离实际、理论落后实际的情况比比皆是,“微型计算机原理”课程已在“沦落”为一个纯粹的理论教学工具,对多数“电类”专业毕业学生来说,完全没有工程应用价值。
(2) 教学内容重复,加重学习的负担。“微型计算机原理”“单片机原理及应用”“嵌入式系统及应用”三门课基础内容基本相同,无非就是内核架构稍有区别,完全可以把三门课合成一门,而不增加学习难度。
(3) 旧的知识传授方式、学习模式无法适应集成了几千万门,甚至上亿门的SoC片上系统的学习,学习效率不高。
在微型计算机/单片机发展早期,片内外连接的硬件外设相对简单,数量也比较少,关联的设备寄存器数量也有限,在几个或十几个8位寄存器范围。在这一阶段,学习微型计算机原理或单片机原理,初学的读者不难全面了解并掌握所有设备寄存器的用途,甚至每个寄存器的每个位的行为特性。在这一阶段, 大多数情况下,硬件接口驱动编程也是程序员直接去操作设备寄存器,控制相关位实现较为复杂的硬件设备驱动功能。
在32位SoC条件下,片内外设功能复杂,芯片片内集成的外设种类有十几或几十类,数量大幅增加,片内外设数量有数十个甚至数百个,与之相关联的32位设备寄存器有数百个,控制位数千位。任何一个初学者,甚至资深嵌入式系统工程师,都不可能在短期内对某一芯片内所有外设的设备寄存器、相关控制位的功能和行为有全面了解和掌握。
对于大多数不从事芯片设计或平台开发的读者,特别对于追求效率的技术开发人员,学习嵌入式系统的目的是把嵌入式系统作为一个工具来使用,希望利用该工具快速解决工程技术问题,而不希望陷入芯片的复杂硬件细节中。STM32系列芯片的库函数可以帮助你达到这一目的,让初学者和技术开发人员都可以站在STM32芯片设计团队巨人的肩膀上,利用开放源码的硬件驱动库函数,屏蔽大量硬件操作细节,跨过驱动编程这一步,快速聚焦到应用对象本身需要解决的问题中,而不需要为工具或平台的学习耗费太多的时间。这在传统的微型机、单片机时代是无法做到的。除了STM32库函数,商业领域中还有大量其他开源硬件模块(如STM32duino套件、Lula语言、Micro Embedded Java等),供工程技术人员使用。使用开源硬件来设计产品,与使用开源软件一样,可大幅缩短开发周期和上市时间,已成为一种发展趋势,并加速技术创新,驱动产业发展,这也是各大上游芯片公司追求的目标,即下游公司可快速高效地把芯片用起来,创造价值。
所以在SoC条件下,势必改变教学方式和方法。虽然国内有不少嵌入式系统方面的教材,但其质量不高,很多与芯片技术手册差异不大,初学者会陷入芯片硬件技术细节中,抓不住学习重点。嵌入式系统设计方面的专著也不少,但这类专著是针对有相当丰富的研究开发经验的教师、工程师群体编写的。上述两类书籍让学生一开始就面对海量资料、复杂硬件技术细节,显然不利于激发学生的学习兴趣和树立学生的学习自信心,因此都不适合初次学习的高校学生使用。
为了改革“电类”专业计算机硬件基础教学内容、教学方法,提高学生的学习效率,减少不必要内容的重复,帮助学生学以致用,编著者探索在SoC条件下新的“教”和“学”的方法,特编著本书。如今已进入SoC片上系统时代,基于32位精简指令集和ARM内核的嵌入式微处理器系统成为计算机应用主流发展方向之一。所以本书直接使用32位ARM为内核的SoC片上系统作为模型机来进行教学。因为使用“精简指令集”和“STM32库函数”来教学,学生学习计算机硬件编程基础的难度有所降低,学生更容易使用,并且能在具体工程项目中把所学知识和系统快速用起来。
本书针对“嵌入式系统”课程教学中存在的问题,从有用、有趣原则出发编写教学内容,实行案例驱动式教学改革,让学生快速建立起学好嵌入式系统的自信心。实践证明这种类型的改革是行之有效的,案例驱动的教学方法能够有效提高学生学习兴趣,化解课程教学难点,提高学生实践动手能力。
本书内容分成“嵌入式微处理器架构及编程基础”“嵌入式微处理器硬件接口驱动编程及案例”“嵌入式微处理器物联网应用案例”三大部分,由浅入深、从部分到整体,逐层论述所涉及技术的基本原理、系统设计过程及案例实施方案。下面是本书主要章节的内容简介。
第1部分,以经典的ARM7TDMI和最新的Cortex-M3两款处理器内核作为教学模型机,讲解嵌入式微处理器架构及编程基础,内容包括:第1章嵌入式系统与物联网概述,第2章ARM7TDMI处理器内核结构,第3章Cortex-M3处理器内核结构,第4章ARM处理器指令系统,第5章ARM汇编语言程序设计,第6章汇编语言与C/C 语言混合程序设计,第7章ARM存储系统与I/O端口映射,第8章Cortex-M3异常和中断系统。
第2部分,以STM32F10x/STM32F40x SoC芯片为背景,讲述嵌入式微处理器硬件接口驱动编程及案例,内容包括:第9章STM32F10x驱动编程基础,第10章I2C总线协议及应用案例,第11章并行接口驱动编程应用案例,第12章STM32库函数驱动编程及应用案例,第13章UART异步串行通信。
第3部分,嵌入式微处理器物联网应用案例,内容是第14章STM32物联网应用案例。针对矿山企业的信息化和智能化应用特点,在中国移动OneNET物联网云平台基础上,采用STM32F103芯片和ESP8266 WIFI无线通信模块,设计了一个完整的STM32物联网应用案例:基于OneNET智能云的矿山环境与安全监测系统设计与实现。
本书由江西理工大学吴君钦和许春冬共同编著,其中吴君钦编著了第1、2章、第6~12章,许春冬编著了第3~5章,在编著过程中得到了江西理工大学黄友文、温如春等大力支持和协助。在此,对上述同行的付出,表示真诚感谢。
本书除了可提供文本,还制作了精美的教学PPT课件,并可提供相关案例的完整源码。因编著者水平有限,难免有错误,希望读者批评指正,并把反馈信息发到908835940@qqcom邮箱中,编著者不胜感激。
编著者2022年3月
|
|