更新时间:2021-07-08 GMT+08:00
编程实例
实例描述
在下面的例子中,演示如下功能:
- 软件定时器创建、启动、停止、删除操作。
- 单次软件定时器,周期软件定时器使用方法。
编程示例
前提条件:在menuconfig菜单中完成软件定时器的配置。
代码实现如下:
UINT32 g_timerCount1 = 0;
UINT32 g_timerCount2 = 0;
VOID Timer1_CallBack(UINT32 arg)
{
UINT64 lastTick;
g_timerCount1++;
lastTick=(UINT32)LOS_TickCountGet();
dprintf("g_timerCount1=%d\n", g_timerCount1);
dprintf("tick_last1=%d\n", lastTick);
}
VOID Timer2_CallBack(UINT32 arg)
{
UINT64 lastTick;
lastTick=(UINT32)LOS_TickCountGet();
g_timerCount2++;
dprintf("g_timerCount2=%d\n", g_timerCount2);
dprintf("tick_last2=%d\n", lastTick);
}
VOID Timer_example(VOID)
{
UINT16 id1; // Timer1 id
UINT16 id2; // Timer2 id
UINT32 tick;
LOS_SwtmrCreate(1000, LOS_SWTMR_MODE_ONCE, Timer1_CallBack, &id1, 1);
LOS_SwtmrCreate(100, LOS_SWTMR_MODE_PERIOD, Timer2_CallBack, &id2, 1);
dprintf("create Timer1 success\n");
LOS_SwtmrStart(id1);
dprintf("start Timer1 sucess\n");
LOS_TaskDelay(200);
LOS_SwtmrTimeGet(id1, &tick);
dprintf("tick =%d\n", tick);
LOS_SwtmrStop(id1);
dprintf("stop Timer1 sucess\n");
LOS_SwtmrStart(id1);
LOS_TaskDelay(1000);
LOS_SwtmrDelete(id1);
dprintf("delete Timer1 sucess\n");
LOS_SwtmrStart(id2);
dprintf("start Timer2\n");
LOS_TaskDelay(1000);
LOS_SwtmrStop(id2);
LOS_SwtmrDelete(id2);
}
结果验证
得到的结果为:
Create Timer1 success start Timer1 sucess tick =800 Stop Timer1 sucess g_timerCount1=1201 tick_last1=1201 delete Timer1 success Start Timer2 g_timerCount2=1 tick_last2=1301 g_timerCount2=2 tick_last2=1401 g_timerCount2=3 tick_last2=1501 g_timerCount2=4 tick_last2=1601 g_timerCount2=5 tick_last2=1701 g_timerCount2=6 tick_last2=1801 g_timerCount2=7 tick_last2=1901 g_timerCount2=8 tick_last2=2001 g_timerCount2=9 tick_last2=2101 g_timerCount2=10 tick_last2=2201
完整实例代码
父主题: 软件定时器