arm电子相册项目——led模块篇led.c

原创 2016年08月31日 11:30:59

《arm电子相册项目——led模块篇led.c》

 

工具:keil4 , arm开发板(Mini2451)(s3c2451) , 串口线

功能:显示照片(自动切换 / 手动切换 / 暂停切换 / 可设置)

            显示时钟(精确显示 / 可设置)

进度:第3篇——led.c(led灯)

描述:拿到开发板的第一个程序,就是如何点亮一个led->点亮所有的led->led流水灯

            本篇会从点亮一个led程序开始,一直讲到如何在arm电子相册中应用led不断闪烁

;/*****************************************************
;Author:Ivan    Version:0.1    Date: 
;File name:startup.s
;Description:启动代码
;*****************************************************/
    AREA Init , CODE , READONLY	    ;定义一代码段,只读
    ENTRY    ;入口
	
start	
    ldr r0,=0x53000000
    ldr r1,=0x0
    str r1,[r0]    ;在0x53000000地址中放入0的值
	
	IMPORT Main    ;声明,汇编中可以调用main函数
	
	bl Main    ;跳转到main
	
	EXPORT delay    ;声明,c函数中可以调用汇编delay
	
delay
	ldr r0,=0x1000000    ;赋初值(若c函数中delay(2000000),则初值变为0x2000000)
delay_loop
	cmp r0,#0    ;是否==0
	sub r0,r0,#1    ;r0--
	bne delay_loop    ;b=跳转,n=不,e=相等,若前面cmp比较不相等就跳转,继续循环
	mov pc,lr    ;回到之前的位置

END	

/*****************************************************
Author:Ivan    Version:0.1    Date: 
File name:led.h
Description:led相关寄存器地址
*****************************************************/
#ifndef LED_H_
#define LED_H_
//GPA25,26端口 / GPB5,6端口分别控制Mini2451上的4个led,所以要对这几个端口相关的寄存器初始化
#define GPACON (*(volatile unsigned long *)0x56000000)
#define GPADAT (*(volatile unsigned long *)0x56000004)
#define GPBCON (*(volatile unsigned long *)0x56000010)
#define GPBDAT (*(volatile unsigned long *)0x56000014)
#define GPBSEL (*(volatile unsigned long *)0x5600001C)
extern void led_init(void);
#endif

/*****************************************************
Author:Ivan    Version:0.1    Date: 
File name:led.c
Description:led模块初始化
*****************************************************/
#include "led.c"

void led_init(void)
{
	GPACON &= ~(0x3<<25);    //将GPA25,GPA26设置为output模式
	GPBCON = (0x5<<10);    //将GPB5,GPB6设置为output模式
	GPBSEL = 0x0;    //将GPBSEL设置为0(有GPB6相关位)
}

/*****************************************************
Author:Ivan    Version:0.1    Date: 
File name:main.h
Description:将多个头文件整合方便调用
*****************************************************/
#ifndef MAIN_H_
#define MAIN_H_
#include "led.h"
#endif

/*****************************************************
Author:Ivan    Version:0.1    Date: 
File name:main.c
Description:主函数(用按键点亮一盏led)
*****************************************************/
#include "main.h"

extern void delay(unsigned int t);    //声明,可以使用汇编delay

void Main()
{
	while(1)
	{
		GPADAT &= ~(0x1<<25);    //只开启GPA25号led
        delay(0x1000000);
        GPADAT |= (0x1<<25);    //只关闭GPA25号led
        delay(0x1000000);
	}
}

上面是一段完整的代码,功能是点亮一个led灯,想要开启 / 关闭其他部分的led,只需将该端口的数据位置0 / 1就行。

	GPACON &= ~(0x3<<25);    //将GPA25,GPA26设置为output模式
	GPBCON = (0x5<<10);    //将GPB5,GPB6设置为output模式
	GPBSEL = 0x0;    //将GPBSEL设置为0(有GPB6相关位)
			
	while(1)
	{
		GPADAT &= ~(0x1<<25);    //只开启GPA25号led
        delay(0x1000000);
        GPADAT |= (0x1<<25);    //只关闭GPA25号led
        delay(0x1000000);
        GPADAT &= ~(0x1<<26);    //GPA26号led
        delay(0x1000000);
        GPADAT |= (0x1<<26);   
        delay(0x1000000);
        GPBDAT &= ~(0x1<<5);    //GPB5号led
        delay(0x1000000);
        GPBDAT |= (0x1<<5);    
        delay(0x1000000);
        GPBDAT &= ~(0x1<<6);    //GPB6号led
        delay(0x1000000);
        GPBDAT |= (0x1<<6);    
        delay(0x1000000);
	}

