📄 rd_useled_flash_ctr.c
字号:
/***********************************************************
* 函数库说明:LED闪烁控制函数库 *
* 版本: v1.00 *
* 作者: 王卓然 *
* 创建日期: 2007年4月4日 *
* -------------------------------------------------------- *
* [支 持 库] *
* 支持库名称:LIB_Config.h *
* 需要版本: ----- *
* 支持库说明:库函数配置声明库 *
* *
* 支持库名称:RD_MacroAndConst.h *
* 需要版本: v0.01 &abv *
* 支持库说明:系统常用宏定义库 *
* *
* 支持库名称:RD_UseLED_Flash_CTR.h *
* 需要版本: ----- *
* 支持库说明:LED闪烁控制函数声明库 *
* -------------------------------------------------------- *
* [版本更新] *
* 修改: *
* -------------------------------------------------------- *
* [版本历史] *
* -------------------------------------------------------- *
* [使用说明] *
***********************************************************/
/********************
* 头 文 件 配 置 区 *
********************/
# include "LIB_Config.h"
# include "RD_MacroAndConst.h"
# include "RD_UseLED_Flash_CTR.h"
/********************
* 系 统 宏 定 义 *
********************/
/*------------------*
* 常 数 宏 定 义 *
*------------------*/
#ifndef LED_FCTR_LED_COUNT
# error Need for the number of the LEDs: LED_FCTR_LED_COUNT
#endif
#ifndef LED_PORT_START
# error Need for the start pin number of LEDs: LED_PORT_START
#endif
#ifndef LED_PORT
# error Need for the port name of the LEDs: LED_PORT
#endif
/*------------------*
* 动 作 宏 定 义 *
*------------------*/
#ifndef SYS_TIMER_MS_ADD_UNTILL_OVF
#error Need for SYS_TIMER_MS_ADD_UNTILL_OVF !
#else
extern uint16 SYS_TIMER_MS_ADD_UNTILL_OVF;
#endif
/********************
* 用户变量类型定义 *
********************/
/********************
* 结构体定义区 *
********************/
/********************
* 模块函数声明区 *
********************/
/********************
* 全局函数声明区 *
********************/
void LED_Flash_Control_INIT(void);
BOOL LED_Flash_Control_Refresh(void);
/********************
* 模块变量声明区 *
********************/
/********************
* 全局变量声明区 *
********************/
uint8 g_cLEDs[LED_FCTR_LED_COUNT];
/***********************************************************
* 函数说明:LED闪烁控制初始化函数 *
* 输入: 无 *
* 输出: 无 *
* 调用函数:无 *
***********************************************************/
void LED_Flash_Control_INIT(void)
{
uint8 n = 0;
for (n = 0;n < UBOUND(g_cLEDs);n++)
{
g_cLEDs[n] = LED_OFF;
LED_PORT |= BIT(LED_PORT_START+n);
}
}
/***********************************************************
* 函数说明:LED闪烁刷新函数 *
* 输入: 无 *
* 输出: 是否继续执行 *
* 调用函数:无 *
***********************************************************/
BOOL LED_Flash_Control_Refresh(void)
{
static uint8 n = 0;
switch(g_cLEDs[n])
{
case LED_ON:
#ifdef _LED_FLASH_CTR_ANODE
LED_PORT |= BIT(LED_PORT_START+n);
#else
LED_PORT &= ~BIT(LED_PORT_START+n);
#endif
break;
case LED_FLASH_VERY_SLOW:
if ((SYS_TIMER_MS_ADD_UNTILL_OVF & 0x07ff) > 0x03ff)
{
LED_PORT |= BIT(LED_PORT_START+n);
}
else
{
LED_PORT &= ~BIT(LED_PORT_START+n);
}
break;
case LED_FLASH_SLOW:
if ((SYS_TIMER_MS_ADD_UNTILL_OVF & 0x03ff) > 0x01ff)
{
LED_PORT |= BIT(LED_PORT_START+n);
}
else
{
LED_PORT &= ~BIT(LED_PORT_START+n);
}
break;
case LED_FLASH:
if ((SYS_TIMER_MS_ADD_UNTILL_OVF & 0x01ff) > 0x00ff)
{
LED_PORT |= BIT(LED_PORT_START+n);
}
else
{
LED_PORT &= ~BIT(LED_PORT_START+n);
}
break;
case LED_FLASH_FAST:
if ((SYS_TIMER_MS_ADD_UNTILL_OVF & 0x00ff) > 0x007f)
{
LED_PORT |= BIT(LED_PORT_START+n);
}
else
{
LED_PORT &= ~BIT(LED_PORT_START+n);
}
break;
case LED_FLASH_VERY_FAST:
if ((SYS_TIMER_MS_ADD_UNTILL_OVF & 0x003f) > 0x001f)
{
LED_PORT |= BIT(LED_PORT_START+n);
}
else
{
LED_PORT &= ~BIT(LED_PORT_START+n);
}
break;
case LED_OFF:
default:
#ifdef _LED_FLASH_CTR_ANODE
LED_PORT &= ~BIT(LED_PORT_START+n);
#else
LED_PORT |= BIT(LED_PORT_START+n);
#endif
break;
}
n++;
if (n == LED_FCTR_LED_COUNT)
{
n = 0;
return FALSE;
}
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -