




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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位存储器件中字
3、节0、1、2、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
4、:0d7:0ceoewebls1d15: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引脚连接寄存器pins
6、elx1 : 000011011p0.0默认为gpio功能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指令用于从内存中读取数据放入
8、寄存器中。最小内核最小内核 | c/os-ii微小内核分析微小内核分析 基本概念基本概念 并行并行程序执行的独立独立的基本逻辑单位”称之为“任务”。1、什么是任务 非独立的任务结构 独立的任务结构 独立的具体含义独立的具体含义最小内核最小内核 | c/os-ii微小内核分析微小内核分析 基本概念基本概念 可并行执行的单位可并行执行的单位 可以认为c/os-ii为每个任务虚拟了一个cpu。在对任务进行编程时,应该时刻谨记这个观点。 虚拟了多个cpu 等待状态:等待状态:任务在等待某一事件的发生还不能运行的状态;被中断状态:被中断状态:因为中断服务程序正在执行而得不到cpu控制权的状态;睡眠状态:
9、睡眠状态:任务驻留在程序空间之中,还没有交给c/os-管理的状态,而将任务交给c/os-管理是通过调用函数ostaskcreate()实现的;就绪状态:就绪状态:任务已经准备好,可以运行了,但由于该任务的优先级比正在运行的任务的优先级低,还暂时不能运行的状态。在c/os-中,当任务一旦建立,这个任务就进入就绪态准备运行;运行状态:运行状态:任务掌握了cpu的控制权,正在运行中的状态。最小内核最小内核 | c/os-ii微小内核分析微小内核分析 基本概念基本概念2、任务的状态 任务状态描述 lpc2100、lpc2200电源1.分析需求 lpc2100、lpc2200需要4组电源输入:数字3.3
10、v、数字1.8v、模拟3.3v和模拟1.8v。因此,理想情况下电源系统需要提供4组独立的电源:两组3.3v电源和两组1.8v电源,它们需要单点接地或大面积接地。如果系统的其它部分还有其它电源需求,则还需要更多的末级电源。但如果不使用lpc2000的ad功能,或对ad的要求不高,模拟电源和数字电源可以不分开供电。这里假设不使用lpc2000的ad功能,且其它部分对电源没有特殊要求。这样,末级只需要提供两组电源。4.5 存储器加速模块(mam) lpc2000微控制器扩展了器件内部flash总线宽度为128位,用于提高处理器的指令执行速度。这个接口通过存储器加速模块(mam)来控制。 片内flas
11、h通过128位宽度的总线与arm内核相连,具有很高的速度,加上特有的存储器加速功能,因此可以将程序直接放在flash上运行。 4.16 看门狗 看门狗简介 在嵌入式应用中,cpu必须可靠工作,即使因为某种原因进入了一个错误状态,系统也应该可以自动恢复。看门狗的用途就是使微控制器在进入错误状态后的一定时间内复位。 其原理是在系统正常工作时,用户程序每隔一段时间执行喂狗动作(一些寄存器的特定操作),如果系统出错,喂狗间隔超过看门狗溢出时间,那么看门狗将会产生复位信号,使微控制器复位。 看门狗复位是通过设置看门狗相关寄存器,当看门狗定时器溢出后,引发复位。3.2 指令集介绍 arm指令集arm数据处
12、理指令 数据处理指令大致可分为3类: 数据传送指令;算术逻辑运算指令;比较指令。 数据处理指令只能对寄存器的内容进行操作,而不能对内存中的数据进行操作。所有arm数据处理指令均可选择使用s后缀,并影响状态标志。 2.5 arm处理器模式 简介 arm体系结构支持7种处理器模式,分别为:用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式。这样的好处是可以更好的支持操作系统并提高工作效率。arm7tdmi完全支持这七种模式。第3章 arm7tdmi(-s)指令系统 arm处理器是基于精简指令集计算机(risc)原理设计的,指令集和相关译码机制较为简单。arm7tdmi(-s)
13、具有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处理器寻址方式 寻址
14、方式分类 寻址方式是根据指令中给出的地址码字段来实现寻找真实操作数地址的方式。arm处理器具有8种基本寻址方式。1.寄存器寻址;2.立即寻址;3.寄存器移位寻址;4.寄存器间接寻址;5.基址寻址;6.多寄存器寻址;7.堆栈寻址;8.相对寻址。1.3 嵌入式操作系统 实时操作系统的特点 总的来说实时操作系统是事件驱动的,能对来自外界的作用和信号在限定的时间范围内作出响应。它强调的是实时性、可靠性和灵活性, 与实时应用软件相结合成为有机的整体起着核心作用, 由它来管理和协调各项工作,为应用软件提供良好的运行软件环境及开发环境。 从实时系统的应用特点来看实时操作系统可以分为两种:和。最小内核最小内核
15、 | c/os-ii微小内核分析微小内核分析 时间管理时间管理 如果某任务需要申请延时一段时间,系统调用系统服务函数ostimedly()来实现,调用该函数会使c/os-进行一次任务调度,并且执行下一个处于就绪态优先级最高的任务。任务调用ostimedly()后,一旦规定的时间期满,它就会马上进入就绪态。ostimedly()仅有一个参数ticks表明任务需要延时的时间,以系统时钟节拍为单位。c/os-ii提供的时间管理服务函数是以系统节拍系统节拍为处理单位的。 4.14 uart(0、1) 特性 lpc2000系列微控制器具有两个功能强大的uart,其特性如下: 16字节接收fifo和16字
16、节发送fifo; 寄存器位置符合16c550工业标准; 接收fifo触发点可设置为1、4、8或14字节; 内置波特率发生器; uart1含有标准调制解调器接口信号 。 lpc2114系列arm就是通过uart0进行isp通信操作,只有uart1才有modem中断 外部中断极性控制外部中断方式控制掉电唤醒控制中断标志extpolarextmodeextintextwake管脚连接控制pinselxcpu其它部件 寄存器汇总中断相关寄存器extinteint07 : 40eint11eint22eint33 若引脚上出现了符合要求的信号,extint寄存器中对应的中断标志将被置位。向该寄存器的ei
17、nt0eint3位写入1,可将其清零。外部中断标志寄存器(extint):注意:在电平触发方式下,清除中断标志只有在引脚处于无效状态时才可实现。比如设置为低电平中断,则只有在中断引脚恢复为高电平后才能清除中断标志。 设置该寄存器允许相应的外部中断将处理器从掉电模式唤醒。实现掉电唤醒不需要在向量中断控制器(vic)中使能相应的中断。该寄存器的低四位(extwake3:0)分别对应外部中断30。外部中断唤醒寄存器(extwake):控制寄存器extwakeextwake07 : 40extwake11extwake22extwake33外部中断方式控制寄存器(extmode): 该寄存器控制着外部
18、中断输入信号的有效触发方式,低四位分别对应外部中断30。对应位为0时,电平触发外部中断;对应位为1时,边沿触发外部中断。控制寄存器extmodeextmode07 : 40extmode11extmode22extmode33外部中断极性控制寄存器(extpolar): 电平触发方式下:对应位为0时,低电平触发外部中断;对应位为1时,高电平触发外部中断。边沿触发方式下:对应位为0时,下降沿触发外部中断;对应位为1时,上升沿触发中断。控制寄存器extpolarextpolar07 : 40extpolar11extpolar22extpolar33设置说明相应位设置值信号波形极性控制寄存器(ex
19、tpolar)方式控制寄存器(extmode)低电平触发0(低)0(电平)高电平触发1(高)0(电平)下降沿触发0(下降)1(边沿)上升沿触发1(上升)1(边沿)中断信号波形与设置方式 以下代码是初始化外部中断以下代码是初始化外部中断0 0,用它来唤醒掉电的,用它来唤醒掉电的lpc2114lpc2114,请填空。请填空。pinsel0=0 x00000000;pinsel1=(pinsel1&0 xfffffffc) | 0 x01;/设置i/o口连接,p0.16设置为eint0extmode=extmode & 0 x0e ;/设置eint0为电平触发模式extpolar=extpolar
20、& 0 x0e;/设置eint0为低电平触发extwake=extwake& 0 x0e;/允许外部中断0唤醒掉电的cpuextint= 0 x0f ;/清除外部中断标志 extmode = extmode | 0 x010 x01; /设置eint0为边沿触发模式extpolar = extpolar & 0 x0e; /初始化eint0为下降沿中断 使用nop伪指令、比较指令、条件跳转指令等完成一个软件延时子程序,延时长度由r0寄存器的数值控制?delaydelay nopnop ;空操作 nopnop nopnop subs r0,r0,#1subs r0,r0,#1 ;循环次数减一 b
21、ne delaybne delay ;如果循环未结束,跳转delay继续 mov pc,lrmov pc,lr ;子程序返回 初始化串口0程序。设置为8位数据位,1位停止位,无奇偶校验,入口参数:bps 通讯波特率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
22、 % 256; u0lcr = 0 x03;设计完成主模式i2c的初始化void i2c_init(uint32 fi2c) /传入参数为i2c时钟频率 if(fi2c 400000)fi2c = 400000;/过滤传入参数,最高400k时钟频率 pinsel0=(pinsel0 & 0 xffffff0f)|0 x50;/设置引脚连接模块(pinsel0) i2sclh=(fpclk/fi2c+1)/2; /设置通信波特率(i2sclh、i2scll) i2scll=(fpclk/fi2c)/2; i2conclr= 0 x2c; i2conset=0 x40; /使能主i2c(i2con
23、set) vicintselect=0 x00000000; vicvectcntl0=0 x29; vicvectaddr0=(int)irq_i2c;/设置中断向量(vicxxx) vicintenable = 0 x0200; 下列程序语句完成什么操作,并在空格里说明程序中语句的作用?答: arm状态切换到thumb状态。areaexample1,code,readonly ;声明代码段example1 entry ;标识程序入口 code32;声明32位arm指令arm_codeadr r0,thumb_code+1bx r0; 跳转并切换处理器状态code16;声明16位thumb指
24、令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(uint16 freq)/*输出频率,单位hz*/ int32u fpclk; fpclk=0 x10000; pinsel0&=0 xffff3fff;/*设置引脚连接模块连接pwm1输出*/ pinsel0|=0 x00008000; pwmpcr= 0 x404;/*设置pwm2双边沿输出*/
25、 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处*/ pwmler = 0 x07;/*使能pwm匹配锁存*/ pwmtcr = 0 x09;/*使能pwm,启动定时器*/ 初始化定时器0,要求:匹配寄存器为119999、产生中断,重置tc、定时器计数器0为4号中断void timer0init(void
26、)t0mr0=119999;/*匹配寄存器,120000-1,12000000为1秒*/t0mcr = 3; /*产生中断,重置tc*/t0tcr = 1;/*使能定时计数器0*/vicvectaddr0=(unsigned long)timer0_isr; /*设置中断向量*/vicvectcntl0=0 x20|4;/*定时器计数器0为4号中断*/vicintenable = 0 x00000010;/*开定时计数器0中断*/c/os-ii程序设计如下,在空格里说明程序中语句的作用int main (void) osinit ();/*初始化c/os-ii*/ostaskcreate (t
27、ask0,(void *)0, &task0stktask0stklengh - 1, 4); /*创建task0任务*/ osstart ();/*启动c/os-ii,任务开始运行*/ return 0;void task0(void *pdata)pdata = pdata; /* 避免编译警告*/targetinit ();/*硬件初始化*/ostaskcreate (taskled1,(void *)0, &taskled1stktaskled1stksize - 1, 5);/*创建led1个任务*/ostaskcreate (taskled2,(void *)0, &taskled
28、2stktaskled2stksize - 1, 6);/*创建led2个任务*/while (1)ostimedly(10);/*延时10个节拍*/ #include config.h#includestdlib.h#define led1 (114) /*定义led */#definetaskstklengh64 /* 定义用户任务led的堆栈长度*/os_stk taskledstktaskstklengh; /* 定义任务taskled的堆栈*/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; /*设置led
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- CJ/T 531-2018生活垃圾焚烧灰渣取样制样与检测
- CJ/T 365-2011地铁与轻轨车辆转向架技术条件
- CJ/T 351-2010高位调蓄叠压供水设备
- CJ/T 179-2018自力式流量控制阀
- 习题集锦初级社会工作者考试试题及答案
- 极限挑战下的软件评测师考试试题及答案
- 中级社会工作者考试相关技术技能的提升及试题及答案
- 初级社会工作者是什么样的职业试题及答案
- 摩托转让合同协议书范本
- 2025年网络规划设计师考试详细解析试题及答案
- 《中华人民共和国医疗保障法》解读与培训
- 2025届辽宁省葫芦岛市第二次模拟考试二模英语试题(原卷版+解析版)
- 中国碳化硼陶瓷项目商业计划书
- 2025新疆交投集团所属子公司招56人笔试参考题库附带答案详解
- 2025年生物统计学考试题及答案详解
- 建筑智能化试题及答案
- 第五讲铸牢中华民族共同体意识-2024年形势与政策
- 2024结肠锯齿状病变诊断及治疗进展
- NB-T 47013.1-2015 承压设备无损检测 第1部分-通用要求
- (完整版)中国古代书法史课件
- 《新能源材料与器件》教学课件-04电化学能源材料与器件
评论
0/150
提交评论