xt-sdk 文档
v1.0.3
xt-sdk 嵌入式 SDK API 参考
Toggle main menu visibility
载入中...
搜索中...
未找到
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
24
extern
"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
55
typedef
uint32_t
xt_tick2_t
;
56
58
typedef
struct
xt_timer2
xt_timer2_t
;
59
66
typedef
void (*
xt_timer2_cb_t
)(
xt_timer2_t
*t,
void
*
user_data
);
67
75
struct
xt_timer2
{
76
struct
xt_list_node
node
;
77
volatile
xt_timer2_cb_t
cb_func
;
78
void
*
user_data
;
79
xt_tick2_t
tick_timeout
;
80
#if XT_TIMER2_DEBUG
81
volatile
uint16_t
magic
;
82
#endif
83
};
84
85
/* ==================== [Global Prototypes] ================================= */
86
100
xt_timer2_t
*
xt_timer2_new
(
xt_timer2_cb_t
timer_cb,
void
*user_data);
101
114
xt_err_t
xt_timer2_delete
(
xt_timer2_t
*t);
115
130
xt_err_t
xt_timer2_setup
(
xt_timer2_t
*t,
131
xt_timer2_cb_t
timer_cb,
132
void
*user_data);
133
148
xt_err_t
xt_timer2_start
(
xt_timer2_t
*t,
149
xt_tick2_t
tick_timeout);
150
161
xt_err_t
xt_timer2_stop
(
xt_timer2_t
*t);
162
172
bool
xt_timer2_is_running
(
xt_timer2_t
*t);
173
182
xt_err_t
xt_timer2_set_cb
(
xt_timer2_t
*t,
xt_timer2_cb_t
cb);
183
192
xt_err_t
xt_timer2_set_user_data
(
xt_timer2_t
*t,
void
*user_data);
193
203
xt_tick2_t
xt_timer2_remain
(
xt_tick2_t
timeout_tick);
204
227
xt_tick2_t
xt_timer2_handler
(
void
);
228
238
void
xt_timer2_sys_setup
(
xt_timer2_t
*pool_buf,
size_t
pool_count);
239
247
void
xt_timer2_sys_reset
(
void
);
248
256
void
xt_timer2_enable_custom_tick
(
bool
enable);
257
263
void
xt_tick2_inc
(
xt_tick2_t
inc);
264
270
void
xt_tick2_set
(
xt_tick2_t
val);
271
280
xt_tick2_t
xt_tick2_get
(
void
);
281
282
/* ==================== [Macros] ============================================ */
283
/* xt_timer2 */
285
286
#ifdef __cplusplus
287
}
/* extern "C" */
288
#endif
289
290
#endif
/* __XT_TIMER2_H__ */
xt_err_t
int32_t xt_err_t
错误码类型
定义
xt_error.h:38
xt_timer2_enable_custom_tick
void xt_timer2_enable_custom_tick(bool enable)
启停自定义 tick 模式(测试用)
xt_timer2_stop
xt_err_t xt_timer2_stop(xt_timer2_t *t)
停止定时器,从工作链表摘下
xt_timer2_delete
xt_err_t xt_timer2_delete(xt_timer2_t *t)
删除定时器并释放内存
xt_timer2_set_user_data
xt_err_t xt_timer2_set_user_data(xt_timer2_t *t, void *user_data)
设置用户数据
xt_timer2_remain
xt_tick2_t xt_timer2_remain(xt_tick2_t timeout_tick)
计算剩余超时 tick 数(有符号差值,天然回绕安全)
xt_timer2_handler
xt_tick2_t xt_timer2_handler(void)
定时器主循环处理函数,需在主循环中周期性调用
xt_timer2_sys_setup
void xt_timer2_sys_setup(xt_timer2_t *pool_buf, size_t pool_count)
初始化定时器子系统内存池
xt_timer2_new
xt_timer2_t * xt_timer2_new(xt_timer2_cb_t timer_cb, void *user_data)
动态分配并初始化一个定时器
xt_timer2_cb_t
void(* xt_timer2_cb_t)(xt_timer2_t *t, void *user_data)
定时器回调函数类型
定义
xt_timer2.h:66
xt_timer2_setup
xt_err_t xt_timer2_setup(xt_timer2_t *t, xt_timer2_cb_t timer_cb, void *user_data)
配置定时器回调函数和用户数据(不启动)
xt_tick2_inc
void xt_tick2_inc(xt_tick2_t inc)
手动推进自定义 tick
xt_timer2_start
xt_err_t xt_timer2_start(xt_timer2_t *t, xt_tick2_t tick_timeout)
启动/重启定时器,挂入工作链表
xt_timer2_set_cb
xt_err_t xt_timer2_set_cb(xt_timer2_t *t, xt_timer2_cb_t cb)
设置回调函数
xt_tick2_get
xt_tick2_t xt_tick2_get(void)
获取当前系统 tick 值
xt_timer2_t
struct xt_timer2 xt_timer2_t
定时器句柄(前向声明)
定义
xt_timer2.h:58
xt_tick2_t
uint32_t xt_tick2_t
tick 类型,32 位无符号
定义
xt_timer2.h:55
xt_timer2_is_running
bool xt_timer2_is_running(xt_timer2_t *t)
查询定时器是否在工作链表上
xt_tick2_set
void xt_tick2_set(xt_tick2_t val)
手动设置自定义 tick 值
xt_timer2_sys_reset
void xt_timer2_sys_reset(void)
重置定时器子系统运行时状态(仅测试/调试用)
xt_list_node
定义
xt_list.h:33
xt_timer2
定时器对象
定义
xt_timer2.h:75
xt_timer2::magic
volatile uint16_t magic
定义
xt_timer2.h:81
xt_timer2::cb_func
volatile xt_timer2_cb_t cb_func
定义
xt_timer2.h:77
xt_timer2::node
struct xt_list_node node
定义
xt_timer2.h:76
xt_timer2::user_data
void * user_data
定义
xt_timer2.h:78
xt_timer2::tick_timeout
xt_tick2_t tick_timeout
定义
xt_timer2.h:79
xtiny.h
XTINY 总头文件
components
xt_task
xt_timer2.h
生成于
, 为 xt-sdk 文档使用
1.17.0