嵌入式系统复习笔记.doc

上传人:豆**** 文档编号:17571345 上传时间:2022-05-25 格式:DOC 页数:10 大小:228KB
返回 下载 相关 举报
嵌入式系统复习笔记.doc_第1页
第1页 / 共10页
嵌入式系统复习笔记.doc_第2页
第2页 / 共10页
点击查看更多>>
资源描述

《嵌入式系统复习笔记.doc》由会员分享,可在线阅读,更多相关《嵌入式系统复习笔记.doc(10页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流嵌入式系统复习笔记.精品文档.嵌入式系统 复习笔记 -增哥 注意点:本复习指导基本已包括所有的程序设计以及分析题,每个考点后面均有例题,例题前的所有知识点我已经把他写的尽量通俗易懂,把程序分析的方法也写明,希望大家用几个小时时间来看看,通过考试绝对没有问题! PS:本材料后面所写的参考页码均是以新版书为标准,用旧版书的同学麻烦自己写上旧版书的页码,知识点都是一样的!本人能力有限,如有错误,请见谅!1、状态寄存器CPSR各bit的意义:各位同学只需了解控制位bit0bit7Mode4:0是见表1 P29Mode4:010000100011001

2、010011101111101111111模式用户FIQ中断IRQ中断管理中止未定义系统T:为状态:0表示ARM状态,1表示Thumb状态I、F表示IRQ中断FIQ中断的使能。1时中断禁止,0时中断使能(允许该中断)。2、三个特殊用途寄存器 SP(R13) LR(R14) PC(R15) R13(SP):堆栈指针,保存当前处理器模式的堆栈栈顶。R14(LR):链接R,保存子程序(含发生异常)的返回地址。R15(PC):程序计数器,保存下一条指令的地址。注意点:PC指针永远指向取值(什么意思?见第3点流水线)3、ARM7的流水线 采用三级流水线,即 取指译码执行 例:假设一共有三条指令: 0x4

3、000 ADD PC,PC,#4 ;其中第二个PC指针的值为0x4008,将第二个PC+4=0x400C赋给第一个PC指针(回答上述PC指针永远指向取值的问题) 0x4004 SUB 0x4008 CMP 那么CPU实际执行为: 周期 取指 译码 执行 T1 ADD T2 SUB ADD T3 CMP SUB ADD解释:当第一CPU周期T1时先取址,取第一个指令的地址。 当第二CPU周期T2时取第二个指令的地址,然后译码,译的是第一个指令的码 当第三CPU周期T3时取第三个指令的地址,译第二个指令的码,执行第一个指令所以:PC值=当前程序执行位置+8字节(如果CPSR中的T位为0,则+8;如

4、果T位为1,则+4)4、PLL频率的计算(P133)VPB时钟(pclk)处理器时钟(cclk)晶振或外部时钟源FoscVPB分频器PLL符号说明晶体振荡器的输出频率,即PLL的输入频率PLL电流控制振荡器的输出频率PLL最终的输出频率(即CPU内核需要的频率)经过VPB分频器后的供给外部设备的输出频率值MPLLCFG寄存器中的MSEL位的倍增器值+1 P134PPLLCFG寄存器中的PSEL位的分频器值 P134PLLCFG寄存器的意义:一个8位的PLL配置寄存器PLLCFG4:0为MSEL4:0,存放的是PLL倍频器值(即M值); 例:MSEL4:0=00101 则表示5,M=5+1=6P

5、LLCFG6:5为PSEL1:0,存放的是PLL的分频器值(即P值;) 例:PSEL1:0=00 则表示P=1 01 则表示P=2 10 则表示P=4 11 则表示P=8PLL频率公式: 注意点:的范围为156320MHZ;例题:晶振的频率为10MHZ,需要输出的系统时钟为60MHZ,请问如何配置? 答:=10MHZ,所以,所以 M-1=5,所以MSEL4:0=0b00101; 根据的范围可知, 所以,P只能取2,即PSEL1:0=0b01;所以根据上述得:PLLCFG = (15) | (5) ;这句话的意思是将2(也就是0b01)向左移5位,也就是将PESL赋值了,然后与5逻辑或,也就是将

