ARM基础教程复习

来源:互联网 发布:淘宝卖的ios迅雷软件 编辑:程序博客网 时间:2024/06/07 06:36

一、 嵌入式系统基本概念

1、 什么是嵌入式系统?有何特点?

答:是以应用为中心、以计算机技术为基础、软件硬件可裁剪、   适应于应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。

特点:(1)嵌入性(2)专用性(3)计算机系统

2、 什么是嵌入式处理器,嵌入式处理器可以分为几大类?

答:嵌入式处理机是嵌入式的核心,是控制,辅助系统运行的硬件单元。

分类:四大类(1)嵌入式微处理器 (2)嵌入式微控制器 (3)嵌入式DSP 理器(4SoC片上系统

3、 广泛使用的三种类型的操作系统?

答:多道批处理操作系统、分时操作系统以及实时操作系统。

二、 ARM7体系结构

1、 ARM是什么样的公司?

答:它是一家微处理器行业的知名企业,该企业设计了大量高性能、廉价、耗能低的 RISC处理器。特点是只设计芯片,而不生产。它将技术授权给世界上许多著名的半导 体、软件和OEM厂商,并提供服务。

2、 什么是RISC?什么是CISC?

答:RISC是精简指令集计算机的缩写。CISC是复杂指令集计算机的缩写。

3、 ARM7TDMI中的T、D、S、I分别表示什么含义?

答:T:支持高密度16位的Thumb指令集

 D:支持片上调试

 SARM7TDMI 的可综合(synthesizable)版本(软核)

 I:支持EmbededICE观察硬件

 M:支持64位乘法

4、 ARM7TDMI处理器采用什么样的体系结构,其可寻址地址空间多大?

答:ARM处理器使用冯.诺依曼结构,使用单个平面的232个8位字节地址空间。地址空间可以看作是包含230个32位字,231个16位半字。

5、 ARM7TDMI处理器采用几级流水线处理,使用何种存储器编址方式?

答:ARM7TDMI处理器采用三级流水线。

ARM处理器将存储器看做是一个从0开始的线性递增的字节集合。

6、 ARM处理器哪几种状态和模式?

答:两种状态。Arm状态和Thumb状态,共7种模式。

(1)用户模式 (2)系统模式 (3)管理模式(svc) 4)终止模式(abt

    (5)未定义指令模式 (6)中断模式(7)快速中断模式 

7、 简述ARM处理器两种状态的应用特点。

答:ARM状态:处理器执行32位字对齐方式的ARM指令,每条ARM指令长度32位,指令的功能强大,处理器默认为此状态。

Thumb状态:处理机执行16位半字对齐方式的Thumb。每条Thumb指令长 度为16位,是ARM指令功能的子集。

8、 简述ARM处理器7种模式的应用特点。

答:(1用户模式:ARM处理器正常的程序执行模式。

     (2)快速中断模式:用于高速数据传输或通道处理。

   (3)中断模式:用于通用的中断处理。

   (4)管理模式:操作系统使用的保护模式。

   (5)终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟  存储及存储保护。

   (6)系统模式:运行具有特权的操作系统任务。

   (7)未定义指令模式:当未定义的指令执行时进入该模式,可用于支持硬件  处理器的软件仿真。

9、 结合CPSR的结构,说明其中的M[4:0]的作用和T位 I位和F位的作用。


答:M[4:0]是模式控制位,这些位决定处理器的工作模式。

 T位:T位标志控制处理器按照ARM指令集运行,还是按照Thumb指令集  运行。I位和F位都是中断禁止标志位,用来时能或禁止ARM的两种外部中断。

        N:负标志位,运算结果的第31位值,记录标志设置的结果。

   Z:零标志位,如果标志设置操作的结果为0,则置位。

   C:进位标志位,记录无符号加法溢出,减法无错位,循环移位。

   V:溢出标志位,记录标志设置操作的有符号溢出。

10、 简述ARM7TDMI内部有哪些寄存器及特点。

答:总共有37个用户可访问的物理寄存器,其中包括31个通用32位寄存器和6个状态寄存器。具体哪些寄存器可被编程访问,取决于处理器状态和处理器模式。并且在任何状态、模式下最多可见到18个寄存器。

11、 ARM7TDMI中的PC指向的是下一条将要执行的指令,这句话对吗?为什么?

答:不对,PC中的内容总是指向正在“取指”指令的地址。(下一条将待取指的指令)

12、 简述ARM处理器的CPSRSPSR的功能、作用和工作方式。

答:CPSR是当前状态寄存器,他可以在任何运行模式下被访问,它包括条件标 志位,中断标志位,当前处理器模式标志位,以及其他的一些相关的控制盒状态 位。ARM内核就是通过使用CPSR来监视和控制内部操作的。

     SPSR用于保存CPSR的当前值,从异常退出时则可由SPSR来恢复CPSR

13、 简述ARM7的内部寄存器R13R14R15的主要功能、作用和工作方式。

答:R13作为堆栈指针(SP),用于指定堆栈操作出入口的地址。其他6R13寄存器为堆栈寄存器。为用户模式和系统模式共用一个。

R14可以用作通用寄存器,也可以用作链接寄存器(LR)。链接寄存器用于执行调用指令或响应异常时,用于缓存返回地址。

R15:程序计数器寄存器(PC),总是指向正在取指的指令

14、 什么是计算机的寻址方式?ARM7TDMI有几种寻址方式?

答:寄存器寻址、立即寻址、寄存器移位寻址、寄存器间接寻址、基址寻址、多 寄存器寻址、堆栈寻址、相对寻址。

15、 什么是堆栈?ARM中的堆栈是如何定义和使用的?

答:堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据 项进行插入和删除。

ARM处理器将RB作为堆栈指针SP,用于保存堆栈的出入口处地址。

16、 何谓存储的大端模式小端模式?写出数据0x123456780x20000000字单元中小端模式下的存储细节。

答:大端模式:按照数据的低字节存放在高地址中的顺序进行存储。

    小端模式:按照数据的高字节存放在高地址中的顺序进行存储。

    0x20000000存放0x780x20000001存放0x560x20000002存放0x34

    0x20000003存放0x12

17、 什么是字对齐半字对齐ARM指令必须字对齐存放,Thumb指令必须半字对齐存放,这句话正确吗?

答:如果一个字数据的访问存储地址A能被4整除,即地址的低两位为零,则为  字对齐的存储器访问。

    如果一个半数据的访问的存储地址A能被2整除,即地址的最低位为零,则  为半字对齐的存储器访问,

 如果Thumb状态下将一个非字对齐的地址写入PC,则数据在写入PC时第  0位被忽略,最终PCbit00,将会产生不可预料的结果。

18、 ARM7TDMI中的中断分为那两类?在CPU级别如何分别屏蔽?

答:分别为IRQFIQ ,在cpu级别通过状态寄存器CPSR中的IF位置位来屏蔽。

19、 什么是ARM7TDMI中的异常?简述ARM7TDMI中的复位、IRQFIQ和软中断等几种主要异常的控制原理。

答:异常是指正常的程序被暂时中止的状态模式。

复位异常时处理器进行管理模式执行相应操作,IF均为禁止;软中断异常 也进入管理模式,I位禁止;IRQ异常时进入中断模式,I位禁止;FIQ异常进 入快速中断模式,IF位均为禁止,都是通过异常向量表。

20、 简述ARM7TDMI中产生复位、IRQFIQ和软中断等几种主要异常的条件,这几种异常会使ARM分别进入到哪种模式?ARM核响应异常的过程,以及这几种异常地返回指令是什么?

答:复位异常:当nRESET信号被拉低时,ARM处理器放弃正在执行时的指令,等到nRESET下信号再次变高时,ARM执行下列操作:(1)强制M[4:0]复为10011,进入管理模式;(2)将CPSR中的IF置位;(3)将CPSR中的T位清零(4)强制pc从地址0x00开始对下一条指令进行取值;(5)返回ARM状态并回复执行,无返回指令。

IRQ:只有CPSR中相应的I位被清除时,才可能发生IRQ异常,进入中断模式,内核自动作如下处理:(1)将异常处理的返回地址保存到R14-irq中(2)用户模式的CPSR被保存到SPSR-irq中;(3)修改CPSR,禁止新的IRQ中断产生,进入ARM状态,IRQ模式(4)置IRQ模式下的IRQ异常处理程序的中断入口地址向量。

地址0x00000018。   返回指令:subs pc , R14-irq , #4

FIQ:只有CPSR中的想用下位被清零时,才发生下IQ异常进入FIQ模式,FIQ中的8个专用寄存器用来保护中断地址。其返回指令: subs pcR14-fiq , #4

软中断swi:用于进入“管理模式”,通常用于请求一个特定的管理函数。返回指令:movs  pcR14-svc

三、 ARM7TDMI指令系统

1、 ARM7TDMI支持哪几种指令集,各有什么特点?

答:支持ARM指令集和Thumb指令集两种。

ARM指令集:指令32位,指令集指令丰富、效率高,快速,代码密度低,功能强大,所有ARM指令都是可以有条件执行的 。

Thumb指令集:指令16位,指令集指令精简、功能紧凑,代码密度较高,Thumb指令仅有一条指令具备条件 执行功能。

2、 ARM汇编指令的基本格式?

答:

<指令助记符>{<执行条件>}{S}  <目标寄存器>,   <第1操作数的寄存器>  {,<第2操作数>}

<opcode>  {<cond>} {S} <Rd> ,       <Rn>    {,<operand2>}

其中,< >号内的项是必需的,{}号内的项是可选的。如<opcode>是指令助记符,是必须含有的,而{<cond>}为指令执行条件,是依据实际需要可选项。若不书写,则使用默认条件AL(无条件执行)。例如:指令 ADDEQS  R0,R1,#0x08 

3、 何谓ARM指令的条件码?默认的条件码是什么?举例说明ARM指令的条件码对指令执行的影响。

答:条件码是按照指定条件执行的操作条件:默认条件码是AL(无条件执行)

例子:比较两值大小,并进行相应加1处理:

cmp R0R1

A DDHI R0R0#1

ADDLS R1R1#1

4、 解释何为“满堆栈”、“空堆栈”、“递增堆栈”和“递减堆栈”? ARM指令系统中是如何支持的?

答:满堆栈:堆栈指针指向最后压入栈的有效数据项。

      空堆栈:堆栈指针指向下一个待压入数据的空位置。

    递增堆栈:在向堆栈写入数据后,堆栈指针的值变大,即向高地址方向生长。

    递减堆栈:在想堆栈写入数据后,堆栈指针的值变小,即向低地址方向生长。

ARM处理器的堆栈操作具有非常大的灵活性,对4种类型堆栈均支持,ARM处理器中的R13被用作SP

5、 请说明MOV指令与LDR加载指令的区别和用途。

答:LDR的操作数既可以来源于寄存器也可以来源于存储器。LDR指令从内存中读取数据放入寄存器,用于对内存变量和数据的访问、查表、程序的跳转、外围部件的控制操作等;

        MOV的操作数能来源于寄存器。MOV指令将8位立即数或寄存器传送到目标寄存器(Rd),可用于移位运算等操作。

6、 解释 B指令、BL指令与BX指令的功能差别?简述他们的应用场合。

答:B指令:是分支指令,跳转到标号指定的地址程序。

 Bl指令:带连接的分支指令,跳转到指定的地址程序,同时还将程序计数器PC的值保存到LR寄存器中。

 BX指令:带状态切换的分支指令,跳转到Rm指定的地址处执行程序,根据跳转地址的最低位 来切换处理器状态。

B/BL指令跳转范围限制在当前指令的+-32MB地址内。

7、 解释SWI(软中断)指令的执行过程和典型应用。

答:SWI指令用于产生软中断,从而实现先从用户模式到管理模式的变换。在切换时,CPSR寄存器内容将保存到管理模式的SPSR中,同时程序跳转到SWI异常向量入口处。 SWI用于系统功能调用。

8、 ARM汇编指令条件码如下表,分析下两段程序片断的功能,写出其等价的类C语言功能描述:

程序片断1:

CMP R0, R1   

ADDHI R0 , R0 , #1 

ADDLS R1 , R1 , #1

程序片断2:

CMP  R0 , #10   

CMPNE   R1 , #20   

ADDNE R0 , R0 , R1

答:ifR0>R1 if(R0!=10)

R0++; if(R1!=20)

else R1++; R0+=R1;

9、 结合ARM7TDMI结构中的流水线结构,解释IRQ中断返回指令:

SUBS  PC , R14_irq , #4  的原理

答:ARMTTDMI采用三级流水线结构,PC指向正在取值的指令,产生IRQ时,保存在R14-IRQ中的是PC的值,在返回时为保证正确性应返回到PC-4即中断前“正在译码”的指令地址。所以返回指令为:subs pcR14-irq#4

四、 LPC2000系列ARM硬件资源原理与使用

1、 LPC2000系列器件有几种常见的封装形式和其封装特点?

答:常见的封装有64脚封装,144脚封装

特点:功耗低,有多个32位定时器,多达9个外部中断,16K字节静态RAM   1/128/256k字节片Flash存储器,128为宽度接口加速器,410ADC810   位ADC(64脚和144脚封装),4676~112GPIO64脚和144脚封装)。

2、 简要说明一下LPC2000系列器件片内存储器的特点?

答:片内存储器分为片内Flash和片内静态RAM。片内Flash通过128位宽度的总线ARM内核相连,具有很高的速度,特有的存储器加速功能,可以将程序直接放Flash上运行。SRAM支持8位、16位和32位的读写访问。

3、 在LPC2000系列ARM芯片中,内Flash有哪几种写入方式?

答:(1)使用JTAG仿真/调试器,通过芯片的JTAG借口下载程序。

  (2)使用在系统编程技术,通过UART0接口下载程序。

  (3)使用在应用编程技术,在用户程序运行时对Flash进行擦出和/或编程操作,    实现数据的存储和固件的现场升级。

4、 ARM寄存器PC、CPSR、SPSR分别有什么用?

答:PCCUP中的程序计数器,内容总是指向正在“取指”指令的地址。

CPSR是当前程序状态寄存器,用来监视和控制内部操作的。

SPSR是物理状态寄存,用于保存CPSR的当前值,从异常退出时则由它来恢复 CPSR

5、 什么是ARM处理器的异常?ARM处理器是如何处理异常的?

答:异常:在执行正常程序过程中,当发生某种异常事件或某种外部请求时,处理 器就暂停执行当前的程序,进入异常模式。

如何处理异常:

1) 保存执行状态:将CPSR复制到发生的异常模式下的SPSR中。

2) 模式切换:将CPSR模式位强制设置为与异常类型相对应的值,同时处理器进 入到ARM执行模式,禁止所有IRQ中断,当进入FIQ快速中断模式时禁止FIQ 断。

3) 保存返回地址:将下一条指令的地址(被打断程序)保存在LR(异常模式下 LR_excep)中。

4) 跳入异常向量表:强制设置PC的值为相应异常向量地址,跳转到异常处理程 序中。

6、 什么是ARM体系结构中的异常向量表?在应用中有何作用?

答:处理器规定了异常处理程序入口的地址区间,并规定了地址的存放顺序,一 般称为异常向量表。

在异常处理过程中,可以加快异常服务的响应速度。

7、 在ARM体系结构中,异常向量表中存放的是什么内容?

答:异常处理程序的程序入口地址。

8、 在ARM体系结构中,异常向量表中0x0014(保留字)单元存放的是什么内容?有何用途?

答:保留的异常入口,早期的ARM结构中会被用到,而在ARM7中是保留的,以 确保软件能与不同的ARM结构兼容。而在有些处理器芯片中,这4个字节已经有 了非常特殊的用特。

9、 什么是ISP技术?IAP技术?在实际应用中有何实际意义?

答:ISP:在系统可编程指电路板上的空白器件可以编程写入最终用户代码而不需要 从电路板上取下器件已经编程的器件也可以用ISP方式擦除或再编程

