rtems:定时器函数
12.4: 函数
%A
%A 本节将介绍这些函数的用法
%A 12.4.1: TIMER_CREATE- 创建一个定时器
%A
%A 函数原型 :
%A
%A rtems_status_code rtems_timer_create(
%A
%A rtems_name name ,
%A
%A rtems_id *id
%A
%A );
%A
%A 返回值代表的状态 :
%A
%A RTEMS_SUCCESSFUL- 定时器成功地产生
%A
%A RTEMS_INVALID_ADDRESS- ID 标识是空值
%A
%A RTEMS_INVALID_NAME- 定时器名字无效
%A
%A RTEMS_TOO_MANY- 已经有太多的定时器
%A
%A 描述 :
%A
%A 该函数产生一个定时器。 新定时器 ID 标识在 *id 中返回。为了控制和维护定时器,RTEMS使用TMCB链表存放定时器控制块。
%A 12.4.2: TIMER_IDENT-拿一个定时器的 ID标识
%A
%A 函数原型:
%A
%A rtems_status_code rtems_timer_ident(
%A
%A rtems_name name,
%A
%A rtems_id *id
%A
%A );
%A
%A 返回值代表的状态:
%A
%A RTEMS_SUCCESSFUL- 定时器成功地识别
%A
%A RTEMS_INVALID_ADDRESS- ID标识是空值
%A
%A RTEMS_INVALID_NAME- 没找到对应名字的定时器
%A
%A 描述:
%A
%A 该函数获得与定时器有关名字被获得的定时器 ID标识。 如果定时器名字不是全局唯一的,那么将会返回第一个符合name的定时器 ID标识。
%A 12.4.3: TIMER_CANCEL-取消一个定时器
%A
%A 函数原型:
%A
%A rtems_status_code rtems_timer_cancel(
%A
%A rtems_id id
%A
%A );
%A
%A 返回值代表的状态:
%A
%A RTEMS_SUCCESSFUL- 成功地取消定时器
%A
%A RTEMS_INVALID_ID- 定时器ID标识无效
%A
%A 描述:
%A
%A 该函数能取消定时器ID标识。注意,这里是取消,不是删除。被取消的定时器还可以通过rtems_timer_reset , rtems_timer_fire_after 或 rtems_timer_fire_when函数重新启动
%A 12.4.4: TIMER_DELETE- 删除一个定时器
%A
%A 函数原型:
%A
%A rtems_status_code rtems_timer_delete(
%A
%A rtems_id id
%A
%A );
%A
%A 返回值代表的状态:
%A
%A RTEMS_SUCCESSFUL- 成功删除定时器
%A
%A RTEMS_INVALID_ID- 定时器ID标识无效
%A
%A 描述:
%A
%A 该函数删除ID标识指定的定时器。如果定时器正在运行,它自动地取消。被删除定时器的TMCB被RTEMS回收。
%A 12.4.5: TIMER_FIRE_AFTER- 在时间间隔后触发的定时器
%A
%A 函数原型:
%A
%A rtems_status_code rtems_timer_fire_after(
%A
%A rtems_id id,
%A
%A rtems_interval ticks,
%A
%A rtems_timer_service_routine_entry routine,
%A
%A void *user_data
%A
%A );
%A
%A 返回值代表的状态:
%A
%A RTEMS_SUCCESSFUL- 定时器成功地触发
%A
%A RTEMS_INVALID_ADDRESS- 例程是空
%A
%A RTEMS_INVALID_ID- 定时器 ID标识无效
%A
%A RTEMS_INVALID_NUMBER- 间隔无效
%A
%A 描述:
%A
%A 该函数开始被id标识指定的定时器。如果定时器正在运行,它将自动取消。定时器将会在指定时间片后触发。当定时器触发,定时器服务例程例程将会启动,启动参数使用user_data。
%A 12.4.6: TIMER_FIRE_WHEN- 指定时间触发定时器
%A
%A 函数原型 :
%A
%A rtems_status_code rtems_timer_fire_when(
%A
%A rtems_id id,
%A
%A rtems_time_of_day *wall_time,
%A
%A rtems_timer_service_routine_entry routine,
%A
%A void *user_data
%A
%A );
%A
%A 返回值代表的状态:
%A
%A RTEMS_SUCCESSFUL- 成功地开始定时器
%A
%A RTEMS_INVALID_ADDRESS- 例程是空值
%A
%A RTEMS_INVALID_ADDRESS- wall_time 是空值
%A
%A RTEMS_INVALID_ID- 定时器 ID标识无效
%A
%A RTEMS_NOT_DEFINED- 系统日期和时间没有被设定
%A
%A RTEMS_INVALID_CLOCK- 无效的系统时间
%A
%A 描述:
%A
%A 该函数开始被id指定的定时器。如果定时器正在运行,它自动复位。定时器的闹铃定位在wall_time指定时间。当定时器触发,定时器服务例程例程将会启动,服务使用的参数是user_data。
%A 12.4.7: TIMER_INITIATE_SERVER- 启动定时器服务后台任务
%A
%A 函数原型:
%A
%A rtems_status_code rtems_timer_initiate_server(
%A
%A unsigned32 stack_size,
%A
%A rtems_attribute attribute_set
%A
%A );
%A
%A 返回值代表的状态:
%A
%A RTEMS_SUCCESSFUL- 定时器服务成功启动
%A
%A RTEMS_TOO_MANY- 已经有太多任务产生
%A
%A 描述:
%A
%A 该函数开始定时器服务器任务。该任务负责运行使用 rtems_timer_server_fire_after 或 rtems_timer_server_fire_when 函数启动的定时器。
%A
%A 注意:
%A
%A 该函数可以引起抢占式调度。
%A
%A 定时器服务器任务使用 rtems_task_create 创建,这在配置系统的时候一定要说明。
%A
%A 由于使用 rtems_task_create 和 rtems_task_start 函数创建与启动,它只会因为资源分配问题失败。
%A 12.4.8: TIMER_SERVER_FIRE_AFTER- 在间隔后触发定时器任务
%A
%A 函数原型:
%A
%A rtems_status_code rtems_timer_server_fire_after(
%A
%A rtems_id id,
%A
%A rtems_interval ticks,
%A
%A rtems_timer_service_routine_entry routine,
%A
%A void *user_data
%A
%A );
%A
%A 返回值代表的状态 :
%A
%A RTEMS_SUCCESSFUL- 定时器成功地开始
%A
%A RTEMS_INVALID_ADDRESS- 例程是空值
%A
%A RTEMS_INVALID_ID- 定时器 ID 标识无效
%A
%A RTEMS_INVALID_NUMBER- 时间间隔无效
%A
%A RTEMS_INCORRECT_STATE- 定时器服务任务状态不正确 ( 未启动 )
%A
%A 描述 :
%A
%A 该函数 ID 指定的定时器 , 同时 , 说明当它触发时 , 对应的 ( 定时器 ) 程序将被定时器服务器执行。
%A 如果定时器正在运行,它自动复位。定时器的闹铃设在一个指定的时间间隔之后。当定时器触发,定时器服务例程例程将会启动,服务使用的参数是user_data。
%A%A
%A
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。