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

  • 相关阅读:
    JavaScript完整总结
    vue引入iframe的父子页面的数据传递
    随笔开发中笔记
    关于表格(table)的操作
    es6--6.字符串相关
    ES6--5.数组4个新增方法
    ES6--4.解构赋值
    sublime 远程连接服务器编辑
    ajaxSubmit
    修改 debian 时区
  • 原文地址:https://www.cnblogs.com/hjxzjp/p/8570690.html
Copyright © 2011-2022 走看看