使用s3c2440让LED发亮

我用的是扬创的板子,它有4个LED,但是接在哪里,需要通过它的电路图才知道

 

 

我的代码:

.globl _start
_start:
        ldr r0, =0x56000050
        mov r1, #0x00000100
        str r1, [r0]

loop1:

        ldr r0, =0x56000054
        mov r1, #0x00000000  //低电平,使灯亮
        str r1, [r0]

        bl delay

        ldr r1, =0xffffffff       //高电平,使灯灭
        str r1, [r0]

        bl delay

        b loop1

delay:
        ldr r4, =0x1ffff
delay1:
        sub r4, r4, #1
        cmp r4, #0x0
        bne delay1
        mov pc, lr

关键:

1. 找到LED对应的GPIO,请看每块板子的电路图,我发现是GPF4-7(对应4个LED),

2. 使灯灭使用0xffffffff,全1表示高电平,我调试了一会儿才知道。

3. 补充更新:继续调试,发现并不是用所有位进行控制,如果需要让LED4亮,其它熄灭,设置值为0xffffffef,第5位为0,低电平就可以了,如果让LED6,LED7同时亮,设置为0xffffff3f,第7,8位为0就可以了,5,6位为高电平,熄灭。

 

编译:

/opt/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin/arm-softfloat-linux-gnu-gcc -g -c led.S
/opt/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin/arm-softfloat-linux-gnu-ld -g -Ttext 0x00000000 led.o -o led.elf
/opt/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin/arm-softfloat-linux-gnu-objcopy -O binary -S led.elf led.bin

生成led.bin后,使用它提供的SJF2440.exe程序通过并口->Jtag烧进Nand Flash,我想SJF2440可以得到从网上,也许三星的网站也会有。

 

此时,他就像是一个单片机,从0x0的位置执行我的这一段代码,哈哈,我终于明白了单片机的工作原理,当年在学校一直没有学好,本打算再找一本书看看,看来不需要了。现在终于明白了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值