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

📄 led.c

📁 eCos/RedBoot for勤研ARM AnywhereII(4510) 含全部源代码
💻 C
字号:
#include "typDef.h"
#include "s3c4510b.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 + -