书签 分享 收藏 举报 版权申诉 / 36
上传文档赚钱

类型ARM嵌入式系统基础教程-复习题-第2版-课件.ppt

  • 上传人(卖家):三亚风情
  • 文档编号:3376519
  • 上传时间:2022-08-25
  • 格式:PPT
  • 页数:36
  • 大小:1.72MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《ARM嵌入式系统基础教程-复习题-第2版-课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    ARM 嵌入式 系统 基础教程 复习题 课件
    资源描述:

    1、嵌入式处理器可以分为几大类?嵌入式处理器可以分为以下几大类:嵌入式微处理器;嵌入式微控制器;嵌入式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功能,并用于高电平输出或引脚状态输入时,要接上拉电阻才能正

    2、常使用。向量中断控制器VIC中被设置为几类?最多可以管理多少个中断输入请求?中断输入请求可以在VIC中被设置为以下三类:FIQ中断:具有最高优先级;向量IRQ中断:具有中等优先级;非向量IRQ中断:具有最低优先级;FIQ中断向量IRQ中断非向量IRQ中断中断源0中断源1中断源31VIC将32个中断输入进行分配 若LPC2210/2220的bank0存储块使用32位总线,访问bank0时,地址A1、A0是否有效?EMC模块中的BLS0BLS3具有什么功能?32位总线宽度 数据总线D31D0有效,地址总线A1、A0无效,字节定位信号中BLS0BLS3有效。32位存储器件中字节0、1、2、3的定位表

    3、示法:32位存储器数据32位存储器件地址D31 D24D23 D16D15 D8D7 D0字节3字节2字节1字节00 x0000 0000字节3字节2字节1字节00 x0000 0001字节3字节2字节1字节00 x0000 0010字节3字节2字节1字节0 EMC提供了一组字节定位选择信号(BLS0BLS3)实现对16位或32位外部存储器组的字节操作。4.6 外部存储器控制器(EMC)32位总线宽度连接方式Aa_m:0D7:0CEOEWE(a)RBLE=0Aa_m:0D7:0CEOEWEBLS3BLS2D23:16D31:24Aa_b:2OECSn Aa_m:0D7:0CEOEWEBLS1D

    4、15:8 Aa_m:0D7:0CEOEWEBLS0D7:08位存储器8位存储器8位存储器8位存储器 Aa_m:0D15:0CEOEWEUBLBBLS3BLS2D31:16Aa_b:2OECSnWE(b)RBLE=1 Aa_m:0D15:0CEOEWE UBLBBLS1BLS0D15:0 16位存储器16位存储器 Aa_m:0D31:0CEOEWE B3B2BLS1BLS0D31:0Aa_b:2OECSnWE(c)RBLE=1 B1B0BLS1BLS032位存储器1.3 嵌入式操作系统 常见的嵌入式操作系统 C/OS-II是一个源码公开、可移植、可固化、可裁剪、占先式的实时多任务操作系统。其绝大

    5、部分源码是用ANSI C写的,使其可以方便的移植并支持大多数类型的处理器。C/OS-II通过了联邦航空局(FAA)商用航行器认证。自1992年问世以来,C/OS-II已经被应用到数以百计的产品中。C/OS-II占用很少的系统资源,并且在高校教学使用是不需要申请许可证。C/OS-II4.7 引脚连接模块 概述 LPC2000系列微控制器的大部分管脚都具有多种功能,即管脚复用,但是同一引脚在同一时刻只能使用其中一个功能,通过配置相关寄存器控制多路开关来连接引脚与片内外设。引脚P0.0GPIOTXD0PWM1输出保留PINSELx引脚连接寄存器PINSELx1:000011011P0.0默认为GPI

    6、O功能P0.0选择TXD0功能,配置对应位为01P0.0选择PWM1功能,配置对应位为10P0.0选择保留功能,配置对应位为114.7 引脚连接模块 LPC2000系列微控制器具有三个32位宽度PINSEL寄存器,其中PINSEL0和PINSEL1控制端口0,PINSEL2根据芯片的不同控制的端口数量也不同。寄存器描述寄存器LPC2100LPC2200PINSEL0P00:15PINSEL1P016:31PINSEL2P116:31P10:1、P116:31、P20:31、P30:31 LPC2000系列微控制器的大部分管脚都具有多种功能,即管脚复用,但是同一引脚在同一时刻只能使用其中一个功能

    7、,通过配置引脚连接寄存器:PINSELx控制多路开关来连接引脚与片内外设。LPC2000系列ARM7微控制器有三个32位宽度PINSEL寄存器,其中PINSEL0和PINSEL1控制端口0,PINSEL2根据芯片的不同控制的端口数量也不同。LPC2000系列微控制器具有引脚功能复用特性,那么如何设置某个引脚为指定功能?MOV指令与LDR指令都是往目标寄存器中传送数据,但是它们有什么区别吗?MOV指令用于将数据从一个寄存器传送到另一个寄存器中,或者将一个常数传送到一个寄存器中,但是不能访问内存。LDR指令用于从内存中读取数据放入寄存器中。最小内核最小内核|C/OS-II微小内核分析微小内核分析

    8、基本概念基本概念 并行并行程序执行的独立独立的基本逻辑单位”称之为“任务”。1、什么是任务 非独立的任务结构 独立的任务结构 独立的具体含义独立的具体含义最小内核最小内核|C/OS-II微小内核分析微小内核分析 基本概念基本概念 可并行执行的单位可并行执行的单位 可以认为C/OS-II为每个任务虚拟了一个CPU。在对任务进行编程时,应该时刻谨记这个观点。虚拟了多个CPU 等待状态:等待状态:任务在等待某一事件的发生还不能运行的状态;被中断状态:被中断状态:因为中断服务程序正在执行而得不到CPU控制权的状态;睡眠状态:睡眠状态:任务驻留在程序空间之中,还没有交给C/OS-管理的状态,而将任务交给

    9、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组

    10、独立的电源:两组3.3V电源和两组1.8V电源,它们需要单点接地或大面积接地。如果系统的其它部分还有其它电源需求,则还需要更多的末级电源。但如果不使用LPC2000的AD功能,或对AD的要求不高,模拟电源和数字电源可以不分开供电。这里假设不使用LPC2000的AD功能,且其它部分对电源没有特殊要求。这样,末级只需要提供两组电源。4.5 存储器加速模块(MAM)LPC2000微控制器扩展了器件内部Flash总线宽度为128位,用于提高处理器的指令执行速度。这个接口通过存储器加速模块(MAM)来控制。片内Flash通过128位宽度的总线与ARM内核相连,具有很高的速度,加上特有的存储器加速功能,因

    11、此可以将程序直接放在Flash上运行。4.16 看门狗 看门狗简介 在嵌入式应用中,CPU必须可靠工作,即使因为某种原因进入了一个错误状态,系统也应该可以自动恢复。看门狗的用途就是使微控制器在进入错误状态后的一定时间内复位。其原理是在系统正常工作时,用户程序每隔一段时间执行喂狗动作(一些寄存器的特定操作),如果系统出错,喂狗间隔超过看门狗溢出时间,那么看门狗将会产生复位信号,使微控制器复位。看门狗复位是通过设置看门狗相关寄存器,当看门狗定时器溢出后,引发复位。3.2 指令集介绍 ARM指令集ARM数据处理指令 数据处理指令大致可分为3类:数据传送指令;算术逻辑运算指令;比较指令。数据处理指令只

    12、能对寄存器的内容进行操作,而不能对内存中的数据进行操作。所有ARM数据处理指令均可选择使用S后缀,并影响状态标志。2.5 ARM处理器模式 简介 ARM体系结构支持7种处理器模式,分别为:用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式。这样的好处是可以更好的支持操作系统并提高工作效率。ARM7TDMI完全支持这七种模式。第3章 ARM7TDMI(-S)指令系统 ARM处理器是基于精简指令集计算机(RISC)原理设计的,指令集和相关译码机制较为简单。ARM7TDMI(-S)具有32位ARM指令集和16位Thumb指令集,ARM指令集效率高,但是代码密度低;而Thumb指

    13、令集具有较高的代码密度,却仍然保持ARM的大多数性能上的优势,它是ARM指令集的子集。所有的ARM指令都是可以有条件执行的,而Thumb指令仅有一条指令具备条件执行功能。ARM程序和Thumb程序可相互调用,相互之间的状态切换开销几乎为零。2.6 ARM内部寄存器 简介 在ARM处理器内部共有37个用户可访问的寄存器,分别为31个通用32位寄存器和6个状态寄存器。ARM处理器共有7种不同的处理器模式,每种模式都有一组相应的寄存器组,最多可以18个活动的寄存器。3.1 ARM处理器寻址方式 寻址方式分类 寻址方式是根据指令中给出的地址码字段来实现寻找真实操作数地址的方式。ARM处理器具有8种基本

    14、寻址方式。1.寄存器寻址;2.立即寻址;3.寄存器移位寻址;4.寄存器间接寻址;5.基址寻址;6.多寄存器寻址;7.堆栈寻址;8.相对寻址。1.3 嵌入式操作系统 实时操作系统的特点 总的来说实时操作系统是事件驱动的,能对来自外界的作用和信号在限定的时间范围内作出响应。它强调的是实时性、可靠性和灵活性,与实时应用软件相结合成为有机的整体起着核心作用,由它来管理和协调各项工作,为应用软件提供良好的运行软件环境及开发环境。从实时系统的应用特点来看实时操作系统可以分为两种:和。最小内核最小内核|C/OS-II微小内核分析微小内核分析 时间管理时间管理 如果某任务需要申请延时一段时间,系统调用系统服务

    15、函数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字节;内置波特率发生器;

    16、UART1含有标准调制解调器接口信号。LPC2114系列ARM就是通过UART0进行ISP通信操作,只有UART1才有Modem中断 外部中断极性控制外部中断方式控制掉电唤醒控制中断标志EXTPOLAREXTMODEEXTINTEXTWAKE管脚连接控制PINSELxCPU其它部件 寄存器汇总中断相关寄存器EXTINTEINT07:40EINT11EINT22EINT33 若引脚上出现了符合要求的信号,EXTINT寄存器中对应的中断标志将被置位。向该寄存器的EINT0EINT3位写入1,可将其清零。外部中断标志寄存器(EXTINT):注意:在电平触发方式下,清除中断标志只有在引脚处于无效状态时

    17、才可实现。比如设置为低电平中断,则只有在中断引脚恢复为高电平后才能清除中断标志。设置该寄存器允许相应的外部中断将处理器从掉电模式唤醒。实现掉电唤醒不需要在向量中断控制器(VIC)中使能相应的中断。该寄存器的低四位(EXTWAKE3:0)分别对应外部中断30。外部中断唤醒寄存器(EXTWAKE):控制寄存器EXTWAKEEXTWAKE07:40EXTWAKE11EXTWAKE22EXTWAKE33外部中断方式控制寄存器(EXTMODE):该寄存器控制着外部中断输入信号的有效触发方式,低四位分别对应外部中断30。对应位为0时,电平触发外部中断;对应位为1时,边沿触发外部中断。控制寄存器EXTMOD

    18、EEXTMODE07:40EXTMODE11EXTMODE22EXTMODE33外部中断极性控制寄存器(EXTPOLAR):电平触发方式下:对应位为0时,低电平触发外部中断;对应位为1时,高电平触发外部中断。边沿触发方式下:对应位为0时,下降沿触发外部中断;对应位为1时,上升沿触发中断。控制寄存器EXTPOLAREXTPOLAR07:40EXTPOLAR11EXTPOLAR22EXTPOLAR33设置说明相应位设置值信号波形极性控制寄存器(EXTPOLAR)方式控制寄存器(EXTMODE)低电平触发0(低)0(电平)高电平触发1(高)0(电平)下降沿触发0(下降)1(边沿)上升沿触发1(上升)

    19、1(边沿)中断信号波形与设置方式 以下代码是初始化外部中断以下代码是初始化外部中断0 0,用它来唤醒掉电的,用它来唤醒掉电的LPC2114LPC2114,请填空。请填空。PINSEL0=0 x00000000;PINSEL1=(PINSEL1&0 xFFFFFFFC)|0 x01;/设置I/O口连接,P0.16设置为EINT0EXTMODE=EXTMODE&0 x0E;/设置EINT0为电平触发模式EXTPOLAR=EXTPOLAR&0 x0E;/设置EINT0为低电平触发EXTWAKE=EXTWAKE&0 x0E;/允许外部中断0唤醒掉电的CPUEXTINT=0 x0F;/清除外部中断标志

    20、EXTMODE=EXTMODE|0 x010 x01;/设置EINT0为边沿触发模式EXTPOLAR=EXTPOLAR&0 x0E;/初始化EINT0为下降沿中断 使用NOP伪指令、比较指令、条件跳转指令等完成一个软件延时子程序,延时长度由R0寄存器的数值控制?DelayDelay NOPNOP;空操作 NOPNOP NOPNOP SUBS R0,R0,#1SUBS R0,R0,#1 ;循环次数减一 BNE DelayBNE Delay;如果循环未结束,跳转Delay继续 MOV PC,LRMOV PC,LR;子程序返回 初始化串口0程序。设置为8位数据位,1位停止位,无奇偶校验,入口参数:b

    21、ps 通讯波特率void UART0Init(uint32 bps)uint16 Fdiv;PINSEL0=(PINSEL0&(0 x0F)|0 x05;/不影响其它管脚连接,设置I/O连接到UART0 U0LCR=0 x83;/DLAB=1,可设置波特率 Fdiv=(Fpclk/16)/bps;/设置波特率 U0DLM=Fdiv/256;U0DLL=Fdiv%256;U0LCR=0 x03;设计完成主模式I2C的初始化Void I2C_init(uint32 fi2c)/传入参数为I2C时钟频率 if(fi2c 400000)fi2c=400000;/过滤传入参数,最高400K时钟频率 PI

    22、NSEL0=(PINSEL0&0 xFFFFFF0F)|0 x50;/设置引脚连接模块(PINSEL0)I2SCLH=(Fpclk/fi2c+1)/2;/设置通信波特率(I2SCLH、I2SCLL)I2SCLL=(Fpclk/fi2c)/2;I2CONCLR=0 x2C;I2CONSET=0 x40;/使能主I2C(I2CONSET)VICIntSelect=0 x00000000;VICVectCntl0=0 x29;VICVectAddr0=(int)IRQ_I2C;/设置中断向量(VICxxx)VICIntEnable=0 x0200;下列程序语句完成什么操作,并在空格里说明程序中语句的

    23、作用?答:ARM状态切换到Thumb状态。AREAExample1,CODE,READONLY;声明代码段Example1 ENTRY ;标识程序入口 CODE32;声明32位ARM指令ARM_CODEADR R0,THUMB_CODE+1BX R0;跳转并切换处理器状态CODE16;声明16位Thumb指令THUMB_CODEMOV R0,#10;R0=10MOV R1,#20;R1=20ADD R0,R1;R0=R0+R1B.END 初始化PWM2双边沿控制输出要求:设置PWM周期为Fpclk/FREQ,设置前沿在周期的1/5处、设置后沿在周期的2/5处Void PWM2Out(uint1

    24、6 FREQ)/*输出频率,单位Hz*/int32u Fpclk;Fpclk=0 x10000;PINSEL0&=0 xFFFF3FFF;/*设置引脚连接模块连接PWM1输出*/PINSEL0|=0 x00008000;PWMPCR=0 x404;/*设置PWM2双边沿输出*/PWMMCR=0 x02;/*MR0匹配后复位定时器*/PWMPR=0 x00;/*设置预分频值为0*/PWMMR0=Fpclk/FREQ;/*设置PWM周期*/PWMMR1 =0 x2000;/*PWMMR0/5设置前沿在周期的1/5处*/PWMMR2 =0 x4000;/*PWMMR1*2设置后沿在周期的2/5处*/

    25、PWMLER =0 x07;/*使能PWM匹配锁存*/PWMTCR =0 x09;/*使能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=0 x20|4;/*定时器计数器0为4号中断*/VICIntE

    26、nable=0 x00000010;/*开定时计数器0中断*/C/OS-II程序设计如下,在空格里说明程序中语句的作用int main(void)OSInit();/*初始化C/OS-II*/OSTaskCreate(Task0,(void*)0,&Task0StkTask0StkLengh-1,4);/*创建Task0任务*/OSStart();/*启动C/OS-II,任务开始运行*/return 0;void Task0(void*pdata)pdata=pdata;/*避免编译警告*/TargetInit();/*硬件初始化*/OSTaskCreate(TaskLED1,(void*)0

    27、,&TaskLED1StkTaskLED1StkSize-1,5);/*创建LED1个任务*/OSTaskCreate(TaskLED2,(void*)0,&TaskLED2StkTaskLED2StkSize-1,6);/*创建LED2个任务*/while(1)OSTimeDly(10);/*延时10个节拍*/#include config.h#includestdlib.h#define LED1 (114)/*定义LED */#defineTaskStkLengh64 /*定义用户任务LED的堆栈长度*/OS_STK TaskLEDStkTaskStkLengh;/*定义任务TaskLE

    28、D的堆栈*/void TaskLED(void*pdata);/*任务TaskLED1*/int main(void)OSInit();OSTaskCreate(TaskLED,(void*)0,&TaskLEDStkTaskStkLengh-1,3);/*创建LED任务*/OSStart();return 0;void TaskLED(void*pdata)pdata=pdata;/*避免编译警告*/TargetInit();/*硬件初始化*/PINSEL0&=(3(2*14);/*P0.14 LED_RUN 设置成GPIO*/IO0DIR|=LED1;/*设置LED1控制口为输出*/whi

    29、le(1)IO0CLR=LED1;OSTimeDly(25);IO0SET=LED1;OSTimeDly(25);设计使用PWM6输出PWM信号,PWM周期69120,设置PWM占空比为50#include config.hvoid TargetInit(void)PWMPR=0 x00;/不分频,计数频率为Fpclk PWMMCR=0 x02;/设置PWMMR0匹配时复位PWMTC PWMMR0=69120;/设置PWM周期 PWMMR6=34560;/设置PWM占空比 PWMLER=0 x41;/PWMMR0,PWMMR6锁存 PWMPCR=0 x4000;/允许PWM6输出,单边PWM

    30、PWMTCR=0 x09;/启动定时器,PWM使能int main(void)uint32 pwmdata;/PWM占空比控制变量 PINSEL0=0 x00080000;/设置PWM6连接到P0.9引脚 PINSEL1=0 x00000000;/其他引脚设置为GPIO TargetInit();/PWM初始化 pwmdata=34560;while(1)PWMMR0=69120;/设置PWM周期 PWMMR6=pwmdata;/设置PWM占空比 设计延迟蜂鸣器,要求使用LPC21系列,P0.7引脚控制蜂鸣器,低电平蜂鸣#include#define uint32 unsigned int /

    31、*定义uint32为无符号数*/#define BEEPCON 0 x00000080 /*P0.7引脚控制蜂鸣器,低电平蜂鸣*/void DelayNS(uint32 dly)uint32 i;for(;dly0;dly-)for(i=0;i500;i+);int main(void)PINSEL0=0 x00000000;/*设置引脚连接GPIO*/IODIR0=BEEPCON;/*设置I/O为输出*/while(1)IOSET0=BEEPCON;/*BEEPCON=1*/DelayNS(500);IOCLR0=BEEPCON;/*BEEPCON=0*/DelayNS(500);return(0);

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:ARM嵌入式系统基础教程-复习题-第2版-课件.ppt
    链接地址:https://www.163wenku.com/p-3376519.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库