ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:203.91KB ,
资源ID:15650571      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-15650571.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(菜鸟的ARM学习笔记proteus仿真.docx)为本站会员(b****6)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

菜鸟的ARM学习笔记proteus仿真.docx

1、菜鸟的ARM学习笔记proteus仿真菜鸟的M学习笔记下面就是我学习ARM的第一阶段的记录,这段时间的学习基本上是使用Poe配合KEIL做简单的实验(最后有实验的目录以及下载地址)。通过该阶段的学习,算是对AM的基本结构有了了解。该阶段主要学习资料是基于OEUS的ARM虚拟开发技术,以及另外一本M体系结构的书籍,感觉这类书都差不多。 学习AM前需要的基础1.前辈学习ARM的经验! (我是在嵌入式开发联盟的新人区看的帖子。) 2.掌握C语言编程。 3.了解简单的微机算计原理知识,例如二进制,计算机程序的执行过程,总线(数据、地址、控制),软件系统(系统软件与应用软件)。 4.听说过RISC与IS

2、C,高级语言与低级语言的区别。5.最好听说过串行传输与并行传输。6.普林斯顿(AR)和哈佛结构(ARM9、10、11)。 什么是AR?学M,自然要理解R是什么,也好明确学习目标。网上的资料很多,“ARM是一家公司,也是一个处理器体系”我将学ARM分为以下几类:1.做M的核心研发。也就是进AR公司做IP核,应该是学电子之类的东西吧。 2.买RM的P核,做具体的嵌入式处理器、核心板,例如三星和XP。 3.买ARM核心板,连接外围电路制作教育用或开发用的开发板,或者直接开发其它中断产品。 4.买M开发板做产品,要做系统软件和应用软件。 3和4基本并列了。RM基础任何一本介绍ARM体系结构书籍都应该有

3、这些内容。处理器模式用户模式、特权模式又分为系统模式、管理模式、快中断模式、中断模式、终止模式、未定义指令终止模式。. 寄存器R0-R7、R5和CPSR是所有模式共享的。R812出快中断模式有RX-fq外所有模式共享。R3、R14和S只有用户模式和系统模式共享,其它都有似有SPSR。R(PC)程序计数器R1(CPSR)程序转台寄存器R13(SP)堆栈指针14(LR)链接寄存器ARM指令集 汇编程序设计略了,我看了,但是做Proteus仿真实验没用上,两天就忘了。LP2000我买的本AM入门书籍中有两本都是以LC2000系列为例的,其实从网上可以下载到具体L2XXX处理器的atasheet,上面

4、的资料是最权威和详尽的。引脚选择PINSEL0、NSEL设置各个引脚的功能。中断中断的寄存器太多了,没记。GI做输入输出。以P0口为例,寄存器有0PN、ST、IO0DI、O0LR。存储器1.L2000可用地址为4G,内部2GB(00x7FFFFF),外部2B(0800000000xDFFFF),高0.5GB是I设备地址空间(0E000000xFFFFFF)。2.内部最低128KB或256为Flas。 3.高GB(0x40000000FFFFF)为SRM。其中0x4000x40FF为片内SRA。 4.I/部分,低2MB(xE0000000E01FFFFF)为PB外设空间,高2MB(0FFE000

5、000xFFFFFFF)为AHB外设空间。5.FLSH加速模块。 MAMC设置是否允许加速、MTIM设置预取处理器时钟。时钟cclk、c分振荡器模式和从属模式,振荡器Foc经PLL升频为cclk,l经过VPB分频后为pclk。设置ccPLLCG 设置PLL倍频,PL分频器值PLLCONPL的允许与连接PLLTT 读取L状态LLFE使PLL设置生效例Fosc=2MHz,cclk=MHz,则M=012=4,因为cc=P*k2(要求1562MHz)。设置pc由VPBDIV设置00为分频、0为不分频、10为二分频。定时器pck定时,定时器为32位,从0计数到0xFFFF。以T0为例T0TC,计数器初值

6、T0PR,定时计数器分频,pk/(PR1)T0MR,匹配值,当计数带到时候,按照T0MC的设置触发不同动作。TMCR,计数器到达匹配值的动作(复位、中断、停止)T0MR,外部匹配寄存器,到达匹配值时候外部引脚的操作(M0.03)CR,外部引脚有特定动作时候,计数值存入T0CR3,设置是否触发中断TR0,在T0CCR控制下存TC值。TTC,复位与使能0IR,对应M与CR中断W看门狗Plk四分频后控看门狗的32为计数器减一。WTC,看门狗计数器初值。WMOD,看门狗工作模式,可以开启和复位看门狗。WFEED,喂狗寄存器。WDT,看门狗计数器当前值。UART引脚RxD0,TxDU0RB,暂存接受数据

