本帖最后由 流年丶 于 2019-7-7 20:52 编辑
游客,如果您要查看本帖隐藏内容请
回复
用了几年的前后台程序框架,稳定可靠,保证每次执行的任务都为最高优先级任务,楼下会对该程序框架做一些说明。
按键状态机:支持短按,长按,双击处理,程序简洁,简单易懂。
LED状态机:支持各个频率的LED闪烁,常亮,常暗操作。
注:该程序是从 基于2G通讯项目中截取下来的两个模块,项目源码不好分享,有兴趣可以加我Q
:842936992。
//本程序只供学习使用,未经作者许可,不得用于其它任何用途
//引用请注明出处,有问题可在本帖中提出讨论,也可加我Q一起交流探讨
。
Function name : APP_LED_Config
Description: APP LED模块配置函数,通过调用该函数来操作LED实现各种功能
Input: LedId->LED的编号
OpMode->操作模式APP_LED_OFF/APP_LED_ON/APP_LED_FLASH;
ulTimeOut->当OpMode选择APP_LED_ON时,亮灯的时间;
usPeriod->当OpMode选择APP_LED_FLASH时,闪烁的周期;
ucTime->当OpMode选择APP_LED_FLASH时,闪烁的次数;
Return: NONE
Notes: ¸该函数已使用宏定义重构,详情使用请查看APP_LED.H文档
******************************************************************************/
void APP_LED_Config(U8 LedId, U8 OpMode, U32 ulTimeOut, U16 usPeriod, U8 ucTime)
{
U8 HWOpMode;
if(LedId >= LED_MAX)
{
return;
}
HWOpMode = LED_OFF;
memset((U8*)&s_AppLedTB[LedId], 0, sizeof(APP_LED_TB));
s_AppLedTB[LedId].OpMode = OpMode;
if(APP_LED_FLASH == OpMode)
{
s_AppLedTB[LedId].usPeriod = usPeriod;
s_AppLedTB[LedId].usDelayCnt = usPeriod;
s_AppLedTB[LedId].ucTime = ucTime * 2 - 1;
HWOpMode = LED_TOGGLE;
s_AppLedTB[LedId].HWState = LED_ON;
}
else
{
s_AppLedTB[LedId].ulTimeOut = ulTimeOut;
s_AppLedTB[LedId].ulTimeCnt = ulTimeOut;
if(APP_LED_ON == OpMode)
{
HWOpMode = LED_ON;
s_AppLedTB[LedId].HWState = LED_ON;
}
}
BSP_LED_Operate(LedId, HWOpMode);
}
一周热门 更多>