您当前的位置: 首页 > 资讯 > 详情

一个应用于嵌入式的通用工具包! 世界微速讯

2023-04-17 08:14:47 来源:面包芯语


(资料图片仅供参考)

•Queue 循环队列配置项

•Timer 软件定时器配置项

•Event 事件集配置项

3.2 Queue 循环队列API函数

3.2.1 动态创建队列

structtk_queue*tk_queue_create(uint16_tqueue_size,uint16_tmax_queues,boolkeep_fresh);

队列创建示例:

intmain(intargc,char*argv[]){/*动态方式创建一个循环队"queue",缓冲区大小50字节,不保持最新*/structtk_queue*queue=tk_queue_create(50,1,false);if(queue==NULL){printf("队列创建失败!\n");}/*...*//*Youcanaddyourcodeunderhere.*/return0;}

3.2.2动态删除队列

booltk_queue_delete(structtk_queue*queue);

3.2.3静态初始化队列

booltk_queue_init(structtk_queue*queue,void*queuepool,uint16_tpool_size,uint16_tqueue_size,boolkeep_fresh);

队列创建示例:

intmain(intargc,char*argv[]){/*定义一个循环队列*/structtk_queuequeue;/*定义循环队列缓冲区*/uint8_tqueue_pool[100];/*静态方式创建一个循环队列"queue",缓存区为queue_pool,大小为queue_pool的大小,模式为保持最新*/if(tk_queue_init(&queue,queue_pool,sizeof(queue_pool),sizeof(queue_pool[0]),true)==false){printf("队列创建失败!\n");}/*...*//*Youcanaddyourcodeunderhere.*/}

3.2.4 静态脱离队列

booltk_queue_detach(structtk_queue*queue);

3.2.5 清空队列

booltk_queue_clean(structtk_queue*queue);

3.2.6 判断队列是否为空

booltk_queue_empty(structtk_queue*queue);

3.2.7 判断队列是否已满

booltk_queue_full(structtk_queue*queue);

3.2.8 从队列中读取一个元素(不从队列中删除)

booltk_queue_peep(structtk_queue*queue,void*pval);

3.2.9 移除一个元素

booltk_queue_remove(structtk_queue*queue);

3.2.10 向队列压入(入队)1个元素数据

booltk_queue_push(structtk_queue*queue,void*val);

3.2.11 从队列弹出(出队)1个元素数据

booltk_queue_pop(structtk_queue*queue,void*pval);

3.2.12 查询队列当前数据长度

uint16_ttk_queue_curr_len(structtk_queue*queue);

3.2.13 向队列压入(入队)多个元素数据

uint16_ttk_queue_push_multi(structtk_queue*queue,void*pval,uint16_tlen);

3.2.14 从队列弹出(出队)多个元素数据

uint16_ttk_queue_pop_multi(structtk_queue*queue,void*pval,uint16_tlen);

3.3 Timer 软件定时器API函数

3.3.1 软件定时器功能初始化

booltk_timer_func_init(uint32_t(*get_tick_func)(void));

3.3.2 动态创建定时器

structtk_timer*tk_timer_create(void(*timeout_callback)(structtk_timer*timer));

定时器创建示例::

/*定义获取系统tick回调函数*/uint32_tget_sys_tick(void){returntick;}/*定时器超时回调函数*/voidtimer_timeout_callback(structtk_timer*timer){printf("timeout_callback:timertimeout:%ld\n",get_sys_tick());}intmain(intargc,char*argv[]){/*初始化软件定时器功能,并配置tick获取回调函数*/tk_timer_func_init(get_sys_tick);/*定义定时器指针*/tk_timer_ttimer=NULL;/*动态方式创建timer,并配置定时器超时回调函数*/timer=tk_timer_create((tk_timer_timeout_callback*)timer_timeout_callback);if(timer==NULL){printf("定时器创建失败!\n");return0;}/*...*//*Youcanaddyourcodeunderhere.*/return0;}

