Timer

1.KAL Timer(kernel adpat layer):  直接封装了RTOS(nuleus)的timer, 实现方式是由HISR, 具有最高的优先级.

即当这个timer超时时, 就会触发一个HISR, 该中断会回调注册的回调函数.

 

kal_timerid kal_create_timer(kal_char *timer_name_ptr);      //创建一个timer, 参数是timer的名字.

void kal_set_timer(kal_timerid ext_t_id, kal_timer_func_ptr handler_func_ptr,
                   void *handler_param_ptr, kal_uint32 delay, kal_uint32 reshedule_time);     //设置timer的超时时间, timer_id是kal_create_timer返回值. handler_func_ptr是回调函数, handler_param_ptr 回调函数返回的参数, delay,超时时间, 单位为ticks不是ms.   reshedule_time 表示是否循环使用,  0表示timer超时一次就停止, 1 表示自动循环启动timer.

 

void kal_cancel_timer(kal_timerid ext_timer);     //  停止timer,  参数timer id.

 

2.stack timer,  与kal timer的最大区别在于:  stack timer超时后, 发送一个超时消息到相应task的消息队列, 由消息队列来处理这个消息, 而不像kal timer, 直接在中断状态回调注册函数. 故从时间的精确性来说没有kal timer精确.

但是stack timer更加安全(在task里处理这个消息), 提高并发性(stack 到期后只是发送了一个消息, 具体并不处理).

void stack_init_timer(stack_timer_struct *stack_timer, kal_char *timer_name, module_type mod_id);

kal_bool stack_is_time_out_valid(stack_timer_struct *stack_timer);

void stack_process_time_out(stack_timer_struct *stack_timer);

void stack_start_timer(stack_timer_struct *stack_timer, kal_uint16 timer_indx, kal_uint32 init_time);

stack_timer_status_type stack_stop_timer(stack_timer_struct *stack_timer);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值