上面是一段流水灯代码。

	GPACON &= ~(0x3<<25);    //将GPA25,GPA26设置为output模式
	GPBCON = (0x5<<10);    //将GPB5,GPB6设置为output模式
	GPBSEL = 0x0;    //将GPBSEL设置为0(有GPB6相关位)
	
	while(1)
	{
		GPADAT = 0x0;
		GPBDAT = 0x0;
		delay(0x100000);
		GPADAT = 0xffffffff;
		GPBDAT = 0xffffffff;
		delay(0x100000);
	}

arm电子相册中,led灯闪烁,表示机器正常运行





版权声明:本文为博主原创文章,未经博主允许不得转载。

基于arm的电子相册

  • 2016年09月14日 14:48
  • 9.29MB
  • 下载

arm电子相册项目——按键模块篇led.c

《arm电子相册项目——按键模块篇led.c》   工具:keil4 , arm开发板(Mini2451)(s3c2451) , 串口线 功能:显示照片(自动切换 / 手动切换 / 暂停切换 /...
  • Ivan804638781
  • Ivan804638781
  • 2016年08月31日 16:51
  • 532

arm电子相册项目——主函数篇main.c

《arm电子相册项目——主函数篇main.c》   工具:keil4 , arm开发板(Mini2451)(s3c2451) , 串口线 功能:显示照片(自动切换 / 手动切换 / 暂停切换 /...
  • Ivan804638781
  • Ivan804638781
  • 2016年08月30日 19:29
  • 800

arm电子相册项目——串口模块篇uart.c

《arm电子相册项目——串口模块篇uart.c》   工具:keil4 , arm开发板(Mini2451)(s3c2451) , 串口线 功能:显示照片(自动切换 / 手动切换 / 暂停切换 ...
  • Ivan804638781
  • Ivan804638781
  • 2016年09月05日 14:39
  • 342

Python编程:制作电子相册

Python编程:制作电子相册本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境:主机:WIN10python版本:3.5开发环境:pyCharm 5...
  • jdh99
  • jdh99
  • 2016年07月31日 20:33
  • 2427

ARM裸机程序开发——按键控制LED灯

★TQ2440硬件连接 ★程序启动初始化 ★IO控制端口
  • XGsilence
  • XGsilence
  • 2016年04月01日 13:55
  • 1384

基于ARM_contexA9 led驱动编程

关于友善之臂出的这款contexA9开发板,目前在网络上的资源较少,特别是内核的,非常之少,鉴于这种情况,我将会写一个系列的驱动来做关于tiny4412这款板子开发的总结。      简单介绍一下: ...
  • morixinguan
  • morixinguan
  • 2016年02月01日 18:18
  • 2356

ARM裸板程序的开发和编译(以点亮LED灯为例)

制作好交叉编译工具链后,怎么确定是否有效呢,当然是编译一个程序烧写到板上跑一下了。这里我们以点亮LED灯为例描述如何使用我们制作的交叉编译工具链编译裸板程序。 首先,需要了解下Nor flash,Na...
  • huangbin0709
  • huangbin0709
  • 2016年07月17日 11:09
  • 1605

ARM底层学习笔记-裸板实验程序解析-点亮LED

通过简单的裸板实验程序的书写,分析和学习嵌入式开发底层操作,以深入理解嵌入式系统及其开发...
  • eric41050808
  • eric41050808
  • 2013年12月15日 19:07
  • 3320

FriendlyARM Tiny210开发板硬件基础 第一篇--点亮LED

**硬件平台:FriendlyARM Tiny210 **编译环境:ubuntu12.04 **编译器:arm-linux-gcc 4.6 我们要做的就是用ARM汇编,实现一个简单的LED流水灯...
  • programe_r
  • programe_r
  • 2015年11月11日 21:15
  • 503
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:arm电子相册项目——led模块篇led.c
举报原因:
原因补充:

(最多只允许输入30个字)