zoukankan      html  css  js  c++  java
  • TQ210裸机编程(2)——LED流水灯

    两个文件start.S和led.c

    start.S

    .global _start                @声明一个全局的标号
    _start:
        bl main                    @跳转到C函数去执行
    halt:
        b halt                    @死循环


    led.c

    #define GPC0CON        *((volatile unsigned int *)0xE0200060)
    #define GPC0DAT        *((volatile unsigned int *)0xE0200064)

    void delay(volatile unsigned int t)
    {
        volatile unsigned int t2 = 0xFFFF;
        while (t--)
            for (; t2; t2--);
    }

    int main()
    {
        int toggle = 0;
        GPC0CON &= ~(0xFF << 12);
        GPC0CON |= 0x11 << 12;    // 配置GPC0_3和GPC0_4为输出
        
        while (1)
        {
            GPC0DAT &= ~(0x3 << 3);        // 熄灭LED1和LED2
            
            if (toggle)
                GPC0DAT |= 1 << 3;        // 点亮LED1
            else
                GPC0DAT |= 1 << 4;        // 点亮LED2
            
            toggle = !toggle;
            delay(0x50000);
        }
        
        return 0;
    }


    Makefile

    led.bin: start.o led.o
        arm-linux-ld -Ttext 0x20000000 -o led.elf $^
        arm-linux-objcopy -O binary led.elf $@
        arm-linux-objdump -D led.elf > led.dis
        
    led.o : led.c
        arm-linux-gcc -c $< -o $@
    start.o : start.S
        arm-linux-gcc -c $< -o $@
        
    clean:
        rm *.o *.elf *.bin *.dis

  • 相关阅读:
    文件打开的几种访问模式
    数据分析师简介
    python数据处理----常用数据文件的处理
    markdown使用方法介绍
    gdb调试常用方法介绍
    [OPEN CV] 常用视频操作方法
    [转载]C++中四种强制类型转换方式
    python 定时服务模块
    pymysql安装和使用
    VS2019开发Qt程序中文乱码
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3367852.html
Copyright © 2011-2022 走看看