预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共15页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

嵌入式系统复习笔记 -----增哥 注意点:本复习指导基本已涉及所有的程序设计以及分析题,每个考点后面均有例题,例题前的所有知识点我已经把他写的尽量通俗易懂,把程序分析的方法也写明,希望大家用几个小时时间来看看,通过考试绝对没有问题!PS:本材料后面所写的参考页码均是以新版书为标准,用旧版书的同学麻烦自己写上旧版书的页码,知识点都是同样的!!!本人能力有限,如有错误,请见谅!! 1、状态寄存器CPSR各bit的意义: 各位同学只需了解控制位bit0~bit7 Mode[4:0]是见表1P29 Mode[4:0]10000100011001010011101111101111111模式用户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的流水线 采用三级流水线,即取指→译码→执行 例:假设一共有三条指令: 0x4000ADDPC,PC,#4;其中第二个PC指针的值为0x4008,将第二个PC+4=0x400C赋给第一个PC指针(回答上述PC指针永远指向取值的问题) 0x4004SUB 0x4008CMP 那么CPU实际执行为: 周期取指译码执行 T1ADD T2SUBADD T3CMPSUBADD 解释:当第一CPU周期T1时先取址,取第一个指令的地址。 当第二CPU周期T2时取第二个指令的地址,然后译码,译的是第一个指令的码 当第三CPU周期T3时取第三个指令的地址,译第二个指令的码,执行第一个指令 所以:PC值=当前程序执行位置+8字节(假如CPSR中的T位为0,则+8;假如T位为1,则+4) 4、PLL频率的计算(P133) VPB时钟 (pclk) 解决器时钟 (cclk) 晶振或外部时钟源 Fosc VPB分频器 PLL 符号说明晶体振荡器的输出频率,即PLL的输入频率PLL电流控制振荡器的输出频率PLL最终的输出频率(即CPU内核需要的频率)通过VPB分频器后的供应外部设备的输出频率值MPLLCFG寄存器中的MSEL位的倍增器值+1P134PPLLCFG寄存器中的PSEL位的分频器值P134PLLCFG寄存器的意义:一个8位的PLL配置寄存器 PLLCFG[4:0]为MSEL[4:0],存放的是PLL倍频器值(即M值); 例:MSEL[4:0]=00101则表达5,M=5+1=6 PLLCFG[6:5]为PSEL[1:0],存放的是PLL的分频器值(即P值;) 例:PSEL[1:0]=00则表达P=1 01则表达P=2 10则表达P=4 11则表达P=8 PLL频率公式: 注意点:的范围为156~320MHZ; 例题:晶振的频率为10MHZ,需要输出的系统时钟为60MHZ,请问如何配置? 答:=10MHZ,所以,所以M-1=5,所以MSEL[4:0]=0b00101; 根据的范围可知,所以,P只能取2,即PSEL[1:0]=0b01; 所以根据上述得: PLLCFG=(1<<5)|(5);这句话的意思是将2(也就是0b01)向左移5位,也就是将PESL赋值了,然后与5逻辑或,也就是将0b00101赋值给MSEL了。 则系统时钟设立为: #defineFosc11059200;晶振10MHz; #defineFcclk(Fosc*6);系统频率为Fosc的整数M倍 #defineFcco(Fcclk*4);cco频率为Fcclk的2P倍 #defineFpclk(Fcclk/4)*1;VPB分频,只能为Fcclk/4的1、2、4倍 5、引脚连接模块的配置 注意点:请各位同学注意LPC2214的引脚描述图P97 【1】引脚选择寄存器共3个,每个32位,PINSEL0、PINSEL1、PINSEL2 其中每两位控制一个引脚(如何理解?) 解释:PINSEL0[1:0]表达该寄存器1位、0位控制P0.0口 其中00表达GPIO的功能;01表达TxD(UART0)的功能;10表达PWM1的功能;11保存 具体见表P173-P174 所以PINSEL0[31:0]控制P0.0~P0.15PINSEL1[31:0]控制P0.16~P0.31 【2】例题:将P0.10配置成GPIO,P0.11配置成CTS(UART1),如何配置? 解题分析思绪: ①一方面拟定是PINSEL0还是PINSE