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