2440 裸机学习 点亮LED

Posted Mr&H

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2440 裸机学习 点亮LED相关的知识,希望对你有一定的参考价值。

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文件 然后就执行了。。。。。。

 

以上是关于2440 裸机学习 点亮LED的主要内容,如果未能解决你的问题,请参考以下文章

02-JZ2440裸机学习之GPIO实验

S3C2440-裸机篇-04 | ARM-THUMB子程序调用规则ATPCS

Mini2440上的第一个程序——点亮Led

s3c2440裸机-异常中断(四. irq之外部中断)

ARM裸机开发:C语言点亮LED

_Embedded-System专栏文章导航与优秀笔记整理(2021.08.08更新)