xt-sdk 文档 v1.0.3
xt-sdk 嵌入式 SDK API 参考
载入中...
搜索中...
未找到
xt_timer2.h
浏览该文件的文档.
1
12
13#ifndef __XT_TIMER2_H__
14#define __XT_TIMER2_H__
15
16/* ==================== [Includes] ========================================== */
17
18#include "xtiny.h"
19#if (XT_TASK_ENABLE_OS)
20#include "cmsis_os2.h"
21#endif
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
33
34/* ==================== [Defines] =========================================== */
35
37#define XT_TIMER2_TIMEOUT_MAX INT32_MAX
38
39#if !defined(XT_TIMER2_DEBUG)
41#define XT_TIMER2_DEBUG 1
42#endif
43
44#if XT_TIMER2_DEBUG
46#define XT_TIMER2_MAGIC (0x159DU)
47#endif
48
50#define XT_TIMER2_FREE_MAGIC ((void *)0xA1B2C3D4)
51
52/* ==================== [Typedefs] ========================================== */
53
55typedef uint32_t xt_tick2_t;
56
58typedef struct xt_timer2 xt_timer2_t;
59
66typedef void (*xt_timer2_cb_t)(xt_timer2_t *t, void *user_data);
67
75struct xt_timer2 {
78 void *user_data;
80#if XT_TIMER2_DEBUG
81 volatile uint16_t magic;
82#endif
83};
84
85/* ==================== [Global Prototypes] ================================= */
86
100xt_timer2_t *xt_timer2_new(xt_timer2_cb_t timer_cb, void *user_data);
101
115
131 xt_timer2_cb_t timer_cb,
132 void *user_data);
133
149 xt_tick2_t tick_timeout);
150
162
173
183
193
204
228
238void xt_timer2_sys_setup(xt_timer2_t *pool_buf, size_t pool_count);
239
248
257
264
271
281
282/* ==================== [Macros] ============================================ */
283 /* xt_timer2 */
285
286#ifdef __cplusplus
287} /* extern "C" */
288#endif
289
290#endif /* __XT_TIMER2_H__ */
int32_t xt_err_t
错误码类型
void xt_timer2_enable_custom_tick(bool enable)
启停自定义 tick 模式(测试用)
xt_err_t xt_timer2_stop(xt_timer2_t *t)
停止定时器,从工作链表摘下
xt_err_t xt_timer2_delete(xt_timer2_t *t)
删除定时器并释放内存
xt_err_t xt_timer2_set_user_data(xt_timer2_t *t, void *user_data)
设置用户数据
xt_tick2_t xt_timer2_remain(xt_tick2_t timeout_tick)
计算剩余超时 tick 数(有符号差值,天然回绕安全)
xt_tick2_t xt_timer2_handler(void)
定时器主循环处理函数,需在主循环中周期性调用
void xt_timer2_sys_setup(xt_timer2_t *pool_buf, size_t pool_count)
初始化定时器子系统内存池
xt_timer2_t * xt_timer2_new(xt_timer2_cb_t timer_cb, void *user_data)
动态分配并初始化一个定时器
void(* xt_timer2_cb_t)(xt_timer2_t *t, void *user_data)
定时器回调函数类型
xt_err_t xt_timer2_setup(xt_timer2_t *t, xt_timer2_cb_t timer_cb, void *user_data)
配置定时器回调函数和用户数据(不启动)
void xt_tick2_inc(xt_tick2_t inc)
手动推进自定义 tick
xt_err_t xt_timer2_start(xt_timer2_t *t, xt_tick2_t tick_timeout)
启动/重启定时器,挂入工作链表
xt_err_t xt_timer2_set_cb(xt_timer2_t *t, xt_timer2_cb_t cb)
设置回调函数
xt_tick2_t xt_tick2_get(void)
获取当前系统 tick 值
struct xt_timer2 xt_timer2_t
定时器句柄(前向声明)
uint32_t xt_tick2_t
tick 类型,32 位无符号
bool xt_timer2_is_running(xt_timer2_t *t)
查询定时器是否在工作链表上
void xt_tick2_set(xt_tick2_t val)
手动设置自定义 tick 值
void xt_timer2_sys_reset(void)
重置定时器子系统运行时状态(仅测试/调试用)
定时器对象
volatile uint16_t magic
volatile xt_timer2_cb_t cb_func
struct xt_list_node node
void * user_data
xt_tick2_t tick_timeout
XTINY 总头文件