IAP是指在应用编程,即在程序运行中编程,就是片子提供一系列的机制(硬件/软 件上的)当片子在运行程序的时候可以提供一种改变flash数据的方法。

10、 LPC2000系列器件中,许多芯片的引脚具有多种功能,应用中如何使用其特定的功能?

答:设置寄存器PINSEL0、PINSEL1、PINSEL2为特定功能的值。

11、 简述LPC2000系列芯片的引脚设置寄存器PINSEL0、PINSEL1、PINSEL2的具体功能?

答:PINSEL0控制引脚P0.0~P0.15的连接状态,每两位控制一个引脚。

PINSEL1控制引脚P0.16~P0.31的连接状态,每两位控制一个引脚。

PINSEL2控制P1端口和P2端口。

12、 简述LPC2000系列芯片内部GPIO的功能特点?

答:(1可以独立控制每个GPIO口的方向;

2可以独立设置每个GPIO的输出状态;

(3)所有GPIO口在复位后默认位输入状态。

13、 结合GPIO 结构原理图,简述GPIO的工作方式设置内容。


答:芯片某个管脚首先经过unix功能选择,对应PINSELx寄存器选择其功能,如 果选择GPIO功能,在经过MUX2IOxDIR寄存器对应位选择,控制管脚输入输 出方向,GPIO管脚输入时通过IOxPIN寄存器读入,输出时通过IOxSETIOxCLR 寄存器控制输出实现对应GPIO管脚的控制。

序号

通用名称

功能说明

1

IOPIN

从该寄存器中可以读出引脚的当前状态,和方向模式无关

2

IOSET

该寄存器控制引脚输出高电平,为1时高电平,为0无效

3

IODIR

该寄存器单独控制每个IO口的方向,为1时输出,为0时输入

4

IOCLR

该寄存器控制引脚输出低电平,为1时低电平为0无效

14、 设计编程:LPC2131的P0.7引脚连接了一个蜂鸣器,编程发出等周期的滴滴声。

答:

Void DelayNSint m

{ int i

for(;m>0;m--)

for(i = 0;i<50000;i++)

}

main()

{

PINSEL0 = 0x00000000;

IO0DIR = 1 << 7;

while (1)

{

IO0SET = 1 << 7;

DelayNS(50);

IO0CLR = 1 << 7;

DelayNS(50);

}

}

15、 设计编程:LPC2131的P0[1:0] 两引脚分别连接了2个按键K1和K2;P0[7:6] 两引脚分别连接了2个指示灯LED1和LED2;请编制驱动程序,使Kx 按键时,LEDx 灯亮。

答:

#define k1 1<<0

#define k2 1<<1

#define LED1 1<<7

#define LED2 1<<8

main()

{

PINSEL0=0x00000000;

IO0DIR=IO0DIR & (~k1);

IO0DIR=IO0DIR & (~k2);

IO0DIR=IO0DIR|LED1;

IO0DIR=IO0DIR|LED2;

IO0CLR=IO0CLR|LED1|LED2;

While(1)

{

If((IO0PIN & k1)==0)

IO0SET=LED1;

else IO0CLR=LED1;

If((IO0PIN & k2)==0)

IO0SET=LED2;

else IO0CLR=LED2;

}

}

16、 名词解释:中断、中断源、中断优先级、中断屏蔽、中断向量、中断响应、中断控制。

答:中断:CPU在执行一个程序时,对系统发生的某个事件(程序自身或外界的原 因)作出的一种反应:CPU暂停正在执行的程序,保留现场后自动转去处理相应的 事件,处理完该事件后,到适当的时候返回断点,继续完成被打断的程序。

中断源:把引起中断的原因,或者能够发出中断请求信号的来源统称为中断源。

中断优先级:为使系统能及时响应并处理发生的所有中断,系统根据引起中断事件 的重要性和紧迫程度,硬件将中断源分为若干个级别,称作中断优先级。 

中断屏蔽:

中断向量:中断服务程序的入口地址。

中断响应:中断响应是当中央处理机发现已有中断请求时,中止,保存现行程序执 行,并自动引出中断处理程序的过程。 

中断控制:CPU能否暂停正在执行的中断服务程序,而转去执行为另一个中断源而 编写的中断服务程序,如果另一个中断源的优先级高,CPU就暂停正在执行中断服 务程序而转去执行为另一个中断源而编写的中断服务程序,否则,另一个中断源就 不能打断正在执行的中断服务程序。

17、 结合ARM VIC 结构原理图,简述ARM体系结构中的中断控制原理



1) 向量中断控制器(VIC)的功能特点?

2) 中断信号的来源?中断信号的标示?

3) 中断信号如何屏蔽?如何清除?

4) ARM核从何处获得中断向量?

5) 如何将中断源指派为IRQ、FIQ?

6) 向量IRQ的设置方法?

答:(1)最多32个中断请求输入;16个向量IRQ中断;16个优先级,可动态分配优先级; 可产生软件中断;当I=1时,禁止IRQ中断,反之使能之;当F=1时,禁止FIQ中断,反之使能之

(2)中断源有WDTTimerPWMUARTI^2CSPIRTCA/DEINT

标示是通道号。

       (3向量中断控制器VIC中有两个寄存器控制向量中断使能或禁止:中断使能寄存器(VICIntEnable)和中断使能清零寄存器(VICIntEnClear)。中断使能寄存器相应位置“1”,则允许相应的中断;置“0”则不允许中断。  

         中断使能寄存器虽然是读/写寄存器,但只能向其写入“1”,不能写“0”,写“0”无效,只能通过向中断使能清零寄存器中相应的位写“1”,来清除中断使能寄存器中   

(4)IRQFIQ获得

532个中断源进入中断状态寄存器,通过中断使能或中断使能清零寄存器控 制,使能的中断由中断选择寄存器选择FIQIRQ

6)设置寄存器CPSR

18、 ARM 芯片中定时器结构原理如下图,试设计一个周期为2秒的方波发生器。(假设该系统的外围设备时钟频率Fpclk = 10MHz)


答:int mian{

PINSEL0=PINSEL0 & (~(3<<10)) | (2<<10);

T0CTCR=0x00;

T0TC=0;

T0PR=99;

T0MCR=0x02<<3;

T0MR1=Fpclk/100;

T0EMR | =0xc2;

T0TCR=0x01;

While(1);

}

19、 使用学过的知识设计设计一个汽车用“车速表”,写出你的设计方案并编程实现。

提示:可用霍尔元件将车轮的转动转换为脉冲。车轮每转动一圈会产生一个方波脉冲。

答:转动脉冲:

void __irq IRQ_Timer0 (void)

{

if ((IO0SET & BEEP) == 0)

IO0SET = BEEP; /* 关闭BEEP */

else

IO0CLR = BEEP;

T0IR = 0x01; /* 清除中断标志*/

VICVectAddr = 0x00; /* 通知VIC中断处理结束 */

}

int main (void)

{

int spped=1;

PINSEL1 = 0x00000000; /* 设置管脚连接GPIO */

IO0DIR  = BEEP; /* 设置BEEP控制口输出*/

IRQEnable(); /* IRQ中断使能*/

/* 定时器0初始化 */

T0TC   = 0; /* 定时器设置为0*/

T0PR   = 0; /* 时钟不分频*/

T0MCR  = 0x03; /* 设置T0MR0匹配后复位T0TC,并产生中断标志*/

T0MR0  = Fpclk / spped; /* 0.5秒钟定时*/

T0TCR  = 0x01; /* 启动定时器*/

/* 设置定时器0中断IRQ */

VICIntSelect = 0x00; /* 所有中断通道设置为IRQ中断*/

VICVectCntl0 = 0x20 | 0x04; /* 设置定时器0中断通道分配最高优先级*/

VICVectAddr0 = (uint32)IRQ_Timer0; /* 设置中断服务程序地址*/

VICIntEnable = 1 << 0x04; /* 使能定时器0中断*/

while (1){

if ((IO0PIN & KEY1) == 0) {

spped=10;

T0MR0  = Fpclk / spped; /* 0.5秒钟定时*/

T0TC   = 0; /* 定时器设置为0*/

}

else if ((IO0PIN & KEY2) == 0) {

spped=20;

T0MR0  = Fpclk / spped; /* 0.5秒钟定时*/

T0TC   = 0; /* 定时器设置为0*/

}

else if ((IO0PIN & KEY3) == 0) {

spped=30;

T0MR0  = Fpclk / spped; /* 0.5秒钟定时*/

T0TC   = 0; /* 定时器设置为0*/

}

else if ((IO0PIN & KEY4) == 0) {

spped=40;

T0MR0  = Fpclk / spped; /* 0.5秒钟定时*/

T0TC   = 0; /* 定时器设置为0*/

}

};

    return 0;

}