7、。U0HR,暂存发送数据。访问它时,U0LCR的AB位为0。U0ER,串口个状态的中断允许。U0IIR,中断标志。U0FCR,控制UART的IFO(暂时没明白)。U0LCR,传输模式。U0LSR,当前状态(错误指示)。U0DLL、ULM,pck/( 0LL U0DLM),访问时LC的DLB位为1。SPI全双工同步串行接口引脚:K0,串行时钟。SSEL0,从机选择。MSO,主机输入,从机输出。MOS,主机输出,从机输入。寄存器:S0SPR,S控制。SPSR,SP状态。0SPD,P数据。S0PCCR,控制SK的频率。必须为偶数且大于等于8。(指示一个SC周期中的pclk周期)SSPINT,PI中断

8、。I2C引脚:SA,SL寄存器:I2CNSETICNCRI2CON上面三个寄存器控制应答标志位,中断标志、停止和起始以及I2C使能。I2STAT,C状态。I2DT,I数据。I2ADR,I2C从模式地址。2STAT,I2状态。2CL,高电平占空比占clk周期个数。I2CL,低电平占空比占pclk周期个数。分频fpcl/( I2CLH+I2SCLL)。AD转换引脚:AIN03寄存器:ADC,工作模式选择。A,转换数据以及标志的暂存。基于rotes的ARM实验目录菜鸟的ARM学习笔记(第一阶段) 1.LE闪烁M的tes实验2.开关控制LDARM的Prtes实验 3.LCDARM的Protus实验 4

9、.URTARM的Pres实验 5.Ein1外部中断RM的Peus实验 6.多个外部中断AM的rtu实验 7.中断结合串口ARM的rtu实验 8.定时器AR的rtes实验 9.SP通信ARM的Protus实验 10.SPI通信(多从设备)AM的Poes实验 11.ADC数模转换ARM的otes实验1、LED闪烁A的Proteu实验实验原理RM(L2X)的一个I/O口接LE,通过给它送和来设置LED的亮和灭。Poteu仿真电路图步骤KEIL1.创建新工程 2.选择RM型号(KEIL会自动生成启动代码sart.) 3.添加源文件,编写程序4.设置项目选项(是否输出hex、lt文件,设置linkr s

10、cip) Poeus1.绘制电路图 2.载入程序3.仿真 C语言源程序*/* */* edc: 用AM点亮一个led并闪烁,有点浪费 * */*/#include /*函数名: ely()*描述:软件延时*voi ea (void) usiged voatlelon ,; for(i=0;i60000;i+) for(j=0;j;j+) ;int main(void) PINSEL0= 0; 设置引脚为G*/ IO0DI= 0x000;/*将P0设置为输出 */ 0SE= 0x000001;/*将P0.0置1,也就是让ed灭 */ hie (1) IO0C = 0x000001;dla();

11、IO0SE = x0001;day(); 2、开关控制LDRM的Poteus实验实验原理ARM的0.1口接按钮,再通过0.0控制LED的亮、灭。本实验的电路图以及实验均在上一个实验基础之上修改。其中电路图只多了一个开关。Prote仿真电路图实验步骤略(与上一实验相同)语言源程序/*/* */* ld.c: 用ARM实现开关控制led并亮灭,还是有点浪费 /* */*/#inclue #dfine P0_1 2; /0*/ /*函数名: delay()*描述:软件延时*/void dey (void) unind volatile logi; fo(i;i0000;i+) ;int man(vo

12、id)it p01Stae; NSL = ;/设置引脚为PIO*/ IO0DI = 0x00000;*将.0设置为输出 */ I0SE = 0x00001;/将P0.0置1,也就是让ld灭 */ hil (1) p01Stte 0IN&P0_1; /*读取开关状态*/i(01Stt = ) IO0LR= 0x00001; deay(); ls IOSET 0001; dely(); 3、LCARM的Prtes实验实验原理AM的P0.口到0.10口接LC,0.11接ED。每过一段时间ED状态改变,LCD显示L的状态。Prots仿真电路图C语言源程序#iclu #dfers(8)#dfne w (

13、19)define en(10)#defne b (1) /P0.7tyeef ungned ar uin8; ut leownThe LED is down!;ui8 edUp=The LEDis u!;vod waitLCD() /*等待LCD*/ IOIR=0x00;while(1) O0CLR=s;IO0SET=rw; IO0SETen; if(!(OPN& buy)brea;O0CLR en; IO0IR0xff;void lcdOp(n d)/*送控制码*/ waiLC();IO0CLRs; O0CLR=; 0LR=0ff; IO0SETdt; IO0SETe; IO0R=n;vo

