主机环境:WindowsXP+EmbestIED(深圳英蓓特公司提供)
开发板环境:EdukitIII实验箱+s3c2410子板
问题描述:在没有LINUX操作系统的情况下,编写程序点亮实验箱上的LED灯,点亮顺序如下:先把4个LED灯全部熄灭,然后依次点亮4个LED灯,最后把4个LED灯全部点亮,用ARM汇编和C程序两种方式实现
【1.硬件原理】
图1 LED硬件连接图
如图1所示,LED硬件连接图(参考ARM9实验基础教程),4个LED灯分别和GPF4-7连接,首先应该把GPF4-7设置为输出功能,当GPF4-7输出为1时,相应的LED灯熄灭,当GPF4-7输出为0时,相应的LED灯点亮
图2 GPF各寄存器地址
通过查询s3c2410硬件手册(um_s3c2410_manual_r10.pdf),可以知道,GPF各寄存器的地址如图2所示,这里只用到F端口的控制寄存器GPFCON和F端口的数据寄存器GPFDAT,首先应该把GPF4-7设置为输出功能,通过查询GPFCON各位的功能,就可以得知如何设置,见图3(um_s3c2410_manual_r10.pdf)
图3 GPFCON各位含义
由图3,查询GFPCON各位的含义得知,如果要把GFP4-7设置为输出(Output),那么GPFCON的[15:8]=01010101,转换成32位的16进制就是0x00005500。
图4 GPFDAT各位含义
由图4(um_s3c2410_manual_r10.pdf)可知,如果想让GPF4-7输出0或1,那么就直接把0或1写入GPFDAT[7:4],这样与之相应的LED灯就点亮或熄灭。
【2.ARM汇编程序实现】
@****************************************************************************** @Name: ledtestarm.s @Desc: led灯全灭,然后依次点亮4个LED灯,最后把4个LED灯全部点亮 @Parameter: @Return: @Author: yoyoba(stuyou@126.com) @Date: 2011-5-7 @Modify: 2011-5-7 @******************************************************************************* .text |