6、0b00101赋值给MSEL了。则系统时钟设置为:#define Fosc 11059200 ; 晶振10MHz;#define Fcclk (Fosc * 6) ; 系统频率为Fosc的整数M倍#define Fcco (Fcclk*4) ; cco频率为Fcclk的2P倍#define Fpclk (Fcclk/ 4)*1 ; VPB分频,只能为Fcclk/ 4的1、2、4倍5、引脚连接模块的配置 注意点:请各位同学注意LPC2214的引脚描述图 P97【1】引脚选择寄存器共3个,每个32位,PINSEL0、PINSEL1、PINSEL2 其中每两位控制一个引脚(如何理解?) 解释:PIN

7、SEL01:0表示该寄存器1位、0位控制P0.0口 其中00表示GPIO的功能;01表示TxD(UART0)的功能;10表示PWM1的功能;11保留详细见表 P173-P174 所以PINSEL031:0控制P0.0P0.15 PINSEL131:0控制P0.16P0.31 【2】例题:将P0.10配置成GPIO,P0.11配置成CTS(UART1),如何配置?解题分析思路: 首先确定是PINSEL0还是PINSEL1来控制?这里是PINSEL0控制; 而且P0.10是PINSEL021:20控制,P0.11是PINSEL023:22控制;再根据P173的表可得,P0.10的GPIO功能的值为

8、00,P0.11的CTS功能值是01; 23:22 21:2001 00 =4 , 0x0420 (0X00400000) 这句话的意思是将这四位的值(也就是0x00000004)赋值进去,因为该值是从第20开始的,所以需要左移20,就变成了(0x00400000);最后写出引脚配置语句,采用可先读寄存器值,然后按位进行逻辑“与”、“或”操作,再回写到该寄存器。 也就是: 本题答案: PINSEL0=(PINSEL0 & 0xFF0FFFFF)|(0x0420) (本句的意思是,先读出PINSEL0的值,然后和0xFF0FFFFF逻辑与,因为PINSEL0中我们只需要将要设置的0100赋值进去

9、,不能改变其他值,原值&1=原值,起到保护其他值的作用31 : 24 23:2221:20 19 : 0二进制: 1111 1111 00 00 1111 1111 1111 1111 1111 十六进制: FF 0 FFFFF然后我们将要赋值的值左移20位,与原值逻辑或即可)。6、外部存储器的配置(EMC)【1】系统有4个外部存储器组配置寄存器BCFG0 BCFG1 BCFG2 BCFG3 描述见P155其中PINSEL25:4为BOOT1:0,也是BCFGn29:28,表示控制数据总线的宽度00 表示8位 01 表示16位 10表示32位 11保留 寄存器的配置选项: IDCY:为防止总线

10、竞争,存储器内部读/写访问间需间隔空闲时钟周期(1 16个cclk); WST1:读访问长度(等待+操作:3 34个cclk); WST2:写访问长度(等待+操作:1 32个cclk); RBLE/MW:存储器组的总线宽度(8/16/32位); WP:存储器组写保护(=1, 写保护)。【2】16位宽存储器组连接16位SRAM芯片;512KB、16位数据宽度(或者问MW=0b01或者问BOOT1:0=0b01),请问如何接线? P362解题分析思路: 首先确定是16位数据总线宽度,那么将LPC2200中的D0D15连接到SRAM上的I/O0I/O15上。512KB是容量,决定地址总线的宽度,所以

11、为19根地址总线,所以从A0A18;又因为是16位数据宽度,P口只有8位输出,所以A0为低位,不用接。所以实际接线为A1A18接到SRAM的A0A17.见以下接线图为答案。7、VIC向量中断控制配置【1】VIC控制寄存器分三个寄存器:VICIntSelect(中断选择寄存器)、VICIntEnable(中断使能寄存器)、VICIntEnClr(中断使能清零寄存器) P193P194VICIntSelect(中断选择寄存器):为32位寄存器,当某一位为1时,表示该通道的中断设置为FIQ;为0时,分配为IRQ。例:VICIntSelect14=1 则通道14的EINT0中断设置为FIQ中断。VIC

12、IntEnable(中断使能寄存器):为32位寄存器,写入1时,对应通道的中断使能,写入0时,则对应通道中断无效。例:VICIntEnable = (114);即通道14(也就是EINT0)中断使能;VICIntEnClr(中断使能清零寄存器):为32位寄存器,写入1时,对应通道的中断禁止,写入0时,则无效。例:VICIntEnClr = (114);即通道14(也就是EINT0)中断禁止;注意:19个中断源对应的VIC通道号(同学们只需要了解加粗体的几个中断源对应的通道号即可)模块标志VIC通道号WDT看门狗中断(WDINT)0保留给软件中断1ARM内核EmbeddedICE,DbgComm

13、Rx2ARM内核EmbeddedICE,DbgCommTx3定时器0匹配 0-3(MR0, MR1, MR2, MR3)捕获 0-3(CR0, CR1, CR2, CR3)4定时器1匹配 0-3(MR0, MR1, MR2, MR3)捕获 0-3(CR0, CR1, CR2, CR3)5UART0Rx 线状态(RLS)发送保持寄存器空(THRE)Rx 数据可用(RDA)字符超时指示(CTI)6UART1Rx 线状态(RLS)发送保持寄存器空(THRE)Rx 数据可用(RDA)字符超时指示(CTI)7PWM0匹配 0-6(MR0, MR1, MR2, MR3, MR4, MR5, MR6)8I2

14、CISI(状态改变)9SPI0SPI 中断标志(SPIF)模式错误(MODF)10SPI1SPI 中断标志(SPIF)模式错误(MODF)11PLLPLL 锁定(PLOCK)12RTC计数器增加(RTCCIF)报警(RTCALF)13系统控制外部中断 0(EINT0)14系统控制外部中断 1(EINT1)15系统控制外部中断 2(EINT2)16系统控制外部中断 3(EINT3)17A/DA/D转换器18【2】VIC参数设置寄存器 P196共有四类:VICVectAddr向量地址寄存器 (向量IRQ中断需要用到) VICDefVectAddr默认向量地址寄存器 (非向量IRQ中断需要用到) V

15、ICVectAddr015向量地址寄存器015 VICVectCntl015向量控制寄存器015(见下表描述) 注意:015的数字不是随机的,而是根据slot015来确定的,slot为优先级,0最大,15最小;也就是说,当使用slot0时,用VICVectCntl0。位31:654:0功能保留向量IRQ使能分配给向量IRQ通道的中断请求或软件中断的编号【3】中断的寄存器配置 若配置成FIQ中断: 第一步:先用VICIntSelect(中断选择寄存器)选择哪个通道需要设置成FIQ中断 第二步:用VICIntEnable(中断使能寄存器)将该通道中断使能。 例:设置EINT0中断为FIQ中断:因为

16、EINT0通道号为14,所以VICIntSelect=(114); VICIntEnable= (114); 若配置成向量IRQ中断: 第一步:先用VICIntSelect(中断选择寄存器)选择哪个通道需要设置成IRQ中断 第二步:用VICVectCntl015(向量控制寄存器015)对向量中断进行设置。 第三步:将中断服务地址赋值给VICVectAddr015(向量地址寄存器015)。 第四步:将用VICIntEnable(中断使能寄存器)将该通道中断使能。 例:设置定时器0中断为向量IRQ中断,分配为slot0,中断服务地址为Timer0_ISR: 因为定时器0通道号为4号,所以 VICI

17、ntSelect = (14); VICVectCntl0 = 0x24 ; 0010 0100 根据上表,可得 VICVectCntl05=1, VICVectCntl04:0=4 VICVectAddr0 = (unsigned int)Timer0_ISR; VICIntEnable = (14); 若配置成非向量IRQ中断: 第一步:先用VICIntSelect(中断选择寄存器)选择哪个通道需要设置成IRQ中断 第二步:将非向量中断服务地址赋给VICDefVectAddr(默认向量地址寄存器) 第三步:用VICIntEnable(中断使能寄存器)将该通道中断使能。例:将EINT0设置成

18、非向量中断,中断服务程序地址为Eint0_ISR: VICIntSelect = (114); VICDefVectAddr = (unsigned int) Eint0_ISR; VICIntEnable = (1 4; 表示bak中的31:8与3:0均清零,7:4保持不变,然后右移4位,这样7:4的值就移到了3:0中,如此便使原先的P0.7P0.4对应值在P0.3P0.0输出。取反P0.0的输出if (IO0SET&0x00000001 ) = 0 ) ;先使之保留P0.0的值,其余清零,判断P0.0是否为0 IO0SET = 0x00000001 ; ;如果为0,则使P0.0置1else

