书籍详情
《嵌入式微处理器原理与应用——基于ARMCortex-M3微控制器》[56M]百度网盘|亲测有效|pdf下载
  • 嵌入式微处理器原理与应用——基于ARMCortex-M3微控制器

  • 出版社:清华大学出版社
  • 出版时间:2019-02
  • 热度:11239
  • 上架时间:2024-06-30 09:08:33
  • 价格:0.0
书籍下载
书籍预览
免责声明

本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正

内容介绍

产品特色

内容简介

本书系统地论述了ARM CortexM3嵌入式微处理器的原理、架构、编程与系统开发方法,并以STM32微处理器为样本,给出了丰富的设计示例与综合实例。本书共分9章,分别介绍了一般嵌入式微处理器的开发方法、CortexM3体系结构、CortexM3指令集、CortexM3特性、C语言与汇编语言混合编程、CortexM3连接外设方式、CortexM3的驱动软件编写一级综合应用实例等内容。
本书的每个案例包含了相关外接器件或者协议介绍、硬件电路设计、驱动软件编写三大部分,所有案例代码均经过验证,器件和协议也是近期通用的。
本书适合作为高等学校电子信息类专业、计算机类专业、嵌入式类专业、物联网类专业本科生及研究生的“嵌入式系统原理及应用”课程的教材,也适合作为相关领域工程技术人员的参考用书。

作者简介

严海蓉 北京工业大学嵌入式软件与系统系,副教授,国级教学团队骨干成员。长期从事嵌入式系统和嵌入式微处理器应用系统等方面的科研与教学工作,为本科生和研究生开设了“嵌入式微处理器原理及应用”、“嵌入式操作系统”等课程。曾被评为国家专利局佳校园发明奖优秀指导教师、北京工业大学优秀硕士学位论文指导教师,并获得北京市优秀教学成果二等奖。独立编写了《嵌入式微处理器与应用》一书,发表学术论文30余篇,授权专利7项。

目录

目录






第1章绪论

1.1微处理器定义

1.2ARM发展历程

1.3ARM体系结构与特点

1.4处理器选型

1.4.1嵌入式微处理器选型的考虑因素

1.4.2嵌入式微处理器选型示例

第2章ARM核体系结构

2.1寄存器

2.2ALU

2.3存储部件

2.4中断控制

2.5总线

2.6外围接口I/O

2.7流水线

2.8ARM协处理器接口

第3章ARM指令集

3.1指令简介

3.2ARM寻址方式

3.2.1数据处理指令的操作数的寻址方式

3.2.2字及无符号字节的Load/Store指令的寻址方式

3.2.3杂类Load/Store指令的寻址方式

3.2.4批量Load/Store指令的寻址方式

3.2.5协处理器Load/Store指令的寻址方式

3.3Cortex指令集

3.3.1数据传送类指令

3.3.2数据处理指令

3.3.3其他计算类指令

3.3.4饱和运算

3.3.5无条件跳转指令

3.3.6标志位与条件转移指令

3.3.7IFTHEN指令块

3.3.8Barrier隔离指令

3.3.9其他一些有用的指令

3.3.10对内存的互斥访问

3.4伪指令

3.5内嵌汇编

第4章CortexM3特性

4.1特殊功能寄存器

4.2中断建立全过程的演示

4.3复位序列

4.4中断咬尾

4.5晚到异常

4.6位带操作

4.7互斥访问

第5章C语言与汇编语言混编

5.1ATPCS与AAPCS

5.2嵌入式C编写与编译

5.3C语言与汇编语言混编规范

5.3.1内嵌汇编

5.3.2汇编程序中访问C全局变量

5.3.3C语言与汇编语言的相互调用

5.4C语言与汇编语言混编实践

5.4.1Keil使用和STM32固件库

5.4.2建立自己的第一个Keil程序

第6章STM32输入/输出

6.1pin配置

6.1.1单独的位设置或位清除

6.1.2外部中断/唤醒线

6.1.3复用功能

6.1.4软件重新映射I/O复用功能

6.1.5GPIO锁定机制

6.1.6输入配置

6.1.7输出配置

6.1.8复用功能配置

6.1.9模拟输入配置

6.2输入/输出基本概念(寄存器、输入/输出类型)

6.2.1基本概念

6.2.2寄存器详解

6.2.3复用I/O配置寄存器

6.2.4通用I/O和AFIO使用的配置步骤

6.3通用I/O锁定机制

6.4系统时钟

6.4.1时钟配置

6.4.2时钟输出的使能控制

6.5输入/输出常用固件库函数

6.5.1GPIO_DeInit函数

6.5.2GPIO_AFIODeInit函数

6.5.3GPIO_Init函数

6.5.4GPIO_StructInit函数

6.5.5GPIO_ReadInputDataBit函数

6.5.6GPIO_ReadInputData函数

6.5.7GPIO_ReadOutputDataBit函数

6.5.8GPIO_ReadOutputData函数

