2440 裸机学习 点亮LED

萝らか妹 提交于 2020-02-10 02:55:43

1。首先需要知道 led 是受哪一个gpio口控制

从上图可以看出,两个led灯是受GPF4 GPF5控制的,低电平有效。

2、怎么控制GPF4 GPF5

 

通过2440的芯片手册可以看出,需要设置GPF的引脚只需要设置,两个寄存器就可以了。GPFCON  GPFDAT。

  C语言部分:

void delay(volatile int d)//延时函数
{
    while (d--);
}

int led_on(int which)
{
    unsigned int *pGPFCON = (unsigned int *)0x56000050;
    unsigned int *pGPFDAT = (unsigned int *)0x56000054;

    if (which == 4)
    {
        /* 配置GPF4为输出引脚 */
        *pGPFCON = 0x100;
    }
    else if (which == 5)
    {
        /* 配置GPF5为输出引脚 */
        *pGPFCON = 0x400;
    }
    
    /* 设置GPF4/5输出0 */
    *pGPFDAT = 0;

    return 0;
}

汇编代码部分:

.text
.global _start
_start:
ldr sp,=4096
mov r0,#4
bl led_on

ldr r0,=100000
bl delay

mov r0,#5
bl led_on


halt:
 b halt

gcc 交叉编译部分:

all:
    arm-linux-gcc -c -o led.o led.c //编译led.c
    arm-linux-gcc -c -o start.o start.S//编译strat.s
    arm-linux-ld -Ttext 0 start.o led.o -o led.elf//链接 两个文件
    arm-linux-objcopy -O binary -S led.elf led.bin//生成bin文件
    arm-linux-objdump -D led.elf > led.dis//生成反汇编文件
clean:
    rm *.bin *.o *.elf *.dis

通过上面三个文件就可以生成 一个.bin文件 然后就执行了。。。。。。

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!