汽车车速:

int main (void)

{

int Vx;

PINSEL0 = (PINSEL0&(~(3<<20)))|(2<20);

PINSEL0 = PINSEL0&(0<<24);

T0CTCR &= 0xf0;

T0TC = 0;

T0PR = 99;

T0MCR = 0x03;

T0MR0 = Fpclk/300;

T1CTCR = (T1CTCR&(~0x0f)|0xf1);

T1TC =0;

T1MCR = 0x00;

T1CCR &= ~0x07;

T0TCR = 0x01;

T1TCR = 0x01;

while (1)

{

if ((T0IR&0x01) == 1)

{

T0IR = 0x01;

Vx = T1TC;

T1TC = 0;

VtotalLen += Vx;

VthisLen += Vx;

Vspeed = (Vx*L*3.6)/HrN;

}

if ((IO0PIN & KClr) == 0)

VthisLen = 0;

}

    return 0;

}

补充:

1、 简述冯诺依曼体系结构计算机的要点和工作过程。

答:冯诺依曼体系结构计算机的要点:

计算机中的信息(程序和数据)以二进制方式表示。

程序预存储,机器自动执行。

计算机由运算器、控制器、存储器、输入设备和输出设备五大部分组成。

计算机通过执行预存储在存储器中的程序来完成预定的运算。程序由计算机的指令序列构成,计算机在处理器的控制下,首先从存储器读取一条待执行的指令到处理器中,接下来分析这条指令,而后发出该指令对应的电平脉码序列,即执行该指令。并以此递归运行程序。

