软件定时器
开发指导
接口说明
OpenHarmony LiteOS-M内核的软件定时器模块提供下面几种功能,接口详细信息可以查看API参考。
表 1 软件定时器接口
功能分类
|
接口名
|
描述
|
创建、删除定时器
|
LOS_SwtmrCreate
|
创建定时器
|
LOS_SwtmrDelete
|
删除定时器
|
启动、停止定时器
|
LOS_SwtmrStart
|
启动定时器
|
LOS_SwtmrStop
|
停止定时器
|
获得软件定时器剩余Tick数
|
LOS_SwtmrTimeGet
|
获得软件定时器剩余Tick数
|
开发流程
软件定时器的典型开发流程:
-
配置软件定时器。
- 确认配置项LOSCFG_BASE_CORE_SWTMR和LOSCFG_BASE_IPC_QUEUE为1打开状态;
- 配置LOSCFG_BASE_CORE_SWTMR_LIMIT最大支持的软件定时器数;
- 配置OS_SWTMR_HANDLE_QUEUE_SIZE软件定时器队列最大长度;
-
创建定时器LOS_SwtmrCreate。
- 创建一个指定计时时长、指定超时处理函数、指定触发模式的软件定时器;
- 返回函数运行结果,成功或失败;
-
启动定时器LOS_SwtmrStart。
-
获得软件定时器剩余Tick数LOS_SwtmrTimeGet。
-
停止定时器LOS_SwtmrStop。
-
删除定时器LOS_SwtmrDelete。
说明:
- 软件定时器的回调函数中不要做过多操作,不要使用可能引起任务挂起或者阻塞的接口或操作。
- 软件定时器使用了系统的一个队列和一个任务资源,软件定时器任务的优先级设定为0,且不允许修改 。
- 系统可配置的软件定时器资源个数是指:整个系统可使用的软件定时器资源总个数,而并非是用户可使用的软件定时器资源个数。例如:系统软件定时器多占用一个软件定时器资源数,那么用户能使用的软件定时器资源就会减少一个。
- 创建单次软件定时器,该定时器超时执行完回调函数后,系统会自动删除该软件定时器,并回收资源。
- 创建单次不自删除属性的定时器,用户需要调用定时器删除接口删除定时器,回收定时器资源,避免资源泄露。
编程实例
实例描述
在下面的例子中,演示如下功能:
- 软件定时器创建、启动、删除、暂停、重启操作。
- 单次软件定时器,周期软件定时器使用方法。
示例代码
前提条件:
- 在los_config.h中,将LOSCFG_BASE_CORE_SWTMR配置项打开。
- 在los_config.h中,将LOSCFG_BASE_CORE_SWTMR_ALIGN配置项关闭,示例代码中演示代码不涉及定时器对齐。
- 配置好LOSCFG_BASE_CORE_SWTMR_LIMIT最大支持的软件定时器数。
- 配置好OS_SWTMR_HANDLE_QUEUE_SIZE软件定时器队列最大长度。
代码实现如下:
结果验证
编译烧录运行,输出结果如下: