ARM嵌入式系统基础教程复习题第2版周立功.ppt_第1页
ARM嵌入式系统基础教程复习题第2版周立功.ppt_第2页
ARM嵌入式系统基础教程复习题第2版周立功.ppt_第3页
ARM嵌入式系统基础教程复习题第2版周立功.ppt_第4页
ARM嵌入式系统基础教程复习题第2版周立功.ppt_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式处理器可以分为几大类?,嵌入式处理器可以分为以下几大类: 嵌入式微处理器; 嵌入式微控制器; 嵌入式DSP处理器; 嵌入式片上系统(SOC)。,P0.2和P0.3口是I2C接口,当设置它们为GPIO时,是否需要外接上拉电阻才能输出高电平?,使用GPIO注意要点,大部分GPIO输出为推挽方式(个别引脚为开漏输出),正常拉出/灌入电流均为4mA(短时间极限值40mA);,LPC2000系列ARM大部分的I/O引脚为推挽方式输出,但是具有I2C总线功能的I/O引脚为开漏输出(P0.2/P0.3和P0.11/ P0.14)。使用这些开漏输出的引脚作为GPIO功能,并用于高电平输出或引脚状态输入时,要接上拉电阻才能正常使用。,向量中断控制器VIC中被设置为几类?最多可以管理多少个中断输入请求?,中断输入请求可以在VIC中被设置为以下三类: FIQ中断:具有最高优先级; 向量IRQ中断:具有中等优先级; 非向量IRQ中断:具有最低优先级;,若LPC2210/2220的bank0存储块使用32位总线,访问bank0时,地址A1、A0是否有效?EMC模块中的BLS0BLS3具有什么功能?,32位总线宽度,数据总线D31D0有效,地址总线A1、A0无效,字节定位信号中BLS0BLS3有效。 32位存储器件中字节0、1、2、3的定位表示法:,EMC提供了一组字节定位选择信号(BLS0BLS3)实现对16位或32位外部存储器组的字节操作。,4.6 外部存储器控制器(EMC),32位总线宽度连接方式,1.3 嵌入式操作系统,常见的嵌入式操作系统,C/OS-II是一个源码公开、可移植、可固化、可裁剪、占先式的实时多任务操作系统。其绝大部分源码是用ANSI C写的,使其可以方便的移植并支持大多数类型的处理器。C/OS-II通过了联邦航空局(FAA)商用航行器认证。自1992年问世以来,C/OS-II已经被应用到数以百计的产品中。C/OS-II占用很少的系统资源,并且在高校教学使用是不需要申请许可证。,C/OS-II,4.7 引脚连接模块,概述,LPC2000系列微控制器的大部分管脚都具有多种功能,即管脚复用,但是同一引脚在同一时刻只能使用其中一个功能,通过配置相关寄存器控制多路开关来连接引脚与片内外设。,01,10,11,P0.0默认为GPIO功能,P0.0选择TXD0功能,配置对应位为01,P0.0选择PWM1功能,配置对应位为10,P0.0选择保留功能,配置对应位为11,4.7 引脚连接模块,LPC2000系列微控制器具有三个32位宽度PINSEL寄存器,其中PINSEL0和PINSEL1控制端口0,PINSEL2根据芯片的不同控制的端口数量也不同 。,寄存器描述,LPC2000系列微控制器的大部分管脚都具有多种功能,即管脚复用,但是同一引脚在同一时刻只能使用其中一个功能,通过配置引脚连接寄存器:PINSELx控制多路开关来连接引脚与片内外设。 LPC2000系列ARM7微控制器有三个32位宽度PINSEL寄存器,其中PINSEL0和PINSEL1控制端口0,PINSEL2根据芯片的不同控制的端口数量也不同 。,LPC2000系列微控制器具有引脚功能复用特性,那么如何设置某个引脚为指定功能?,MOV指令与LDR指令都是往目标寄存器中传送数据,但是它们有什么区别吗? MOV指令用于将数据从一个寄存器传送到另一个寄存器中,或者将一个常数传送到一个寄存器中,但是不能访问内存。LDR指令用于从内存中读取数据放入寄存器中。,最小内核 | C/OS-II微小内核分析,基本概念,并行程序执行的独立的基本逻辑单位”称之为“任务”。,1、什么是任务,独立的具体含义,最小内核 | C/OS-II微小内核分析,基本概念,可并行执行的单位,可以认为C/OS-II为每个任务虚拟了一个CPU。在对任务进行编程时,应该时刻谨记这个观点。,虚拟了多个CPU,等待状态:任务在等待某一事件的发生还不能运行的状态;,被中断状态:因为中断服务程序正在执行而得不到CPU控制权的状态;,睡眠状态:任务驻留在程序空间之中,还没有交给C/OS-管理的状态,而将任务交给C/OS-管理是通过调用函数OSTaskCreate()实现的;,就绪状态:任务已经准备好,可以运行了,但由于该任务的优先级比正在运行的任务的优先级低,还暂时不能运行的状态。在C/OS-中,当任务一旦建立,这个任务就进入就绪态准备运行;,运行状态:任务掌握了CPU的控制权,正在运行中的状态。,最小内核 | C/OS-II微小内核分析,基本概念,2、任务的状态,任务状态描述,LPC2100、LPC2200,电源,1.分析需求 LPC2100、LPC2200需要4组电源输入:数字3.3V、数字1.8V、模拟3.3V和模拟1.8V。因此,理想情况下电源系统需要提供4组独立的电源:两组3.3V电源和两组1.8V电源,它们需要单点接地或大面积接地。如果系统的其它部分还有其它电源需求,则还需要更多的末级电源。但如果不使用LPC2000的AD功能,或对AD的要求不高,模拟电源和数字电源可以不分开供电。这里假设不使用LPC2000的AD功能,且其它部分对电源没有特殊要求。这样,末级只需要提供两组电源。,4.5 存储器加速模块(MAM),LPC2000微控制器扩展了器件内部Flash总线宽度为128位,用于提高处理器的指令执行速度。这个接口通过存储器加速模块(MAM)来控制。,片内Flash通过128位宽度的总线与ARM内核相连,具有很高的速度,加上特有的存储器加速功能,因此可以将程序直接放在Flash上运行。,4.16 看门狗,看门狗简介,在嵌入式应用中,CPU必须可靠工作,即使因为某种原因进入了一个错误状态,系统也应该可以自动恢复。看门狗的用途就是使微控制器在进入错误状态后的一定时间内复位。 其原理是在系统正常工作时,用户程序每隔一段时间执行喂狗动作(一些寄存器的特定操作),如果系统出错,喂狗间隔超过看门狗溢出时间,那么看门狗将会产生复位信号,使微控制器复位。,看门狗复位是通过设置看门狗相关寄存器,当看门狗定时器溢出后,引发复位。,3.2 指令集介绍,ARM指令集ARM数据处理指令,数据处理指令大致可分为3类: 数据传送指令; 算术逻辑运算指令; 比较指令。 数据处理指令只能对寄存器的内容进行操作,而不能对内存中的数据进行操作。所有ARM数据处理指令均可选择使用S后缀,并影响状态标志。,2.5 ARM处理器模式,简介,ARM体系结构支持7种处理器模式,分别为:用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式。这样的好处是可以更好的支持操作系统并提高工作效率。ARM7TDMI完全支持这七种模式。,第3章 ARM7TDMI(-S)指令系统,ARM处理器是基于精简指令集计算机(RISC)原理设计的,指令集和相关译码机制较为简单。ARM7TDMI(-S)具有32位ARM指令集和16位Thumb指令集,ARM指令集效率高,但是代码密度低;而Thumb指令集具有较高的代码密度,却仍然保持ARM的大多数性能上的优势,它是ARM指令集的子集。所有的ARM指令都是可以有条件执行的,而Thumb指令仅有一条指令具备条件执行功能。ARM程序和Thumb程序可相互调用,相互之间的状态切换开销几乎为零。,2.6 ARM内部寄存器,简介,在ARM处理器内部共有37个用户可访问的寄存器,分别为31个通用32位寄存器和6个状态寄存器。,ARM处理器共有7种不同的处理器模式,每种模式都有一组相应的寄存器组,最多可以18个活动的寄存器。,3.1 ARM处理器寻址方式,寻址方式分类,寻址方式是根据指令中给出的地址码字段来实现寻找真实操作数地址的方式。ARM处理器具有8种基本寻址方式。 1.寄存器寻址; 2.立即寻址; 3.寄存器移位寻址; 4.寄存器间接寻址; 5.基址寻址; 6.多寄存器寻址; 7.堆栈寻址; 8.相对寻址。,1.3 嵌入式操作系统,实时操作系统的特点,总的来说实时操作系统是事件驱动的,能对来自外界的作用和信号在限定的时间范围内作出响应。它强调的是实时性、可靠性和灵活性, 与实时应用软件相结合成为有机的整体起着核心作用, 由它来管理和协调各项工作,为应用软件提供良好的运行软件环境及开发环境。 从实时系统的应用特点来看实时操作系统可以分为两种:一般实时操作系统和嵌入式实时操作系统。,最小内核 | C/OS-II微小内核分析,时间管理,如果某任务需要申请延时一段时间,系统调用系统服务函数OSTimeDly()来实现,调用该函数会使C/OS-进行一次任务调度,并且执行下一个处于就绪态优先级最高的任务。任务调用OSTimeDly()后,一旦规定的时间期满,它就会马上进入就绪态。OSTimeDly()仅有一个参数ticks表明任务需要延时的时间,以系统时钟节拍为单位。,C/OS-II提供的时间管理服务函数是以系统节拍为处理单位的。,4.14 UART(0、1),特性,LPC2000系列微控制器具有两个功能强大的UART,其特性如下: 16字节接收FIFO和16字节发送FIFO; 寄存器位置符合16C550工业标准; 接收FIFO触发点可设置为1、4、8或14字节; 内置波特率发生器; UART1含有标准调制解调器接口信号 。,LPC2114系列ARM就是通过UART0进行ISP通信操作,只有UART1才有Modem中断,外部中断 极性控制,外部中断 方式控制,掉电 唤醒控制,中断标志,寄存器汇总,若引脚上出现了符合要求的信号,EXTINT寄存器中对应的中断标志将被置位。向该寄存器的EINT0EINT3位写入1,可将其清零。,外部中断标志寄存器(EXTINT):,注意:在电平触发方式下,清除中断标志只有在引脚处于无效状态时才可实现。比如设置为低电平中断,则只有在中断引脚恢复为高电平后才能清除中断标志。,设置该寄存器允许相应的外部中断将处理器从掉电模式唤醒。实现掉电唤醒不需要在向量中断控制器(VIC)中使能相应的中断。该寄存器的低四位(EXTWAKE3:0)分别对应外部中断30。,外部中断唤醒寄存器(EXTWAKE):,外部中断方式控制寄存器(EXTMODE):,该寄存器控制着外部中断输入信号的有效触发方式,低四位分别对应外部中断30。对应位为0时,电平触发外部中断;对应位为1时,边沿触发外部中断。,外部中断极性控制寄存器(EXTPOLAR):,电平触发方式下:对应位为0时,低电平触发外部中断;对应位为1时,高电平触发外部中断。边沿触发方式下:对应位为0时,下降沿触发外部中断;对应位为1时,上升沿触发中断。,中断信号波形与设置方式,以下代码是初始化外部中断0,用它来唤醒掉电的LPC2114,请填空。 PINSEL0=0x00000000; PINSEL1=(PINSEL1 /清除外部中断标志,EXTMODE = EXTMODE | 0x01; /设置EINT0为边沿触发模式 EXTPOLAR = EXTPOLAR /初始化EINT0为下降沿中断,使用NOP伪指令、比较指令、条件跳转指令等完成一个软件延时子程序,延时长度由R0寄存器的数值控制?,Delay NOP ;空操作 NOP NOP SUBS R0,R0,#1 ;循环次数减一 BNE Delay ;如果循环未结束,跳转Delay继续 MOV PC,LR ;子程序返回,初始化串口0程序。设置为8位数据位,1位停止位,无奇偶校验,入口参数:bps 通讯波特率 void UART0Init(uint32 bps) uint16 Fdiv; PINSEL0=(PINSEL0 ,设计完成主模式I2C的初始化 Void I2C_init(uint32 fi2c) /传入参数为I2C时钟频率 if(fi2c 400000)fi2c = 400000;/过滤传入参数,最高400K时钟频率 PINSEL0=(PINSEL0 ,下列程序语句完成什么操作,并在空格里说明程序中语句的作用? 答: ARM状态切换到Thumb状态。 AREA Example1,CODE,READONLY ;声明代码段Example1 ENTRY ;标识程序入口 CODE32 ;声明32位ARM指令 ARM_CODE ADR R0,THUMB_CODE+1 BX R0 ; 跳转并切换处理器状态 CODE16 ;声明16位Thumb指令 THUMB_CODE MOV R0,#10 ; R0 = 10 MOV R1,#20 ; R1 = 20 ADD R0,R1 ; R0 = R0+R1 B . END,初始化PWM2双边沿控制输出要求:设置PWM周期为Fpclk/FREQ,设置前沿在周期的1/5处、设置后沿在周期的2/5处 Void PWM2Out(uint16 FREQ) /*输出频率,单位Hz*/ int32u Fpclk; Fpclk=0x10000; PINSEL0 /*使能PWM,启动定时器*/ ,初始化定时器0,要求:匹配寄存器为119999、产生中断,重置TC、定时器计数器0为4号中断 void timer0Init(void)T0MR0=119999;/*匹配寄存器,120000-1,12000000为1秒*/ T0MCR = 3; /*产生中断,重置TC*/ T0TCR = 1; /*使能定时计数器0*/ VICVectAddr0=(unsigned long)timer0_ISR; /*设置中断向量*/ VICVectCntl0=0x20|4; /*定时器计数器0为4号中断*/ VICIntEnable = 0x00000010; /*开定时计数器0中断*/ ,C/OS-II程序设计如下,在空格里说明程序中语句的作用 int main (void) OSInit (); /*初始化C/OS-II*/ OSTaskCreate (Task0,(void *)0, /* 避免编译警告*/,TargetInit (); /*硬件初始化*/ OSTaskCreate (TaskLED1,(void *)0, /*创建LED1个任务*/,OSTaskCreate (TaskLED2,(void *)0, /*延时10个节拍*/ ,装订线,#include “config.h“ #include“stdlib.h“ #define LED1 (114) /*定义LED */ #define TaskStkLengh 64 /* 定义用户任务LED的堆栈长度*/ OS_STK TaskLEDStkTaskStkLengh; /* 定义任务TaskLED的堆栈*/ void TaskLED(void *pdata); /*任务TaskLED1*/ int main (void) OSInit (); OSTaskCreate (TaskLED,(void *)0, /*创建LED任务*/,OSStart (); return 0;, void TaskLED(void *pdata) pdata = pdata; /* 避免编译警告*/ TargetInit (); /*硬件初始化*/ PINSEL0 ,设计使用PWM6输出PWM信号, PWM周期69120,设置PWM占空比为50 #include “config.h“ void TargetInit(void) PWMPR=0x00; /不分频,计数频率为Fpclk PWMMCR=0x02; /设置PWMMR0匹配时复位PWMTC PWMMR0=69120; /设置PWM周期 PWM

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论