arm嵌入式led灯闪烁实验报告_ARM嵌入式系统与应用实验报告

《ARM嵌入式系统与应用实验报告》由会员分享,可在线阅读,更多相关《ARM嵌入式系统与应用实验报告(26页珍藏版)》请在人人文库网上搜索。

1、信息科学与技术系ARM嵌入式系统与应用实验报告专业班级 ____电信0803班__________ 学 号 ____________ 姓 名 ___ ___________ 实验老师 ___ __________ 总 成 绩 _________________________20112012学年(1)实验一 通用 IO 口试验一、实验目的 熟悉ARM 芯片I/O口编程配置方法; 掌握ARM芯片I/O口控制LED显示的方法。 二、实验设备 硬件:嵌入式实验平台一套、仿真器一个、PC 机一台。 软件:Windows 98/2000/NT/XP 操作系统、仿真器驱动程序、ADS 开发软件一套。 三、。

2、实验内容 控制嵌入式实验箱上的LED轮流点亮。 四、实验原理 S3CRRB0X 芯片上共有71 个多功能I/O 引脚,他们分别为7 组I/O 端口:2 个9 位I/O 端口 (端口E 和F) 2 个8 位I/O 端口 (端口D 和G) 1 个16 位I/O 端口 (端口C) 1 个10 位I/O 端口 (端口A ) 1 个11 位I/O 端口 (端口B )每组端口都可以通过软件配置寄存器来满足不同系统合设计的需要。在运行主程序之前,必须先对每一个用到的引脚的功能进行设置。如果某些引脚的附庸功能没有使用,那么可以先将该引脚设置为I/O口。 S3C44B0X芯片与端口相关的寄存器 (1)端口控制寄。

3、存器 (PCONAG):在S3C44B0X 芯片中,大部分引脚是使用多路复用的,所以要确定每个引脚的功能。PCONn(端口控制寄存器)能够定义引脚功能。如果 PG0PG7作为掉电模式下的唤醒信号,那么这些端口必须配置成中断模式。(2)端口数据寄存器 (PDATAG):如果端口定义为输出口,那么输出数据可以写入 PDATn中相应的位;如果端口定义为输入口,那么输入数据可以从PDATn 相应的位中读 入。 (3)端口上拉寄存器 (PUPCG):通过配置端口上拉寄存器,可以使该组端口与上拉 电阻连接或断开。当寄存器中相应位配置为0 时,该引脚接上拉寄存器;当寄存器中相应位 配置为1 时,该引脚不接上。

4、拉电阻。 (4)外部中断寄存器 (EXTINT ):通过不同的信号方式可以使8 个外部中断被请求。 EXTINT 寄存器可以根据外部中断的需求,将中断触发信号配置为低电平触发,高电平触发,下降沿触发,上升沿触发和边沿触发几种方式。 五、实验操作步骤 1启动ADS1.2,使用ARM Execuatable Image 工程模板新建一个工程; 2添加两个组INC 和SRC; 3将INC 文件夹下所有文件添加到组INC 中; 4将SRC 文件夹下所有文件添加到组SRC 中; 5建立源文件test5.C,编写实验程序,添加到工程中; 6编译链接选项的设置同前面实验; 7编译链接工程,点击Debug 按。

5、钮,启动AXD进行调试; 8连续点击step in按钮,单步运行程序,主板上的三个LED灯循环点亮。 9理解并掌握本实验原理及程序,完成练习题 六、实验参考程序 #include option.h #include def.h #include 44b.h #include 44blib.h void Isr_Init(void); void HaltUndef(void); void HaltSwi(void); void HaltPabort(void); void HaltDabort(void); void Main(void) rSYSCFG=SYSCFG_8KB; #if (PLL。

6、ON 1) ChangePllValue(PLL_M,PLL_P,PLL_S); #endif Isr_Init(); 中断初始化 Port_Init(); 端口初始化Uart_Init(0,); 波特率为Uart_Select(0); 选择串口0Delay(0); /calibrate Delay() 延时Led_Display(7); 0111三个灯全亮Delay(1000); /calibrate Delay() Led_Display(0); 三个灯全灭Delay(5000); /calibrate Delay() Led_Display(7); Uart_Printf(n start。

