<返回更多

编写C程序控制LED

2020-07-28    
加入收藏

C语言的指针操作:

①所有的变量在内存中都有一块区域;

②可以通过变量/指针操作内存;

编写C程序控制LED

 

TYPE *p = val1;

*p = val2;

把val2写入地址val1的内存中,写入sizeof(TYPE)字节;

TYPE *p = addr;

*p = val;

把val写入地址addrd的内存,,写入sizeof(TYPE)字节;

a. 我们写出了main函数, 谁来调用它?

b. main函数中变量保存在内存中, 这个内存地址是多少?

答: 我们还需要写一个汇编代码, 给main函数设置内存, 调用main函数

led.c源码:

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

    /*配置GPF4为输出引脚*/
    *pGPFCON = 0x100;

    /*配置GPF4输出0*/
    *pGPFDAT = 0;

    return 0;
}

start.S源码:

.text
.global _start
_start:
    /*设置内存:sp栈*/
    ldr sp,=4096 /*nand启动*/
//  ldr sp, =0x40000000 /*nor启动*/

    /*调用main*/
    bl main
halt:
    b halt

Makefile源码:

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

最后将上面三个文件放入Ubuntu主机编译,然后烧写到开发板即可。

 

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>