📄 leddrv.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 + -