6.5.9GPIO_SetBits函数

6.5.10GPIO_ResetBits函数

6.5.11GPIO_WriteBit函数

6.5.12GPIO_Write函数

6.5.13GPIO_PinLockConfig函数

6.5.14GPIO_EventOutputConfig函数

6.5.15GPIO_EventOutputCmd函数

6.5.16GPIO_PinRemapConfig函数

6.5.17GPIO_EXTILineConfig函数

6.6GPIO控制LED灯

6.6.1硬件设计

6.6.2软件设计

6.7GPIO控制蜂鸣器

6.7.1硬件设计

6.7.2软件设计

6.8跑马灯实验

6.8.1硬件设计

6.8.2软件设计

6.9LCD1602驱动

6.9.1硬件设计

6.9.2软件设计

6.101wire总线

第7章串行通信模块与中断程序

7.1接口与通信标准

7.1.1I2C接口

7.1.2通用同步/异步收发器(USART)

7.1.3串行外设接口(SPI)

7.1.4控制器区域网络(CAN)

7.1.5通用串行总线(USB)

7.2串口USART实例

7.3扫描键盘

7.4继电器

7.5脉宽调制

7.6步进电动机

7.7GPS模块定位数据读取

7.7.1GPS模块定位原理

7.7.2硬件设计

7.7.3软件实现

7.8Profibus总线

7.8.1Profibus的组成

7.8.2Profibus的传输

7.8.3ProfibusDP实现案例

第8章STM32带操作系统编程

8.1RAM、Flash启动

8.2小型操作系统STM32移植

8.2.1μCOSⅡ内核简介

8.2.2开始移植

8.2.3程序开发模式讨论

第9章综合案例

9.1硬件连接方式

9.2驱动软件编写

9.2.1串口通信

9.2.2数据采集

9.2.3小车的方向控制

9.2.4小车的速度控制

9.3ZStack软件框架

9.3.1任务调度

9.3.2ZigBee无线传输系统开发

9.4计算机端程序开发

附录ASTM32F10x.h中的定义

附录BLCD1602程序



精彩书摘

第5章
CHAPTER 5


C语言与汇编语言混编






从前面章节里可以看到,汇编指令代码的阅读与一般语言相差太远,而比较困难。为此常在编写嵌入式程序时,不直接全部使用指令集。C语言最初就是针对汇编难读写而发展出来的,其采用指针的使用与指令汇编中的地址概念非常相似,将程序中的部分代码使用C编写也是一个很常见的选择。
5.1ATPCS与AAPCS
为了使单独编译的C语言程序和汇编程序之间能够相互调用,必须为子程序之间的调用规定一定的规则。ATPCS就是ARM程序和THUMB程序中子程序调用的基本规则。
1. ATPCS概述
ATPCS规定了一些子程序之间调用的基本规则。这些基本规则包括子程序调用过程中寄存器的使用规则、数据栈的使用规则、参数的传递规则。为适应一些特定的需要,对这些基本的调用规则进行一些修改得到几种不同的子程序调用规则,这些特定的调用规则包括
支持数据栈限制检查的ATPCS、支持只读段位置无关的ATPCS、支持可读写段位置无关的ATPCS、支持ARM程序和THUMB程序混合使用的ATPCS、处理浮点运算的ATPCS。
有调用关系的所有子程序必须遵守同一种ATPCS。编译器或者汇编器在ELF格式的目标文件中设置相应的属性,标识用户选定的ATPCS类型。对应不同类型的ATPCS规则,有相应的C语言库,连接器根据用户指定的ATPCS类型连接相应的C语言库。
使用ADS的C语言编译器编译的C语言子程序满足用户指定的ATPCS类型。而对于汇编语言程序来说,完全要依赖用户来保证各子程序满足选定的ATPCS类型。具体来说,汇编语言子程序必须满足下面三个条件: 在子程序编写时必须遵守相应的ATPCS规则; 数据栈的使用要遵守ATPCS规则; 在汇编编译器中使用atpcs选项。
2. 基本ATPCS
基本ATPCS规定了在子程序调用时的一些基本规则,包括以下三个方面的内容: 各寄存器的使用规则及其相应的名字; 数据栈的使用规则; 参数传递的规则。相对于其他类型的ATPCS,满足基本ATPCS程序的执行速度更快,所占用的内存更少。但是它不能提供以下的支持: ARM程序和THUMB程序相互调用; 数据以及代码的位置无关的支持; 子程序的可重入性; 数据栈检查的支持。而派生的其他几种特定的ATPCS就是在基本ATPCS的基础上再添加其他的规则而形成的。其目的就是提供上述的功能。
寄存器的使用规则:
(1) 子程序通过寄存器R0~R3来传递参数。这时寄存器可以记作A0~A3,被调用的子程序在返回前无须恢复寄存器R0~R3的内容。
(2) 在子程序中,使用R4~R11来保存局部变量,这时寄存器R4~R11可以记作V1~V8。如果在子程序中使用到V1~V8的某些寄存器,子程序进入时必须保存这些寄存器的值,在返回前必须恢复这些寄存器的值,对于子程序中没有用到的寄存器则不必执行这些操作。在THUMB程序中,通常只能使用寄存器R4~R7来保存局部变量。
(3) 寄存器R12用作子程序间scratch寄存器,记作IP; 在子程序的连接代码段中经常会有这种使用规则。
(4) 寄存器R13用作数据栈指针,记作SP,在子程序中寄存器R13不能用作其他用途。寄存器SP在进入子程序时的值和退出子程序时的值必须相等。
(5) 寄存器R14用作连接寄存器,记作IR; 它用于保存子程序的返回地址,如果在子程序中保存了返回地址,则R14可用作其他的用途。
(6) 寄存器R15是程序计数器,记作PC; 它不能用作其他用途。
ATPCS中的各寄存器在ARM编译器和汇编器中都是预定义的,如表51所示。



