ARM9控制LED流水灯程序设计 联系客服

发布时间 : 星期一 文章ARM9控制LED流水灯程序设计更新完毕开始阅读5a1c5a7f31b765ce05081416

华东交通大学理工学院课程设计报告

据寄存器GPBDAT来实现。下表即为它的功能描述:

设置完前两个寄存器后,还要设置上拉电阻使能寄存器GPBUP,顾名思义,它的作用就是告诉ARM这个端口要不要配置上拉电阻。上拉电阻、下拉电阻的作用在于,当IO引脚处于第三态(即不是高电平,也不是低电平,而是高阻态,相当于没接芯片)时,它的电平状态由上拉电阻、下拉电阻确定。下表为它的功能描述:当为0时,上拉电阻是允许的;反之,则上拉电阻是被禁止的。

GPBUP GPB[10:0] Bit [10:0] Description 0:The pull-up function attached to the corrrespond -ing port pin is enabled. 1:The pull-up function is disabled. 到此,需要的寄存器就配置完成了,那么接下来介绍下LED在开发板上的电路原理图。

- 8 -

华东交通大学理工学院课程设计报告

第4章 课程设计过程

4.1 设计步骤

1.连接好实验环境,将仿真器的一端通过并口连接到PC机,将仿真器的另一端通过JTAG先连接到开发板JTAG接口。

2.将串口线一端接到PC机,另一端接到S3C2440的UART0接口;打开串口超级终端,设置串口属性为COM1,串口波特率(Baudrout)为115200,校验位无,数据位为8,停止位为1,检查连接是否可靠,可靠后,接入电源线,给系统上电,同时按住空格键,进入VIVI状态。

3.打开ADS codeWarrior,在ADS codeWarrior中创建工程编写代码,并对工程进行编译。

4.使用H-JTAG进行调试。

5.打开ARM的开发环境AXD Debugger,在AXD Debugger中加载可执行映像文件LED_TEXT.axf。

6.在ADS调试环境处下,全速运行映像文件,观察LED灯LED1、LED2、LED3、LED4的闪亮情况—轮流闪烁。

4.2部分原理图

图a

- 9 -

华东交通大学理工学院课程设计报告

图b

上图a、b是实验的部分原理图,可以看出我们通过GPB5、GPB6、GPB7、GPB8来分别控制LED1、LED2、LED3、LED4。

4.3源程序:

1.main.c

#define rGPBCON (*(volatile unsigned *))0x56000010) //prot B contorl #define rGPBDAT (*(volatile unsigned *))0x56000010) //prot B data #define rGPBUP (*(volatile unsigned *))0x56000010) //pull-up control B void xmain(void) {

ChangeClockDivider(3,1); //设置时钟分频比1:3:6

ChangeMPllValue(127,2,1); //设置主时钟频405MHZ Port_Init(); //端口初始化 Isr_Init(); //中断初始化 Uart_Init(0, 115200); //串口初始化

Uart_Select(0);

Uart_Printf(\向超级终端打印\

rGPBCON = rGPBCON & (~(0xf<<10)) |( 1<< 10) |(1 << 12);

//将GPB5[11:10] 两位设置为01---即output状态,GPB6[13:12] 两位设置

为01---即output状态

- 10 -

华东交通大学理工学院课程设计报告

rGPBCON = rGPBCON & (~(0xf<<14)) |( 1<< 14) |(1 << 16);

//将GPB7[15:14] 两位设置为01---即output状态,GPB8[17:16] 两位设置

为01---即output状态

rGPBUP = rGPBUP&(~(0xF<<5))|(0xF<<5);

//将GPB5、GPB6、GPB7、GPB8上拉电阻设置为disabled while(1) {

rGPBDAT = (rGPBDAT|(0xF<<5))&(~(0x1<<5)); //点亮LED1 Delay(10000000);//延时

rGPBDAT =( rGPBDAT|(0xF<<5))&(~(0x2<<5)); //点亮LED2 Delay(10000000);// 延时

rGPBDAT = (rGPBDAT|(0xF<<5))&(~(0x4<<5)); //点亮LED3 Delay(10000000);// 延时

rGPBDAT =(rGPBDAT|(0xF<<5))&(~(0x8<<5)); //点亮LED4 Delay(10000000);// 延时

rGPBDAT = (rGPBDAT|(0xF<<5))&(~(0x4<<5)); //点亮LED3 Delay(10000000);// 延时

rGPBDAT =( rGPBDAT|(0xF<<5))&(~(0x2<<5)); //点亮LED2 Delay(10000000);// 延时

rGPBDAT = (rGPBDAT|(0xF<<5))&(~(0x1<<5)); //点亮LED1 Delay(10000000);// 延时 } }

2.2440lib.c

//===================================================================

// File Name : 2440lib.c

// Function : S3C2440 PLL,Uart, LED, Port Init // Date :2011/22/28

- 11 -