欢迎来到天天文库
浏览记录
ID:39284620
大小:27.00 KB
页数:4页
时间:2019-06-29
《嵌入式实验报告2》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、嵌 入 式 实 验 报 告 一.实验目的: 1. 理解中断向量表的结构 2. 理解中断处理的过程 3. 学习编写中断处理程序的方法二.实验原理1.打开cache,地址为0x01c000002.初始化LED灯PCONB[4-5]=0b00;使LED7和led8的控制孔为输出口3初始化定时器TCFG0=199;TCFG1=3;//1/16TCMPB0=0;TCNTB0=9375;TCON=0x2;TCON=0x9;4初始化中断关中断既cpsr寄存器的第七位置为1INTCON=0x5;INTMOD=0x0;工作在IRQ中断模式下INTMSK=0x7ffffff&~(1<<26)&~(1
2、<<13);timer0中断允许而后开中断既cpsr寄存器的第七位置05.设置0x18处的指令b函数名6.设置程序从0x0处运行,并使用之生成elf格式文件,以便烧写。三.实验内容1写一个关于timer0中断的实验,使LED7,LED8可以交替亮2将中断程序进行烧写四.实验代码exportinterrupt_startexportinterrupt_stopareamysection,code,readonlyentryinterrupt_startmrsr0,cpsrbicr0,r0,#0x80msrcpsr_c,r0movpc,lrinterrupt_stopmrsr0,cps
3、rorrr0,r0,#0x80msrcpsr_c,r0movpc,lrEndMain函数主要代码如下:voidinterrupt_init(void);voidinterrupt_start(void);voidinterrupt_stop(void);voidled_init(void);voidtimer_init(void);void__irqtimer_isr(void);intflag=1;#definePCONB*((volatileunsignedint*)0x01D20008)#definePDATB*((volatileunsignedint*)0x01D2000
4、c)#defineTCFG0*((volatileunsignedint*)0x01D50000)#defineTCFG1*((volatileunsignedint*)0x01D50004)#defineTCON*((volatileunsignedint*)0x01D50008)#defineTCNTB0*((volatileunsignedint*)0x01D5000c)#defineTCMPB0*((volatileunsignedint*)0x01D50010)#defineINTCON*((volatileunsignedint*)0x01E00000)#defineI
5、NTPND*((volatileunsignedint*)0x01E00004)#defineINTMOD*((volatileunsignedint*)0x01E00008)#defineINTMSK*((volatileunsignedint*)0x01E0000C)#defineI_ISPR*((volatileunsignedint*)0x01E00020)#defineI_ISPC*((volatileunsignedint*)0x01E00024)#definerSYSCFG(*(volatileunsigned*)0x1c00000)#definerNCACHBE0(
6、*(volatileunsigned*)0x1c00004)#definerNCACHBE1(*(volatileunsigned*)0x1c00008)#defineWRBUFOPT(0x08)#defineSYSCFG_8KB(0x06
7、WRBUFOPT)staticvoidCache_Init(void){rSYSCFG=0xf;//rNCACHBE0=0x20001c00;//rNCACHBE1=0xe0003000;}void__irqtimer_isr(void){if(flag==1){PDATB=(PDATB&~(3<<4))
8、(0x2<<4);}else{PDAT
9、B=(PDATB&~(3<<4))
10、(0x1<<4);}flag=flag^0x1;I_ISPC=1<<13;}voidtimer_init(void){TCFG0=199;TCFG1=3;//1/16TCMPB0=0;TCNTB0=9375;TCON=0x2;TCON=0x9;}voidled_init(void){PCONB=(PCONB&~(3<<4));}voidinterrupt_init(void){interrupt_stop();INTCON=0x5;
此文档下载收益归作者所有