2、 何谓总线?计算机中有哪几类总线?简述其用途。

答:计算机的总线(Bus)就是连接计算机硬件各部件,用于计算机硬件各部件之间信息传输的公共通道。

按照其传送信号的用途属性,总线可细分为:地址总线(Address Bus)、数据总线(Data Bus)和控制总线(Control Bus)三类。

¨ 地址总线(A_Bus):专用于在CPU、存储器和I/O端口间传送地址信息的信号线。此类信号线传送的信息总是从CPU到存储器或I/O端口,它是单向信号线。

¨ 数据总线(D_Bus):专用于在CPU、存储器和I/O端口间传送数据信息的信号线。此类信号线传送的信息可以是从CPU到存储器或I/O端口(操作),也可能是从存储器或I/O端口到CPU操作),它是双向信号线。

¨ 控制总线(C_Bus):专用于CPU与其它部件之间传送控制信息和状态信息的信号线。此类信号线的构成比较复杂,传送的控制、状态信息可以是从CPU到其它部件,也可能是从其它部件到CPU。此类总线中的某些具体的线是单向的(或从CPU到其它部件,或反之),但作为总线来说,它是双向信号线。

3什么是字对齐半字对齐数据存储?

答:“半字”数据必须存放在存储器紧邻的两个字节单元,并且首字节地址必须能被2整除,这样存储的16bit数据称为‘半字对齐’存储数据,16bit数据这样的存储方式称为‘半字对齐’存储。

“字”数据必须存放在存储器紧邻的4个字节单元,并且首字节地址必须能被4整除,这样存储的32bit数据称为‘字对齐’存储数据,32bit数据这样的存储方式称为‘字对齐’存储。

4使用ARM汇编指令的条件执行功能,翻译下面C代码语句。

⑴ if(x = = y)                              ⑵ if(x = = y) && ( a = = b)  c = c * 2;

a = b + c;   else a = b – c;

答:(1MOV R0, x; (2 MOV R0, x;

MOV R1, y;  MOV R1, y;

MOV R2, a; MOV R2, a

MOV R3, b; MOV R3, b

MOV R4, c; MOV R4, c

CMP R1, R2; CMP R0, R1

ADDEQ R2, R3, R4; CMPEQ R2, R3

SUBNE R2, R3, R4; MOV R4, R4, LSL #2


原创粉丝点击