s3c2440之点亮led

发布者:legend8最新更新时间:2024-07-19 来源: cnblogs关键字:s3c2440  点亮led 手机看文章 扫描二维码
随时随地手机看文章

原理是操作led 与 CPU 相连管脚的GPIO,具体操作哪个GPIO,需要查看原理图。将对应GPIO配置为输出模式,并设置GPIO的对应位为低电平即可点亮led,相反,设置对应位为高电平则熄灭led

以韦东山的JZ2440为例,原理图:

可以看出3个led分别对应GPF4,GPF5,GPF6设置为输出状态,查看芯片手册:

 

 

得知GPFCON寄存器地址为 0x56000050,GPFDAT寄存器地址为 0x56000054,GPF4,GP5,GPF6 的对应配置分别为8-9,10-12,12-13位,需要将这连续的6位设置为010101 即可配置设置GPF4-6为输出模式,然后控制 GPFDAT 4-6 位,0点亮,1熄灭。

代码如下,汇编:

 1 .global _start

 2 

 3 _start:

 4     // 关闭看门狗

 5     ldr r0, =0x53000000

 6     ldr r1, =0

 7     str r1, [r0]

 8   //初始化栈

 9     mov sp,#4096


10     bl main 


c代码:


  1 #define GPFCON  (*(volatile unsigned int *) 0x56000050)

  2 #define GPFDAT  (*(volatile unsigned int *) 0x56000054)

  3 

  4 

  5 void delay()

  6 {

  7     volatile int d = 100000;

  8     while(d--);

  9 }

 10 

 11 void led_all_off()

 12 {

 13     GPFDAT |= (7 << 4); 

 14 }

 15 

 16 void led_all_on()

 17 {

 18     

 19     GPFDAT &= ~(7 << 4);

 20 }

 21 

 22 

 23 void led_light_one(int index)

 24 {

 25     GPFDAT &= ~(1 << (4 + index));

 26 }

 27 

 28 void led_off_one(int index)

 29 {

 30     GPFDAT |= (1 << (4 + index));

 31 }

 32 

 33 void config_gpio()

 34 {

 35     //清0

 36     GPFCON    &= ~ ((3 << 8) | (3 << 10)    | (3 << 12));

 37     //设置1

 38     GPFCON    |= ((1 << 8) | (1    << 10)    | (1 << 12));

 39 }

 40 

 41 void horse_left()

 42 {

 43     int i;

 44     for(i =0; i < 3;i ++)

 45     {

 46         led_light_one(i);

 47         delay();

 48         led_off_one(i);

 49         

 50     }

 51 }

 52 

 53 void horse_right()

 54 {

 55     int i;

 56     for(i =3; i >= 0;i --)

 57     {

 58         led_light_one(i);

 59         delay();

 60         led_off_one(i);

 61     }

 62 }

 63 

 64 void horse_race()

 65 {

 66     int i;

 67     for(i =0 ; i < 3;i ++)

 68     {

 69         horse_left();

 70         horse_right();

 71     }

 72 } 

 73 

 74 

 75 void twinkle()

 76 {

 77     int i;

 78     led_all_off();

 79     for(i =0 ; i < 3;i ++)

 80     {

 81         led_all_on();

 82         delay();

 83         led_all_off();

 84         delay();

 85     }

 86 }

 87 

 88 void one_by_one_on()

 89 {

 90     int i;

 91     for(i =0; i < 3;i ++)

 92     {

 93         led_light_one(i);

 94         delay();

 95     }

 96 }

 97 

 98 void one_by_one_off()

 99 {

100     int i;

101     for(i =3; i >= 0;i --)

102     {

103         led_off_one(i);

104         delay();

105     }

106 }

107 void one_by_one()

108 {

109     int i;

110     led_all_off();

111     for(i =0 ; i < 3;i ++)

112     {

113         one_by_one_on();

114         one_by_one_off();

115     }

116 }

117 

118 int main()

119 {

120     config_gpio();

121     while(1)

122     {

123         twinkle();

124         horse_race();

125         one_by_one();

126     }

127     

128     return 0;

129 }


Makefile


all:

arm-linux-gcc -O3 -c -o led.o led.S 

arm-linux-gcc -O3 -c -o main.o main.c

arm-linux-ld -Ttext 0 led.o main.o -o led.elf

arm-linux-objcopy -O binary -S led.elf led.bin 


clean:

rm led.o led.ef led.bin -rf


此代码实现了3个led同时闪烁,流水灯。


关键字:s3c2440  点亮led 引用地址:s3c2440之点亮led

上一篇:s3c2440之cpu提速
下一篇:内存接口概念

推荐阅读最新更新时间:2024-11-08 11:39

