码迷,mamicode.com
首页 > 系统相关 > 详细

嵌入式Linux学习入门:控制LED灯

时间:2016-03-07 18:50:58      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:

记录自己linux学习过程,让自己能够一直坚持下去

 

1、原理图分析:

    技术分享 

nLED_1, nLED_2, nLED_4, 给低电平则对应LED灯亮,高电平则对应LED灯灭,

 

技术分享

 

S3C2440芯片GPF4-GPF6对应nLED_1, nLED_2, nLED_4,

所以代码里面操作GPF4-GPF6就可以控制LED灯亮灭。

2、写代码前了解事项

     技术分享

       第一步:将GPF0-GPF4配置为输出功能  

       第二步:控制GPF0-GPF4输出低电平

3、编写代码

 1 .text
 2 .global _start
 3 _start:
 4             ldr     r0, =0x53000000     @ WATCHDOG寄存器地址
 5             mov     r1, #0x0                     
 6             str       r1, [r0]            @ 写入0,禁止WATCHDOG,否则CPU会不断重启
 7             
 8             ldr     sp, =1024*4         @ 设置堆栈,注意:不能大于4k, 因为现在可用的内存只有4K
 9                                         @ nand flash中的代码在复位后会移到内部ram中,此ram只有4K
10             bl      main                @ 调用C程序中的main函数
11 halt_loop:
12             b       halt_loop

     参考韦东山视频模仿写的汇编部分,主要是为调用C语言程序,准备条件

 1 #define    GPFCON        (*(volatile unsigned long *)0x56000050)
 2 #define    GPFDAT        (*(volatile unsigned long *)0x56000054)
 3 
 4 
 5 int main(void)
 6 {
 7     unsigned long i = 0;
 8 
 9     GPFCON = 0x00001500;    //将GPF4 GPF5 GPF6设置为输出
10 
11     while(1)
12     {
13 
14         GPFDAT = 0x00000060;      //控制GPF4输出低电平,LED1亮
15         for(i=0; i<30000; i++);   //延时
16 
17         GPFDAT = 0x00000050;      //控制GPF5输出低电平,LED2亮
18         for(i=0; i<30000; i++); 
19 
20         GPFDAT = 0x00000030;      //控制GPF6输出低电平,LED4亮
21         for(i=0; i<30000; i++);
22     }
23     
24     return 0;
25 }

4、编译代码,烧录执行

在linux环境下使用GCC编译,同样跟着视频学习写了Makefile

led_test:main.c start.S 
  arm-linux-gcc -c start.S -o start.o
  arm-linux-gcc -c main.c -o main.o
  arm-linux-ld -Ttext 0x0000000 start.o main.o -o LED_TEST_ELF
  arm-linux-objcopy -O binary -S LED_TEST_ELF led_test.bin
  arm-linux-objdump -D -m arm LED_TEST_ELF > LED_TEST.dis
clean:
  rm -f *.o led_test.bin LED_TEST_ELF LED_TEST.dis

 

将生成的led_test.bin烧录到板子中,观察现象,按照预期流水灯走起来了!

 

     

 

嵌入式Linux学习入门:控制LED灯

标签:

原文地址:http://www.cnblogs.com/jianli/p/5230764.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!