zoukankan      html  css  js  c++  java
  • 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文件 然后就执行了。。。。。。

  • 相关阅读:
    洛谷 P1972 [SDOI2009]HH的项链
    洛谷P1494 BZOJ2038【国家集训队】小Z的袜子
    联合体以及如何调出内存窗口
    利用C语言结构体模拟一个简单的JavaBean
    结构体赋值
    C语言结构体赋值2
    结构体所占内存大小
    C语言结构体的引入
    堆的申请和释放2
    堆的申请和释放
  • 原文地址:https://www.cnblogs.com/hjxzjp/p/8570690.html
Copyright © 2011-2022 走看看