s3c2440裸机-LCD编程-5-LCD上实现画点线圆
1.画点 无论是何种图形,都是基于点来构成的,因此我们需要先实现画点,其他的都是上层的一些数据处理了,像各种图形、甚至色彩鲜艳的图片无非都是一些由点构造出的数据而已。 我们在在farmebuffer.c实现画点,在geomentry.c实现画线、画圆等几何图形,font.c实现画字。 那么一个像素点要显示到lcd上,我们要知道它的位置坐标,然后还要知道它的颜色值,假设该像素点的坐标为(x,y),那么该像素的地址为: (x,y)= fb_base + (xres*(bpp/8))*y +x*bpp/8; 那么所以在画点前需要先获取lcd参数:fb_base、xres、yres、bpp; static unsigned
[单片机]
基于S3C2440的能量色散X射线荧光光谱仪
X射线荧光分析是一种快速、准确而又经济的多元素分析方法 。目前,X射线荧光分析技术已被广泛应用于地质、冶金、化工、材料、石油、医疗等领域,尤其是能量色散X射线荧光EDXRF(Energy Dispersive X-Ray Fluorescence)光谱仪,由于具有体积小、价格低廉、自动化程度高等优点,已成为普遍多元素同时分析的有力手段。 EDXRF光谱仪利用X射线荧光对于不同元素具有不同能量的特点,依靠探测器实现对测试样品中元素的定性、定量分析。随着电子学技术、计算机科学技术以及半导体材料的发展,特别是嵌入式技术的应用,为X射线荧光光谱仪智能化、小型化及高性能提供了必要的硬件基础。本文提出了基于S3C2440嵌入式处理器
[单片机]
S3C2440存储器SDRAM控制笔记
最近一年多的时间一直在从事任意轮系机器人运动控制及惯性导航的研究实践,买的开发板闲置了一年多了,决定继续延续一年多前的学习,继续做笔记。 SDRAM读写操作流程 Cpu发出nGCS6信号,选中bank7,对应开发板nSCS引脚,引脚标号19 SDRAM芯片行地址使用13根地址线,列地址复用行地址9根地址线,同时还有两根地址线用于芯片内部逻辑块选择,每个芯片输出16bit数据,由两个芯片并联输出32位到cpu数据总线上,所以内存大小为2^(13+9+2)*4 = 64Mbyte 由于cpu始终以32位的宽度读取SDRAM,所以cpu读SDRAM地址低2位始终为0,所以原理图cpu的地址线addr0和addr1并未接到SDRAM上
[单片机]
s3c2440的UART功能测试
/* 文件名称:UART.c /* 实现功能:最基本的UART发送与接收 /* 作者:无jianqi /* 版本:1.0 #include 2440addr.h //包含2440相关寄存器的设置 #include def.h //四个LED对应GPB5.6.7.8。 #define LED1 5 #define LED2 6 #define LED3 7 #define LED4 8 #define BAUD 115200 //波特率 #define Bit(x) (1《x) //将某位置位 #define Output(x) (1《2*x) //将对应IO置为输出 #
[单片机]
内核移植(2)arch/arm/mach-s3c2440/mach-smdk2440.c
对于s3c2410、s3c2440开发板,它们的CPU Id都是0x41129200,在arch/arm/mm/proc -arm920.S中的_ _arm920_proc_info结构中。 定义开发板参数在arch/arm/mach-s3c2440/mach-smdk2440.c中,如机器类型ID、起始I/O物理地址、Bootloader传入的参数的地址、中断初始化函数等。 arch/arm/kernel/head.S是内核执行的第一个文件。 S3c2440开发板上启动uImage时串口输出乱码的原因,开发板晶振的频率设置有问题。 1、在arch/arm/mach-s3c2440/mac
[单片机]
S3C2440FCLK、HCLK、PCLK的配置
/****************************************************** *说 明: S3C2440FCLK、HCLK、PCLK的配置 ******************************************************/ 三星官方搭载的wince系统的FLCK值为400MHz,HCLK值为100MHz、PCLK值为50MHz。那么这些值通过什么方法计算出来呢?大概过程如下,这些值在外部晶振12MHz的基础上通过PLL的作用倍频到我们需要的核心频率如400MHz,由于该频率过高,需要通过对预分频器进行适当的设置获取外围设备能够正常工作的频率如HCLK 1
[单片机]
S3C2440FCLK、HCLK、PCLK的配置
Boa Web服务器在PC和S3C2440开发板上移植
  boa是一个非常小巧的Web服务器,可执行代码只有约60KB。它是一个单任务Web服务器,只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。但Boa支持CGI,能够为CGI程序fork出一个进程来执行。下面我们讲解以下boa如何在PC机(虚拟机RedHatAS5环境)完成移植修改工作。 一、下载Boa源码 下载地址: http://www.boa.org/或 http://labs.nevion.com/open-source/ 目前最新发行版本:0.94.13(05年更新版本)   下载 boa-0.94.13.tar.gz(注意:若从boa上下载的是boa-0.94.13.tar.tar,解压方式
[单片机]
ARM-Linux s3c2440 之中断分析(三)
Linux通过以下函数来注册中断以及中断相关的入口函数handle,只有先注册IRQ,才能正常使用。 int set_irq_chip(unsigned int irq, structirq_chip *chip) static inline void set_irq_handler(unsigned intirq, irq_flow_handler_t handle) static inline void set_irq_chained_handler(unsignedint irq, irq_flow_handler_t handle) 实现的代码如下: for(irqno = IRQ_E
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved