$darkmode
RuiChing API 参考手册
V0.9.1
系统定时器

提供定时器接口,实现延迟执行与周期性任务调度 更多...

结构体

struct  rt_timer
 定时器对象结构体 更多...
 

宏定义

#define RT_TIMER_FLAG_ONE_SHOT   0x0
 单次定时器(触发一次后自动停止)
 
#define RT_TIMER_FLAG_PERIODIC   0x2
 周期性定时器(触发后自动重新计时)
 
#define RT_TIMER_FLAG_HARD_TIMER   0x0
 硬定时器,回调函数在中断中执行
 
#define RT_TIMER_FLAG_SOFT_TIMER   0x4
 软定时器,回调函数在定时器线程中执行
 
#define RT_TIMER_CTRL_SET_TIME   0x0
 设置定时器的超时时间
 
#define RT_TIMER_CTRL_GET_TIME   0x1
 获取定时器的超时时间
 
#define RT_TIMER_CTRL_SET_ONESHOT   0x2
 将定时器设置为单次模式
 
#define RT_TIMER_CTRL_SET_PERIODIC   0x3
 将定时器设置为周期模式
 
#define RT_TIMER_CTRL_GET_STATE   0x4
 获取定时器当前的运行状态(激活或未激活)
 
#define RT_TIMER_CTRL_GET_REMAIN_TIME   0x5
 获取定时器剩余的挂起时间
 
#define RT_TIMER_CTRL_GET_FUNC   0x6
 获取定时器的超时回调函数
 
#define RT_TIMER_CTRL_SET_FUNC   0x7
 设置定时器的超时回调函数
 
#define RT_TIMER_CTRL_GET_PARM   0x8
 获取定时器回调函数的参数
 
#define RT_TIMER_CTRL_SET_PARM   0x9
 设置定时器回调函数的参数
 
#define RT_TICK_MAX   RT_UINT32_MAX
 最大滴答数
 

类型定义

typedef struct rt_timerrt_timer_t
 定时器类型指针定义
 

函数

void rt_timer_init (rt_timer_t timer, const char *name, void(*timeout)(void *parameter), void *parameter, rt_tick_t time, rt_uint8_t flag)
 初始化静态定时器对象 更多...
 
rt_err_t rt_timer_detach (rt_timer_t timer)
 将静态定时器对象从内核管理中分离 更多...
 
rt_timer_t rt_timer_create (const char *name, void(*timeout)(void *parameter), void *parameter, rt_tick_t time, rt_uint8_t flag)
 动态创建定时器对象 更多...
 
rt_err_t rt_timer_delete (rt_timer_t timer)
 删除动态定时器 更多...
 
rt_err_t rt_timer_start (rt_timer_t timer)
 启动定时器 更多...
 
rt_err_t rt_timer_stop (rt_timer_t timer)
 停止定时器 更多...
 
rt_err_t rt_timer_control (rt_timer_t timer, int cmd, void *arg)
 控制定时器参数。 更多...
 

详细描述

提供定时器接口,实现延迟执行与周期性任务调度

函数说明

◆ rt_timer_init()

void rt_timer_init ( rt_timer_t  timer,
const char *  name,
void(*)(void *parameter)  timeout,
void *  parameter,
rt_tick_t  time,
rt_uint8_t  flag 
)

初始化静态定时器对象

初始化用户全局或静态存储的定时器对象,初始化后需调用 rt_timer_start() 启动定时器

参数
[in]timer定时器对象指针
[in]name定时器名称
[in]timeout定时器超时回调函数
[in]parameter回调函数的参数
[in]time超时时间,单位 tick,最大值 RT_TICK_MAX / 2 - 1
[in]flag定时器标志位,可使用 | 组合
标志位 含义
RT_TIMER_FLAG_ONE_SHOT 单次定时器
RT_TIMER_FLAG_PERIODIC 周期定时器
RT_TIMER_FLAG_HARD_TIMER 硬件定时器模式
RT_TIMER_FLAG_SOFT_TIMER 软件定时器模式

◆ rt_timer_detach()

rt_err_t rt_timer_detach ( rt_timer_t  timer)

将静态定时器对象从内核管理中分离

该函数用于解除静态定时器(用户自定义的 rt_timer_t 对象)与内核的关联, 执行以下操作:

  • 清除激活状态标志
  • 从内核对象系统分离
参数
[in]timer需要脱离的定时器对象指针
返回值
RT_EOK分离成功
-RT_ERROR参数无效或定时器未初始化
警告
  • 仅适用于通过 rt_timer_init() 初始化的静态定时器
  • 调用前必须确保定时器已停止(若正在运行需先调用 rt_timer_stop()
注解
  • 分离后定时器对象内存仍需用户自行管理

◆ rt_timer_create()

rt_timer_t rt_timer_create ( const char *  name,
void(*)(void *parameter)  timeout,
void *  parameter,
rt_tick_t  time,
rt_uint8_t  flag 
)

动态创建定时器对象

该函数通过动态内存分配创建定时器对象,并初始化相关参数。 创建的定时器需要通过 rt_timer_delete() 手动释放内存。相比静态定时器 rt_timer_init(),动态定时器更适合临时使用的场景

参数
[in]name定时器名称指针
[in]timeout定时器超时回调函数
[in]parameter回调函数的参数
[in]time超时时间,单位 tick,最大值 RT_TICK_MAX / 2 - 1
[in]flag定时器标志位,可使用 | 组合
标志位 含义
RT_TIMER_FLAG_ONE_SHOT 单次定时器
RT_TIMER_FLAG_PERIODIC 周期定时器
RT_TIMER_FLAG_HARD_TIMER 硬件定时器模式
RT_TIMER_FLAG_SOFT_TIMER 软件定时器模式
返回值
!RT_NULL创建成功,返回定时器对象指针
RT_NULL创建失败

◆ rt_timer_delete()

rt_err_t rt_timer_delete ( rt_timer_t  timer)

删除动态定时器

该函数用于销毁通过 rt_timer_create() 创建的动态定时器,执行以下操作:

  • 从定时器链表中移除
  • 清除激活状态标志
  • 释放定时器对象内存
参数
[in]timer需要删除的定时器对象指针
返回值
RT_EOK删除成功
!RT_EOK删除失败
注解

◆ rt_timer_start()

rt_err_t rt_timer_start ( rt_timer_t  timer)

启动定时器

当定时器被创建或者初始化以后,并不会立即启动,必须在调用该函数接口 后,才开始工作

参数
[in]timer要启动的定时器对象指针
返回值
RT_EOK启动成功
-RT_ERROR启动失败

◆ rt_timer_stop()

rt_err_t rt_timer_stop ( rt_timer_t  timer)

停止定时器

该函数用于停止指定的定时器对象,执行以下操作:

  • 从定时器链表中移除(若处于激活状态)
  • 清除激活状态标志
参数
[in]timer要停止的定时器对象指针
返回值
RT_EOK停止成功
-RT_ERROR停止失败,定时器未激活

◆ rt_timer_control()

rt_err_t rt_timer_control ( rt_timer_t  timer,
int  cmd,
void *  arg 
)

控制定时器参数。

该函数用于获取或设置定时器的各种参数,支持以下操作:

  • 获取/设置超时时间
  • 修改定时器模式(单次/周期)
  • 获取/设置回调函数及参数
  • 查询定时器状态和剩余时间
参数
[in]timer定时器对象指针
[in]cmd控制命令
命令宏 功能描述 arg 类型
RT_TIMER_CTRL_GET_TIME 获取初始超时时间 rt_tick_t*
RT_TIMER_CTRL_SET_TIME 设置新的超时时间 rt_tick_t*
RT_TIMER_CTRL_SET_ONESHOT 设置为单次定时器模式 -
RT_TIMER_CTRL_SET_PERIODIC 设置为周期定时器模式 -
RT_TIMER_CTRL_GET_STATE 获取定时器激活状态 rt_uint32_t*
RT_TIMER_CTRL_GET_REMAIN_TIME 获取剩余超时时间 rt_tick_t*
RT_TIMER_CTRL_GET_FUNC 获取当前回调函数指针 void**
RT_TIMER_CTRL_SET_FUNC 设置新的回调函数 void(*)(void*)
RT_TIMER_CTRL_GET_PARM 获取当前回调参数 void**
RT_TIMER_CTRL_SET_PARM 设置新的回调参数 void*
[in,out]arg控制命令参数
返回值
RT_EOK操作成功
!RT_EOK操作失败