7、 n); 在终端打印startwhile(1) Delay(5000); /calibrate Delay() Led_Display(1); 点亮第一个灯,其他灭Delay(5000); /calibrate Delay() Led_Display(2); 点亮第二个灯,其他灭Delay(5000); /calibrate Delay() Led_Display(4); 点亮第三个灯,其他灭 void Isr_Init(void) U32 i; pISR_UNDEF=(unsigned)HaltUndef; pISR_SWI =(unsigned)HaltSwi; pISR_PABORT=(。

8、unsigned)HaltPabort; pISR_DABORT=(unsigned)HaltDabort; for(i=_RAM_STARTADDRESS;iTp。在程序运行一周期后,修改定时器的计数值,只要程序正常运行,定时器就不会溢出。若由于干扰等原因使系统不能在Tp时刻修改定时器的计数值,定时器将在Ti时刻溢出,引发系统复位,使系统得以重新运行,从而起到监控作用。2.S3C44B0X的看门狗 1) S3C44B0X看门狗的功能S3C44B0X的看门狗定时器有两个功能:(1)定时器功能:可以作为常规定时器使用,它是一个十六位的定时器,并且可以产生中断,中断名为INT_WDT。(2)复位功。

9、能:作为看门狗定时器使用,当时钟计数减为0(超时)时,它将产生一个128个时钟周期的复位信号。2) S3C44B0X看门狗结构与工作原理S3C44B0X ARM7的看门狗主要由五部分构成:时钟、看门狗计时器、看门狗数据寄存器、复位信号发生器、控制逻辑等。图6-1 看门狗定时器的功能框图S3C44B0X看门狗定时利用MCLK作为时钟源,经过8位的预分频和4选1的2位分割之后得到所需频率。预分频值和频率分割值在看门狗定时器控制寄存器WTCON中配置。3) S3C44B0X看门狗定时时间u 预分频器为8位,其值为:0-255u 再分频器可选择值为:16、32、64、128u 输入到计数器的时钟周期为。

10、:T_wtd=1/PCLK/(Prescaler+1)/Division_factoru 看门狗的定时周期为:T=WTDATT_wtd注意:一旦看门狗的定时器启动工作,其数据寄存器(WTDAT)中的值将不会自动读到时间寄存器中间去(WTCNT)。由于这个原因,程序员必须在看门狗计时器启动之前,应该将一个初始值写入到看门狗的时间计数器(WTCNT)中间去。即先对时间计数器系初值,再启动看门狗工作。3. 看门狗专用寄存器共3个,其基地址为0x1D30000。寄存器描 述初值偏移地址WTCON看门狗控制寄存器0x80210WTDAT看门狗数据寄存器0x80004WTCNT看门狗计数寄存器0x8000。

11、81)看门狗控制寄存器(WTCON)RegisterOff AddR/WDescriptionReset ValueWTCON0R/W看门狗控制寄存器0x8021字段名位意 义初值Prescaler Value15:8预分频值。0-255。0x80Reserved7:6保留(为0)00Watchdog Timer5看门狗控制位。0:禁止;1:允许1字段名位意 义初值Clock Select4:3再分频值选择。 00:16;01:32;10:64;11:12800InterruptGeneration2看门狗中断控制。0:禁止; 1:允许。0Reserved1保留(为0)0ResetEnable。

12、0看门狗复位功能控制。0:禁止; 1:允许。12)看门狗数据寄存器(WTDAT)RegisterOff AddR/WDescriptionReset ValueWTDAT4R/W看门狗数据寄存器0x8000说明:(1)该数据寄存器为对看门狗计数器重装计数值。初始值为0x8000。(2)在初始化看门狗操作中,WTDATA 的值不会自动加载到定时计数器中。(3)在计数溢出后,WTDAT的值将被装载到WTCNT 寄存器中。3)看门狗计数寄存器(WTCNT)RegisterOff AddR/WDescriptionReset ValueWTCNT8R/W看门狗计数寄存器0x8000字段名位意 义初值C。

13、ount Value15:0看门狗的当前计数值0x8000说明:在计数中只能读,不能写(写不起作用)。五、实验操作步骤1、新建工程文件2、定义相关各寄存器地址和一些特殊的位地址,编写实验程序,然后添加到工程中去。3、选择project-Debug,启动AXD进行JTAG仿真调试。4、理解并掌握本实验原理及程序,完成思考题。#include option.h#include def.h#include 44b.h#include 44blib.hvoid Isr_Init(void);void HaltUndef(void);void HaltSwi(void);void HaltPabort(void); void HaltDabort(void);void __irq Wdt_Int(void);volatile int isWdtInt;void Main(void)unsigned char *src, *dst;int i;unsigned int memSum;rSYSCFG=SYSCFG_8KB;#if (PLLON=1)ChangePllValue(PLL_M,PLL_P,PLL_S);#endifIsr_Init(); 中断。

你可能感兴趣的:(arm嵌入式led灯闪烁实验报告_ARM嵌入式系统与应用实验报告)