发布时间 : 星期一 文章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 -