![]() |
RT-Thread API参考手册
4.0.3
嵌入式实时操作系统
|
定时器管理接口 更多...
结构体 | |
| 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_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 | 定时器的标志位 |
| rt_err_t rt_timer_delete | ( | rt_timer_t | timer | ) |
删除定时器
系统不再使用动态定时器时,可使用该函数接口,系统会把这个定时器从 rt_timer_list 链表中删除,然后释放相应的定时器控制块占有的内存。
| timer | 将要被删除的定时器句柄 |
| rt_err_t rt_timer_start | ( | rt_timer_t | timer | ) |
| rt_err_t rt_timer_stop | ( | rt_timer_t | timer | ) |
停止定时器
启动定时器以后,若想使它停止,可以调用该函数接口。
| timer | 定时器句柄,指向要停止的定时器控制块 |
| rt_err_t rt_timer_control | ( | rt_timer_t | timer, |
| int | cmd, | ||
| void * | arg | ||
| ) |
控制定时器
该函数可根据命令类型参数,来查看或改变定时器的设置。
| timer | 定时器句柄,指向将要控制的定时器控制块 |
| cmd | 控制命令 |
| arg | 控制命令相关的参数 |