软件环境: ADS1.2
硬件平台: GEC210开发板
运行方法:使用uboot下载到内存0x30008000,然后使用go命令运行,查看效果。
该程序的效果,开始为led全部点亮,然后按照二进制加法的变化,直到所有的灯都熄灭,然后又循环。该程序不会再返回到uboot了,是死循环
4个led通过上拉电阻统一连接到电源正极,led阴极连接到GPJ2io相应的0-3号引脚
所以这4个led都是cpu输出低电平就会点亮,cpu输出高电平led就会熄灭
程序代码如下:
AREA init,code,readonly ;设置段属性,代码段,代码段取名inti,只读属性
entry ;入口,同一个工程不应该出现多个入口
ldr r0,=0xe0200280 ;led对应GPIO的控制寄存器
ldr r1,=0x1111 ;配置为输出模式
str r1,[r0] ;配置对应引脚为输出模式
loop0
mov r1,#0x0
loop
strb r1,[r0,#4]
add r1,r1,#1
bl delay
cmp r1,#0xf
bne loop
b loop0
mov pc,lr ;如果是uboot中使用go命令的话,那么就是跳回到uboot中
;不适用与本程序,因为前面是死循环。
;延时函数,就是让cpu做一些与led无关的事情,比如减法。
delay
mov r2,#0xff00000
delay1
subs r2,r2,#1
bne delay1
mov pc,lr ;直到减为0,delay函数才会返回
end
备注:如果使用linux的arm-linux-gcc编译的话,注意一些使用的差异。