14、cdData(ui8 at)*送CD显示数据*/ aiLCD();I0SET=s; IOCLR=rw;IO0CLR=0xff; O0SET=dt; I0SET=en; IO0CLR=e;vod lcdInt(void)/初始化LC,ataShet里有建议的初始化代码*/ / CD配置为两行,57字体 lOp(x); d(x38);cp(x6); ldp(0x0); ldp(x0);/* D配置为一行,5*0字体lcdOp(0x34); cp(0x34); cdOp(0x06); lcp(0x0); lcdOp(0x01); */vodlcdDisply(uint ar,unt8 *p)*LCD

15、显示字符串*/ dOp(addr); whle(*p!=0) lcata(*(+);void lCler(voi)/*LD清屏*/ldOp(x01);vd delay (void) usignedvolatil lni,j; r(i=0;i00;+)for(j=0;#inclue uart.#defie 0x0Dcar ldDowThe ED is down!n;aredUp=TheLE is p!;n ptchar(it ch) 向串口输出一个字符 */ i (ch = n) hile(!(U1LS & 02); U1THR = R; a whle(!(U1S & 0x); ret (THR

16、 =ch);vid elay (voi) nsiged volatile log ,j; for(i=0;i6000;i) r(j=0;j;+) ;vid seriluts(hr *)* 向串口输出字符串 / while (*p != 0) puthar(*p+); n man (void) / 开始初始化串口 */ PNSE0 = 005000;/* 设置引脚,开串口功能*/ ULR x83;* 8位数据,无效验,一个停止位* UDLL =9;/* VPB1MHz的时候波特率为900 * 1LCR = 003;*DLA =0 /*结束初始化串口*/ IO0DR= 0x0001;/*将0.设置

17、为输出 */ whil (1) IO0CL =0x0001;its(edp);dlay(); ISE 0x0001;sraluts(ledDwn); dela(); 5、Eint1外部中断RM的Proteus实验实验原理ARM的P0.25接一个LE,引脚设置时连接EINT1功能,按钮触发中断。中断服务程序另E快速闪烁。oeus仿真电路图C语言源程序#incleC1XX.H#define CON 0x0200000/*LED接在P0.2上*typedef unsin in nt2;void IRQ_En1(void)_atriute_ ((iteu);/*声明某函数为中断服务子程序的方法*/ui

18、nt32times =100;/循环次数默认为100*/void RQ_Eit1(vod) ties 5; wile((EXTNT&002)!=0) EXTINT=0x02; /清除EI1中断标志 VICectdr=;vid delay100(oid) unsign olatieloni,j; for(i=0;i1000;i+) fo(j=0;jtimes;+); if(tmes 100) es-; eseif(time 100) times+; nt mai(voi) I0DR = LEDON; PINSL=0x200000;*引脚选中EINT1功能* INSE1=x000000;/*以下为

19、中断控制部分*/ VCInSlec0;/全部中断设置为IQ,若某位为1是Q/ VICntEnale=0x0000800;/*使能EINT1,EINT为第5位/ VICVctCntl10xF;*F,15号中断/ VVectAdr1=(in)_Eint1;/*设置中断服务子程序*/ EXTIT0; wile (1) IO0C EDCN; dely100(); IO0SET=CON; deay100(); 6、多个外部中断ARM的Prteu实验实验原理ARM开启两个中断源Ent与Eint2,分别用一个按钮来控制。在没有中断的时候两个E都缓慢闪烁,当任何一个中断被出发的时候,对应的LD会急促闪烁,逐渐

20、回复正常。Prteus仿真电路图语言源程序#ide #ne ED1 0020000/LED1接在P0.2上/#define ED0 010000*LD接在0.24上* typdef sgned intuint2;vd Eint1ISR(void) _trbut_ ((inerp);/*声明某函数为中断服务子程序的方法/vodEi_ISR(void) _attbute_ (nterrupt));uit3 times = 0;/*循环次数默认为40*voi ay0(od) unsgndvolaile long,j; for(i=0;100;i+) for(j;j 4) times-=2; lsif

21、(times4) es+2; void n0ISR(void) tme= 0; hi(imes!40) IO0CLR = LE0;delay40(); OS= D0; delay40(); wie(ETIN&1)!=0) IT=0x01;清除ENT0中断标志*/ VCVctddr=0x00;vdit_SR(void) tims = ; while(times!=40) IO0CLR ED1; deay0(); IOSET = ED1; deay0(); hile((XNT&0x0)!=0) EXTINTx02;/清除EIN1中断标志* VIVecAdr=;nt main(void) IO0DI = ED1LED0; PINSE =0x200000;/引脚选中E1功能*/ PINSEL1 =0000001;/*引脚选中EIT

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2