表51ATPCS中寄存器的定义



寄存器
别名
特殊名称
使 用 规 则

R15

PC
程序计数器
R14

LR
连接寄存器
R13

SP
数据栈指针
R12

IP
子程序内部调用的Scratch寄存器
R11
V8

ARM状态局部变量寄存器8
R10
V7
Sl
ARM状态局部变量寄存器7

在支持数据检查的ATPCS

中为数据栈限制指针

R9
V6
SB
ARM状态局部变量寄存器6

在支持RWPI的ATPCS

中为静态基址寄存器

R8
V5

ARM状态局部变量寄存器5

R7
V4
WR
ARM状态局部变量寄存器4

Thumb状态工作寄存器

R6
V3

局部变量寄存器3
R5
V2

局部变量寄存器2
R4
V1

局部变量寄存器1
R3
A4

参数/结果/Scratch寄存器4
R2
A3

参数/结果/Scratch寄存器3
R1
A2

参数/结果/Scratch寄存器2
R0
A1

参数/结果/Scratch寄存器1

前言/序言



前言



随着物联网日益走近我们的生活,ARM微处理器的CortexM系列以其简而美的架构,在控制、采集等众多领域占据了主流市场。
本书选取CortexM3系列的STM32作为主要介绍对象,主要考虑以下因素: 首先,嵌入式系统的基本功能就是做控制,比如控制小车行进等; 其次,CortexM3也具有一定的扩展性,可以装入一个不大不小的嵌入式操作系统; 最后,STM32也是目前应用广泛的一个微处理器芯片,而其教材并不多。
此次改版增加了一些实用的例子,以便为读者直接应用提供更多背景知识。本书主要增加的内容包括1wire总线、GPS模块定位数据读取和Profibus工业总线控制协议。
本书重点讲述嵌入式微处理器原理,尤其讲述怎样对指令集进行编程,并且以微处理器为核心来设计连接硬件。
本书内容可分四大部分。
第1、2章为第一部分,主要是微处理器的概述,第1章介绍基础知识,第2章介绍体系结构。
第3~5章为第二部分,讲解微处理器编程,第3章介绍Cortex指令集,第4章介绍CortexM3的特性,第5章是C语言与汇编语言混编。
第6~8章为第三部分,讲解微处理外设连接和驱动编写及STM32带操作系统编程,以STM32为例,讲解了从硬件连接到软件驱动编写的设计过程。实验小车平台上的核心就是STM32。
第9章为第四部分,是一个综合实例。在实验小车上实现了用ZigBee进行连接,接收计算机发送的遥控指令,让小车前、后、左、右行进。
本书内容新颖,立足点高。同时力求重点突出、层次清晰、语言通俗易懂、内容覆盖面广。学习本书需要有一定的C语言阅读能力和计算机硬件的入门知识。本书可作为高等院校本科、研究生各相关专业(如嵌入式系统、物联网、计算机、电子信息、通信)的程序设计教材,也适合于编程开发人员、广大嵌入式系统技术爱好者培训或自学使用。
根据我们的教学体会,本书的教学可以安排为32~48学时。如果安排的学时数较少,可以根据学生的水平适当删减本书第二部分的部分内容。
本书所提供的实验实例全部在目标硬件上调试通过。
尽管我们在写作过程中投入了大量的时间和精力,但由于水平有限,不足之处仍在所难免,敬请读者批评指正(联系邮箱: yanhairong@bjut.edu.cn)。我们会在适当时间对本书进行修订和补充。
本书第6章增加的案例由李达老师编写和验证试验,第7章增加的案例由北京慧物科联科技有限公司的杭天昊工程师提供素材。实验小车平台由北京芯博华科技有限公司提供(联系QQ: 137926515)。感谢北京工业大学信息学部的全体师生,本书的最终出版得到了许多老师和同学的帮助。感谢我的家人对我的支持。清华大学出版社为本书的编写和出版付出了辛勤劳动。在本书完成之际,一并向他们表示诚挚的感谢。


严海蓉

2019年1月于
北京工业大学