19、 IO0CLR = 0x00000001 ; ;如果为1,则使P0.0为010、定时器的配置 所有寄存器前缀都有Tn(n表示0或1),表示定时器0或定时器1,如T0IR,以下我已经全部省略,请同学们务必不要忘记!O(_)O! 定时器的相关引脚:捕获信号引脚 CAP0.3CAP0.0 详情参见 P223 CAP1.3CAP1.0 外部匹配输出引脚 MAT0.3MAT0.0 MAT1.3MAT1.0【1】定时器有:基本寄存器组(IR、TCR、TC、PR、PC),匹配功能寄存器(MCR、MR0、MR1、MR2、MR3、EMR),捕获功能寄存器(CCR、CR0、CR1、CR2、CR3) P225228

20、 注意:匹配:到达匹配寄存器的定时值,产生中断或执行其他动作。捕获:输入信号发生跳变时捕获定时器值,并可产生中断。 (1)基本寄存器组: IR:中断标志寄存器,3:0为控制四个匹配通道的中断标志 7:4为控制四个捕获通道事件的中断标志 TCR:定时器控制寄存器,1=计数器使能;0=计数器复位 TC:定时器计数器:32位寄存器,存放计数值,计数值=TC+1; PR:预分频寄存器: PC:预分频计数器:知道即可。 (2)匹配功能寄存器组 匹配寄存器(MR0MR3),这里的值与TC值比较,当相等时,发生中断。 MCR匹配控制寄存器: 其中2:0控制MR0,5:3控制MR1,8:6控制MR2,11:9

21、控制MR3 以2:0为例:0位 表示中断:为1时,MR0与TC值匹配将产生中断;为0时,禁止中断; 1位 表示复位:为1时,MR0与TC值匹配时使TC复位,为0时,不复位; 2位 表示停止:为1时,MR0与TC值匹配将使TC和PC停止,TCR的bit0清零(一般不用,同学们可以直接默认为0) 其他同上; EMR外部匹配寄存器: P229EMR11:10控制外部匹配3(MAT0.3/MAT1.3)EMR9:8 控制外部匹配2(MAT0.2/MAT1.2)EMR7:6 控制外部匹配1(MAT0.1/MAT1.1)EMR5:4 控制外部匹配0(MAT0.0/MAT1.0)EMR11:10、EMR9:

22、8、EMR7:6或EMR5:4功能00没动作01外部匹配3、2、1或0输出为010外部匹配3、2、1或0输出为111外部匹配3、2、1或0输出翻转例题: T0MR0 = 100 ;设置定时器0匹配寄存器的值为100,即当TC到100时,发生匹配动作 T0MCR = 0x03 ;表示0000 0011,设置匹配功能寄存器,当匹配时,定时器0复位,并产生中断。 T0EMR = 0x30 ;表示 0011 0000,设置外部匹配0,当发生匹配时,MAT0.0输出翻转。【2】例题 P235237 (1)对定时器0进行中断初始化,定时器每隔100ms中断一次。令Fpclk为1KHZ公式: T0TC =

23、0 ; 定时器0的计数器清零 T0PR = 0 ; 不分频 T0MCR = 0x03 ; 表示0000 0011,表示T0TC与T0MR0匹配后,复位T0TC,并产生中断; T0MR0 = Fpclk/10 ; 根据上述公式,计算出MR的值 T0TCR = 0x01 ; 启动 (2)利用定时器0输出1KHZ频率的方波,占空比为50%。公式: PINSEL0 = (PINSEL0& 0xFFFFF3FF) | (0b10 R0 INC R1 CLR A MOVC A,A+DPTR MOV P1,0FFH LCALL SENDTO;sao miao 1 lie MOV P1,A INC DPTR

24、LCALL DELAY DJNZ R6,FLASHCY DJNZ R5,MAINLOOP inc r2 CJNE R2,#5FH,AD1 LJMP ad;LJMP MAINLOOPSENDTO: PUSH ACC CLR CLKSENDTIME:;sent data from 164 to lie sao miao MOV R7,#08H MOV A,R0 CLR CSENDCY: RRC A MOV DINA,C SETB CLK CLR CLK DJNZ R7,SENDCY POP ACC RETDELAY: MOV R7,#01DELAY0: MOV R4,#17DELAY1: MOV R3,#28 DJNZ R3,$ DJNZ R4,DELAY1 DJNZ R7,DELAY0 RETORG 09000HDB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH END

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com