3.3.3 动态删除定时器

booltk_timer_delete(structtk_timer*timer);

3.3.4 静态初始化定时器

booltk_timer_init(structtk_timer*timer,void(*timeout_callback)(structtk_timer*timer));

队列创建示例:

/*定义获取系统tick回调函数*/uint32_tget_sys_tick(void){returntick;}/*定时器超时回调函数*/voidtimer_timeout_callback(structtk_timer*timer){printf("timeout_callback:timertimeout:%ld\n",get_sys_tick());}intmain(intargc,char*argv[]){/*定义定时器timer*/structtk_timertimer;boolresult=tk_timer_init(&timer,(tk_timer_timeout_callback*)timer_timeout_callback);if(result==NULL){printf("定时器创建失败!\n");return0;}/*...*//*Youcanaddyourcodeunderhere.*/return0;}

3.3.5 静态脱离定时器

booltk_timer_detach(structtk_timer*timer);

3.3.6 定时器启动

booltk_timer_start(structtk_timer*timer,tk_timer_modemode,uint32_tdelay_tick);

3.3.7 定时器停止

booltk_timer_stop(structtk_timer*timer);

3.3.8 定时器继续

booltk_timer_continue(structtk_timer*timer);

3.3.9 定时器重启

booltk_timer_restart(structtk_timer*timer);

3.3.10 获取定时器模式

tk_timer_modetk_timer_get_mode(structtk_timer*timer);

3.3.11 获取定时器状态

tk_timer_statetk_timer_get_state(structtk_timer*timer);

3.3.12 定时器处理

booltk_timer_loop_handler(void);

3.3.13 超时回调函数

函数原型:

typedefvoid(*timeout_callback)(structtk_timer*timer);

一对一

/*定义两个回调函数,对应定时器timer1和timer2*/voidtimer1_timeout_callback(structtk_timer*timer){printf("定时器1超时!\n");}voidtimer2_timeout_callback(structtk_timer*timer){printf("定时器2超时!\n");}/*创建两个定时器,配置单独超时回调函数*/timer1=tk_timer_create((timeout_callback*)timer1_timeout_callback);timer2=tk_timer_create((timeout_callback*)timer2_timeout_callback);

多对一

/*定时器timer1和timer2共用一个回调函数,在回调函数做区分*/voidtimer_timeout_callback(structtk_timer*timer){if(timer==timer1)printf("定时器1超时!\n");elseif(timer==timer2)printf("定时器2超时!\n");}/*创建两个定时器,使用相同的超时回调函数*/timer1=tk_timer_create((timeout_callback*)timer_timeout_callback);timer2=tk_timer_create((timeout_callback*)timer_timeout_callback);

3.4 Event 事件集API函数

3.4.1 动态创建一个事件

structtk_event*tk_event_create(void);

3.4.2 动态删除一个事件

booltk_event_delete(structtk_event*event);

3.4.3 静态初始化一个事件

booltk_event_init(structtk_event*event);

3.4.4 发送事件标志

booltk_event_send(structtk_event*event,uint32_tevent_set);

3.4.5 接收事件

booltk_event_recv(structtk_event*event,uint32_tevent_set,uint8_toption,uint32_t*recved);
版权声明:本文来源网络,免费传达知识,版权归原作者所有。如涉及作品版权问题,请联系我进行删除。

标签:

下一篇: 最后一页
上一篇: 热点评!从业者称高空杂技是拿生命在演出是什么情况
一向自诩工作狂的马斯克把睡办公室的习惯带到了推特。据《福布斯》杂志报道,当地时间12月5日,返岗的推特员工突然发现办公楼里多了很多临时改
奥泰生物(688606)12月06日在投资者关系平台上答复了投资者关心的问题。投资者:您好!请问贵公司目前抗原试剂盒日产能多少?现在存货现货多少