设为首页 加入收藏

TOP

LED驱动程序
2014-11-24 11:52:50 来源: 作者: 【 】 浏览:0
Tags:LED 驱动程序

s3c6410有187个GPIO,分为GPA,GPB,GPC .......GPQ 共有17组,每组GPIO(GPA~GPQ),都可以通过5个寄存器来控制。


GPxCON:GPIO配置寄存器


GPxDAT:GPIO数据寄存器


GPxUD:上拉/下拉电阻控制寄存器


GPxCONSLP:GPIO配置寄存器(睡眠模式)


GPxPUDSLP:上拉/下拉电阻控制寄存器(睡眠模式)


(其中x为A~Q)




下面是它的程序分析


/**********************************************************
*实验要求: 用Tiny6410上的4个LED资源实现跑马灯程序。
*功能描述: Tiny6410用下面4个引脚连接了LED发光二极管,分别是
* GPK4--LED1
* GPK5--LED2
* GPK6--LED3
* GPK7--LED4
* 本程序将控制这四个管脚的输出电平,实现跑马灯的效果
*日 期: 2011-3-10
*作 者: 国嵌
**********************************************************/
#include "def.h"
#include "gpio.h"



#define LED1_ON ~(1<<4)
#define LED2_ON ~(1<<5)
#define LED3_ON ~(1<<6)
#define LED4_ON ~(1<<7)



#define LED1_OFF (1<<4)
#define LED2_OFF (1<<5)
#define LED3_OFF (1<<6)
#define LED4_OFF (1<<7)
#define LEDALL_OFF (0xf<<4)



//GPIO
#define GPIO_BASE (0x7F008000)
//oGPIO_REGS类型在 gpio.h 中定义
#define GPIO (( volatile oGPIO_REGS *)GPIO_BASE)



//函数声明
void delay(int times);
void LedPortInit(void);
void LedRun(void);



/*
* 程序入口
* */
int main(void)
{
LedPortInit();
LedRun();
}



/*
* 延时函数
* */
void delay(int times)
{
int i;
for(;times>0;times--)
for(i=0;i<3000;i++);
}



/*
* 初始化连接LED灯的管脚资源
* @ 通过将GPIO_BASE强制转化为(volatile oGPIO_REGS*)型的指针可以很方便
* 的访问各个GPIO寄存器的值,这种方法比通过使用寄存器地址的宏定义访问
* 寄存器单元更加规范和科学。
* */
void LedPortInit(void)
{
u32 uConValue;
uConValue = GPIO->rGPIOKCON0;
uConValue &= ~(0xffff<<16);
uConValue |= 0x1111<<16;
GPIO->rGPIOKCON0 = uConValue;
}



/*
* 跑马灯的实现函数
* @ 通过控制连接LED的管脚的输出电平点亮和熄灭各个LED。
* @ 逐个循环点亮各个LED。在每点亮一个后保持一定时间再熄灭它,接着
* 点亮下一个LED,这样就形成了一个跑马灯的效果。
* @ 这是一个需要改善的跑马灯程序,想想怎么优化这段代码。
* */
void LedRun(void)
{
GPIO->rGPIOKDAT |= LEDALL_OFF;
while(1)
{
GPIO->rGPIOKDAT &= LED1_ON;
delay(1000);
GPIO->rGPIOKDAT |= LEDALL_OFF;



GPIO->rGPIOKDAT &= LED2_ON;
delay(1000);
GPIO->rGPIOKDAT |= LEDALL_OFF;



GPIO->rGPIOKDAT &= LED3_ON;
delay(1000);
GPIO->rGPIOKDAT |= LEDALL_OFF;



GPIO->rGPIOKDAT &= LED4_ON;
delay(1000);
GPIO->rGPIOKDAT |= LEDALL_OFF;
}
}


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android文字显示效果研究 下一篇Linux下的shell与make

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·HyperText Transfer (2025-12-26 07:20:48)
·半小时搞懂 HTTP、HT (2025-12-26 07:20:42)
·CPython是什么?PyPy (2025-12-26 06:50:09)
·Python|如何安装seab (2025-12-26 06:50:06)
·python要学习数据分 (2025-12-26 06:50:03)