1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 基于mdm9206 threadx_os的timer操作相关API介绍

基于mdm9206 threadx_os的timer操作相关API介绍

时间:2018-10-23 01:21:01

相关推荐

基于mdm9206 threadx_os的timer操作相关API介绍

大家好,今天小白给大家介绍一下,关于mdm9206 threadx_os的timer操作相关的api,希望能和大家一起交流学习。

一 . 概述

本篇介绍的接口是实现高级时间服务(ATS)计时器服务。 此计时器服务与RTOS计时器服务不同。 此计时器服务将在SOM模式下可用。这些例程是完全可重入的。 为了防止内存泄漏,无论何时完成计时器使用,都应使用qapi_Timer_Undef()API来定义计时器。 定时器回调应该做最少的处理。 时间回调实现不应包含任何互斥或RPC。

二. 相关枚举常量

enum qapi_TIMER_notify_t; //定时器通知类型, 定时器到期时可用通知的枚举。

enum qapi_TIMER_unit_type; //定时器单元类型, 可以指定定时器持续时间的单位.

.....

三. timer相关接口定义

1. qapi_Status_t qapi_Timer_Def ( qapi_TIMER_handle_t ∗ timer_handle, qapi_TIMER_define_attr_t ∗ timer_attr )

功能:在定时器模块中分配内部存储器。 然后使用timer_def_attr变量中提供的参数格式化内部存储器。 timer_handle返回给客户端,此句柄必须用于任何后续的计时器操作。

参数:

in timer_handle // 定时器回调函数。

in timer_attr// 用于定义定时器的属性。

关于类型:

qapi_TIMER_handle_t

typedef void ∗ qapi_TIMER_handle_t //计时器模块提供给客户端的句柄。 客户端必须将此句柄作为令牌传递,并随后进行计时器调用。 请注意,客户端应缓存句柄。 丢失后,无法从模块中查询。

typedef struct

{

qbool_t deferrable;

qapi_TIMER_notify_t cb_type; //要接收的通知类型

void* sigs_func_ptr; //指定信号对象或回调函数。

uint32_t sigs_mask_data; //指定信号掩码或回调数据

}qapi_TIMER_define_attr_t;

返回值:类型:qapi_Status_t, 返回QAPI_OK - 调用成功,其他表示调用出错。

2. qapi_Status_t qapi_Timer_Set ( qapi_TIMER_handle_t timer_handle, qapi_TIMER_set_attr_t ∗ timer_attr )

功能:在定时器模块中分配内部存储器。 然后使用timer_def_attr变量中提供的参数格式化内部存储器。 timer_handle返回给客户端,此句柄必须用于任何后续的计时器操作。

参数:

in timer_handle // 定时器回调函数。

in timer_attr// 用于定义定时器的属性。

关于类型:

typedef struct

{

uint64_t time; //定时持续时间

uint64_t reload; //重新加载时间

qapi_TIMER_unit_type unit; //指定计时器持续时间的单位

}qapi_TIMER_set_attr_t;

返回值同上。

3. qapi_Status_t qapi_Timer_Sleep ( uint64_t timeout, qapi_TIMER_unit_type unit, qbool_t non_deferrable )

功能:定时等待。 在指定时间内阻塞线程。

参数:

in : timeout // 指定阻止线程的持续时间。

in : unit // 指定持续时间的单位。

in : non_deferrable // TRUE =处理器(如果处于深度睡眠或电源崩溃状态)将在超时时被唤醒。

// FALSE =处理器不会因深度睡眠或超时时断电而被唤醒。

返回值:同上。

4. qapi_Status_t qapi_Timer_Undef ( qapi_TIMER_handle_t timer_handle )

功能:取消定义的计时器。 只要计时器使用完成,就必须调用此API。 调用此API会释放定义计时器时分配的内部计时器内存。

参数:

in : timer_hanlde //定时器手柄,用于取消定时器。

返回值:同上。

四. 用法示例

void timer1_handler(uint32_t data) //中断处理函数

{

// 中断处理

}

qapi_Status_t timer_init(void)

{

qapi_Status_t status = QAPI_OK;

memset(&timer_def_attr, 0, sizeof(timer_def_attr));

timer_def_attr.cb_type = QAPI_TIMER_FUNC1_CB_TYPE; //timer_deef_attr参数初始化

timer_def_attr.deferrable = false;

timer_def_attr.sigs_func_ptr = timer1_handler; //中断处理函数的函数指针

timer_def_attr.sigs_mask_data = 0x11;

status = qapi_Timer_Def(&timer_handle, &timer_def_attr); //为定时器资源分配内存并为后续操作返回句柄;

return status;

}

qapi_Status_t timer_start(void)

{

qapi_Status_t status = QAPI_OK;

memset(&timer_set_attr, 0, sizeof(timer_set_attr)); //timer_set_attr参数初始化

timer_set_attr.reload = 100;

timer_set_attr.time = 10;

timer_set_attr.unit = QAPI_TIMER_UNIT_MSEC;

status = qapi_Timer_Set(timer_handle, &timer_set_attr); //启动计时器

return status;

}

int main()

{

qapi_TIMER_handle_t timer_handle;

.....

while(1)

{

timer_init(); //初始化定时器

timer_start(); //开启定时器

}

qapi_Timer_Undef(timer_handle); //取消定时器

}

五. 总结

本篇主要介绍了基于mdm9206平台的threadx_os的timer操作相关的api,欢迎一起交流学习。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。