主页 文档 下载 莱特 沙龙 English

RTESM文档
RTEMS精彩应用
RTEMS版权说明
其他RTOS
ARM/DSP专区
AVR/FPGA/PCB
嵌入式文件系统
ARM AVR仿真器DIY
莱特电子工作室
联系我们
 


定时器函数

作者 Ray

RTEMS版权所有,转载请注明来源www.rtems.net,作者Ray

12.4: 函数

本节将介绍这些函数的用法

12.4.1: TIMER_CREATE- 创建一个定时器

函数原型 :

rtems_status_code rtems_timer_create(

rtems_name name ,

rtems_id *id

);

返回值代表的状态 :

RTEMS_SUCCESSFUL- 定时器成功地产生

RTEMS_INVALID_ADDRESS- ID 标识是空值

RTEMS_INVALID_NAME- 定时器名字无效

RTEMS_TOO_MANY- 已经有太多的定时器

描述 :

该函数产生一个定时器。 新定时器 ID 标识在 *id 中返回。为了控制和维护定时器,RTEMS使用TMCB链表存放定时器控制块。

12.4.2: TIMER_IDENT-拿一个定时器的 ID标识

函数原型:

rtems_status_code rtems_timer_ident(

rtems_name name,

rtems_id *id

);

返回值代表的状态:

RTEMS_SUCCESSFUL- 定时器成功地识别

RTEMS_INVALID_ADDRESS- ID标识是空值

RTEMS_INVALID_NAME- 没找到对应名字的定时器

描述:

该函数获得与定时器有关名字被获得的定时器 ID标识。 如果定时器名字不是全局唯一的,那么将会返回第一个符合name的定时器 ID标识。

12.4.3: TIMER_CANCEL-取消一个定时器

函数原型:

rtems_status_code rtems_timer_cancel(

rtems_id id

);

返回值代表的状态:

RTEMS_SUCCESSFUL- 成功地取消定时器

RTEMS_INVALID_ID- 定时器ID标识无效

描述:

该函数能取消定时器ID标识。注意,这里是取消,不是删除。被取消的定时器还可以通过rtems_timer_reset , rtems_timer_fire_after 或 rtems_timer_fire_when函数重新启动

12.4.4: TIMER_DELETE- 删除一个定时器

函数原型:

rtems_status_code rtems_timer_delete(

rtems_id id

);

返回值代表的状态:

RTEMS_SUCCESSFUL- 成功删除定时器

RTEMS_INVALID_ID- 定时器ID标识无效

描述:

该函数删除ID标识指定的定时器。如果定时器正在运行,它自动地取消。被删除定时器的TMCB被RTEMS回收。

12.4.5: TIMER_FIRE_AFTER- 在时间间隔后触发的定时器

函数原型:

rtems_status_code rtems_timer_fire_after(

rtems_id id,

rtems_interval ticks,

rtems_timer_service_routine_entry routine,

void *user_data

);

返回值代表的状态:

RTEMS_SUCCESSFUL- 定时器成功地触发

RTEMS_INVALID_ADDRESS- 例程是空

RTEMS_INVALID_ID- 定时器 ID标识无效

RTEMS_INVALID_NUMBER- 间隔无效

描述:

该函数开始被id标识指定的定时器。如果定时器正在运行,它将自动取消。定时器将会在指定时间片后触发。当定时器触发,定时器服务例程例程将会启动,启动参数使用user_data。

12.4.6: TIMER_FIRE_WHEN- 指定时间触发定时器

函数原型 :

rtems_status_code rtems_timer_fire_when(

rtems_id id,

rtems_time_of_day *wall_time,

rtems_timer_service_routine_entry routine,

void *user_data

);

返回值代表的状态:

RTEMS_SUCCESSFUL- 成功地开始定时器

RTEMS_INVALID_ADDRESS- 例程是空值

RTEMS_INVALID_ADDRESS- wall_time 是空值

RTEMS_INVALID_ID- 定时器 ID标识无效

RTEMS_NOT_DEFINED- 系统日期和时间没有被设定

RTEMS_INVALID_CLOCK- 无效的系统时间

描述:

该函数开始被id指定的定时器。如果定时器正在运行,它自动复位。定时器的闹铃定位在wall_time指定时间。当定时器触发,定时器服务例程例程将会启动,服务使用的参数是user_data。

12.4.7: TIMER_INITIATE_SERVER- 启动定时器服务后台任务

函数原型:

rtems_status_code rtems_timer_initiate_server(

unsigned32 stack_size,

rtems_attribute attribute_set

);

返回值代表的状态:

RTEMS_SUCCESSFUL- 定时器服务成功启动

RTEMS_TOO_MANY- 已经有太多任务产生

描述:

该函数开始定时器服务器任务。该任务负责运行使用 rtems_timer_server_fire_after 或 rtems_timer_server_fire_when 函数启动的定时器。

注意:

该函数可以引起抢占式调度。

定时器服务器任务使用 rtems_task_create 创建,这在配置系统的时候一定要说明。

由于使用 rtems_task_create 和 rtems_task_start 函数创建与启动,它只会因为资源分配问题失败。

12.4.8: TIMER_SERVER_FIRE_AFTER- 在间隔后触发定时器任务

函数原型:

rtems_status_code rtems_timer_server_fire_after(

rtems_id id,

rtems_interval ticks,

rtems_timer_service_routine_entry routine,

void *user_data

);

返回值代表的状态 :

RTEMS_SUCCESSFUL- 定时器成功地开始

RTEMS_INVALID_ADDRESS- 例程是空值

RTEMS_INVALID_ID- 定时器 ID 标识无效

RTEMS_INVALID_NUMBER- 时间间隔无效

RTEMS_INCORRECT_STATE- 定时器服务任务状态不正确 ( 未启动 )

描述 :

该函数 ID 指定的定时器 , 同时 , 说明当它触发时 , 对应的 ( 定时器 ) 程序将被定时器服务器执行。

如果定时器正在运行,它自动复位。定时器的闹铃设在一个指定的时间间隔之后。当定时器触发,定时器服务例程例程将会启动,服务使用的参数是user_data。

 

 
嵌入式软硬件设计咨询 • 8位 16位 32位 64位 RISC DSP
主页文章 方案 产品 下载反馈
 
2004 RTEMS.NET 版权所有