基于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,欢迎一起交流学习。
基于mdm9206 threadx_os的timer操作相关API介绍相关推荐
- 基于mdm9206 threadx_os的spi操作相关API介绍
大家好,今天小白给大家介绍一下,关于mdm9206 threadx_os的spi操作相关的API,希望能和大家一起交流学习. 一. SPI简介 SPI,是英语Serial Peripheral Int ...
- 基于mdm9206 threadx_os的adc操作相关API介绍
大家好,今天小白给大家介绍一下,关于mdm9206 threadx_os的adc操作相关的API,希望能和大家一起交流学习. 1 ADC简介 模数转换器(ADC)允许对模拟信号进行采样和数字表示. S ...
- 基于mdm9206 threadx_os的I2c操作相关API介绍
大家好,今天小白给大家介绍一下,关于mdm9206 threadx_os的I2c操作相关的API,希望能和大家一起交流学习. 一:I2C简介 I2C是一种2线总线,用于将低速外设连接到处理器或微控制器 ...
- 基于mdm9206 threadx_os的gpio操作相关API介绍
大家好,今天小白给大家介绍一下,关于mdm9206 threadx_os的gpio操作相关的api,希望能和大家一起交流学习. 1.gpio模块概述 SoC具有许多功能,但由于尺寸缩小,通常会受到限制 ...
- 关于mdm9206 threadx_os的I2c操作相关的API,
大家好,今天小白给大家介绍一下,关于mdm9206 threadx_os的I2c操作相关的API,希望能和大家一起交流学习. 一:I2C简介 I2C是一种2线总线,用于将低速外设连接到处理器或微控制器 ...
- VB 文件常用操作相关API
下面是windows中提供的对于文件进行操作的API函数及其功能: Windows API函数 功能 CloseHandle 关闭一个内核对象.其中包括文件.文件映射.进程.线程.安全和同步对象等.涉 ...
- Win32路径操作相关API
一.路径截断与合并 PathRemoveArgs 去除路径的参数 PathRemoveBackslash 去除路径最后的反斜杠 "\" PathAddBackslash 在路径 ...
- Hibernate基础学习(二)—Hibernate相关API介绍
一.Hibernate的核心接口 所有的Hibernate应用中都会访问Hibernate的5个核心接口. (1)Configuration接口: 配置Hibernate,启动Hibernate,创建 ...
- WordNet相关API介绍及语义相似度计算方法
WordNet Introduction WordNet是由Princeton 大学的心理学家,语言学家和计算机工程师联合设计的一种基于认知语言学的英语词典.它不是光把单词以字母顺序排列,而且按照单词 ...
最新文章
- Bicoloring
- Mysql对string类型转换int类型的小问题
- iOS之性能优化·列表异步绘制
- Django中扩展Paginator实现分页
- nginx 去掉服务器版本和名称和nginx_status 状态说明
- Laravel Passport里的授权类型介绍
- DEDECMS给图集图片{dede:productimagelist}自动编号
- php程序员会什么,php程序员是什么
- 微信小程序实战之 goods(订餐页)
- win10相机计算机无法使用,win10系统相机怎么用 win10系统相机无法使用怎么解决...
- 基于Linux的录像机:Neuros OSD
- 在线搭建自己的网课答案公众号题库系统
- NOI2015 小园丁与老司机
- 推荐一款专家级网站流量分析软件-逆火(Nihuo)
- Android 使用Loader轻松实现仿微信图片加载
- 2021年金属非金属矿山(地下矿山)主要负责人模拟考试题库及金属非金属矿山(地下矿山)主要负责人复审模拟考试
- Java网课基础笔记(7)19-07-19
- 福克斯连接android手机,福克斯改装安卓9寸大屏幕导航和行车记录仪
- 2022.11.17排序题讲解
- java集合List解析