定时器管理
优质
小牛编辑
133浏览
2023-12-01
定时器管理接口
结构体 | |
struct | rt_timer |
定时器控制块 更多... | |
宏定义 | |
#define | RT_TIMER_FLAG_DEACTIVATED 0x0 |
定时器未激活 | |
#define | RT_TIMER_FLAG_ACTIVATED 0x1 |
定时器已激活 | |
#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 |
将计时器更改为周期性定时器 | |
类型定义 | |
typedef struct rt_timer * | rt_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-Thread的定时器提供两类定时器机制:第一类是单次触发定时器,这类定时器在启动后只会触发一次定时器事件, 然后定时器自动停止。第二类是周期触发定时器,这类定时器会周期性的触发定时器事件, 直到用户手动的停止,否则将永远持续执行下去。
另外,根据超时函数执行时所处的上下文环境,RT-Thread的定时器可以分为软件定时器和硬件定时器。 硬件定时器的超时函数在中断上下文环境中执行,可以在初始化/创建定时器时使用参数RT_TIMER_FLAG_HARD_TIMER来指定。 软件定时器的超时函数在timer线程的上下文环境中执行。可以在初始化/创建定时器时使用参数RT_TIMER_FLAG_SOFT_TIMER来指定。
函数说明
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 | ||
) |
初始化定时器
该函数将初始化一个定时器,通常该函数用于初始化一个静态定时器对象。
- 参数
timer 静态定时器对象句柄 name 定时器的名称 timeout 超时回调函数 parameter 超时回调函数的传入参数 time 定时器的超时滴答数 flag 定时器创建时的参数,支持的值包括单次定时、周期定时、 硬件定时器、软件定时器(可以用 “或” 关系取多个值)
rt_err_t rt_timer_detach | ( | rt_timer_t | timer | ) |
脱离定时器
当一个静态定时器不需要再使用时,可以使用该函数接口把定时器对象从系统容器的定时器链表中删除, 但是定时器对象所占有的内存不会被释放。
- 参数
timer 静态定时器对象句柄
- 返回
- RT_EOK
rt_timer_t rt_timer_create | ( | const char * | name, |
void(*)(void *parameter) | timeout, | ||
void * | parameter, | ||
rt_tick_t | time, | ||
rt_uint8_t | flag | ||
) |
创建定时器
调用该函数接口后,内核首先从动态内存堆中分配一个定时器控制块,然后对该控制块进行基本的初始化。
- 参数
name 定时器名称 timeout 超时回调函数 parameter 超时回调函数的传入参数 time 定时超时时间 flag 定时器的标志位
- 返回
- 创建的定时器句柄
- 示例:
- timer_sample.c.
rt_err_t rt_timer_delete | ( | rt_timer_t | timer | ) |
删除定时器
系统不再使用动态定时器时,可使用该函数接口,系统会把这个定时器从 rt_timer_list 链表中删除,然后释放相应的定时器控制块占有的内存。
- 参数
timer 将要被删除的定时器句柄
- 返回
- RT_EOK
rt_err_t rt_timer_start | ( | rt_timer_t | timer | ) |
启动定时器
当定时器被创建或者初始化以后,并不会被立即启动,必须在调用该函数接口后,才开始工作。
- 参数
timer 将要被启动的定时器
- 返回
- RT_EOK
- 示例:
- timer_sample.c.
rt_err_t rt_timer_stop | ( | rt_timer_t | timer | ) |
停止定时器
启动定时器以后,若想使它停止,可以调用该函数接口。
- 参数
timer 定时器句柄,指向要停止的定时器控制块
- 返回
- 成功则返回 RT_EOK ; 返回 -RT_ERROR 时则说明已经处于停止状态
- 示例:
- timer_sample.c.
rt_err_t rt_timer_control | ( | rt_timer_t | timer, |
int | cmd, | ||
void * | arg | ||
) |
控制定时器
该函数可根据命令类型参数,来查看或改变定时器的设置。
- 参数
timer 定时器句柄,指向将要控制的定时器控制块 cmd 控制命令 arg 控制命令相关的参数
- 返回
- RT_EOK