|
|
|
|||||
|
|
作者 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 版权所有 |
||||||||||||||||