⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 leddrv.c

📁 ucos移植在S3C44BOX上的源码
💻 C
字号:
/***********************************************************************************************************
*
* 作者: 胡翌博,浙江大学信电系电路与系统2001研
*
* 文件名:ledDrv.h 
*
* 版本: 1.1
*
* 功能描述:该文件提供LED灯的驱动程序。
*
* 被本文件引用的文件列表:s3c4510bDef.h, typDef.h
*
* 引用本文件的文件列表:no
*
* 版本更迭:
*         日期         版本号      作者      备注
*      07-15-2003       1.0       胡翌博     --实验成功
*      07-27-2003       1.1       胡翌博     --s3c4510b.h更名为s3c4510bDef.h,修改相应的include语句
*                                            --led.c更名为ledDrv.c
**************************************************************************************************/



#include "typDef.h"
#include "s3c4510bDef.h"



/**************************************************************************************************
* 函数名称:       delayMs()
* 函数功能:       ms级延时.
* 入口参数:       counter    需要延时多少个ms.
* 返 回 值:       无.
* 备    注:       这个时间只是一个大约时间.
**************************************************************************************************/
void delayMs(UINT32 counter)
{
    UINT32  i;
    
    while(counter--)
    {
        i = 400;          //1ms延时基数.
        while(i--)    
            ;
    }       
}



/**************************************************************************************************
函数名称:       ledAllOn()
函数功能:       点亮GPIO上的所有LED.
入口参数:       无.
返 回 值:       无.
备    注:       
**************************************************************************************************/
void ledAllOn(void)
{	    
 	*(UINT32 *)ARM_IOPMOD  |= 0xff;              //设置GPIO全为输出方式.
	*(UINT32 *)ARM_IOPDATA &= ~0xff;             //点亮GPIO上的所有LED.
}



/**************************************************************************************************
函数名称:       ledAllOff()
函数功能:       灭掉GPIO上的所有LED.
入口参数:       无.
返 回 值:       无.
备    注:       
***************************************************************************************************/
void ledAllOff(void)
{	    
 	*(UINT32 *)ARM_IOPMOD  |= 0xff;              //设置GPIO全为输出方式.
	*(UINT32 *)ARM_IOPDATA |= 0xff;             //灭掉GPIO上的所有LED.
}



/**************************************************************************************************
函数名称:       ledRun()
函数功能:       以跑马灯的方式循环点亮GPIO上的LED.
入口参数:       counter    循环所有灯的次数.
返 回 值:       无.
备    注:       
**************************************************************************************************/
void ledRun(int counter)
{
 	UINT8  j;
 	
	j = 0;  
 	if(counter <= 0) 	 return;	
	counter = counter*8;	
    while(counter--)
	{
 		*(UINT32 *)ARM_IOPDATA |= 0xff;             //先让led全部熄灭.
		delayMs(200);                               //延时0.2ms.
 		*(UINT32 *)ARM_IOPDATA = ~(0x01<<j);
		delayMs(200);                               //延时0.2ms.
		j++;
		j %= 8;
	}
}



/**************************************************************************************************
函数名称:       ledShine()
函数功能:       根据入口参数点亮指定位置的LED.
入口参数:       number    指定位置的led.(0-7)
返 回 值:       OK        输入值范围正确.
                ERROR     输入值范围不正确.
备    注:       
**************************************************************************************************/
STATUS ledShine(UINT8 number)
{
 	UINT8  i;
 	
 	i = number;
 	if(i > 7)   return ERROR;
 	
 	i = 0x01<<i;
 	*(UINT32 *)ARM_IOPMOD |= i;              //设置GPIO相应位为输出方式.
	*(UINT32 *)ARM_IOPDATA &= ~i;            //点亮该位置处的led.
    return OK;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -