启航KP_IOT主控板软件定时试验
本示例将演示如何在启航KP_IOT开发主板上进行软件定时试验。
概述
软件定时器是基于系统Tick时钟中断且由软件来模拟的定时器,当经过设定的Tick时钟计数值后会触发用户定义的回调函数。定时精度与系统Tick时钟的周期有关。
- 硬件定时器受硬件的限制,数量上不足以满足用户的实际需求,因此为了满足用户需求,提供更多的定时器,系统提供软件定时器功能。
- 软件定时器扩展了定时器的数量,允许创建更多的定时业务。
软件定时器功能支持:
- 软件定时器创建
- 软件定时器启动
- 软件定时器停止
- 软件定时器删除
运作机制:
- 软件定时器使用了系统的一个队列和一个任务资源,先进先出。定时时间短的定时器总是比定时时间长的靠近队列头,满足优先被触发的准则。
- 当Tick中断到来时,在Tick中断处理函数中扫描软件定时器的计时任务,查看是否有定时器超时,如果有,则将超时的定时器记录下来。
- Tick中断处理函数结束后,软件定时器任务(优先级为高)被唤醒,在该任务中调用之前记录下来的定时器的超时回调函数。
软件定时器提供2类定时器机制:
- 单次触发定时器:在启动后只会触发一次定时器事件,然后定时器自动删除。
- 周期触发定时器:会周期性地触发定时器事件,直到用户手动地停止定时器,否则将永远持续执行。
创建定时器
hi_u32 hi_timer_create(hi_u32 *timer_handle);
参数:
参数名称 | 描述 |
---|---|
timer_handle | [IN] type hi_u32,handle.CNcomment:句柄。CNend |
启动定时器
hi_u32 hi_timer_start(hi_u32 timer_handle, hi_timer_type type, hi_u32 expire,hi_timer_callback_f timer_func, hi_u32 data);
参数:
参数名称 | 描述 |
---|---|
timer_handle | [IN] type hi_u32,handle.CNcomment:句柄。CNend |
type | [IN] type hi_timer_type,tim |