Timer HAL 接口文档#
硬件介绍#
K230 内部集成了 6 路硬件定时器(Timer0~Timer5),支持向上计数模式。每个定时器可独立配置频率、周期和工作模式。同时提供软件定时器功能,基于 POSIX timer 实现,可用于对精度要求不高的定时场景。
数据结构说明#
rt_hwtimer_info_t
#
描述:定时器硬件特性信息。
maxfreq
:支持的最大计数频率minfreq
:支持的最小计数频率maxcnt
:计数器最大值cntmode
:计数模式(HWTIMER_CNTMODE_UP:向上计数)
rt_hwtimer_mode_t
#
描述:定时器工作模式枚举。
HWTIMER_MODE_ONESHOT
:单次触发模式HWTIMER_MODE_PERIOD
:周期触发模式
timer_irq_callback
#
描述:定时器中断回调函数类型。
typedef void (*timer_irq_callback)(void* args);
硬件定时器接口#
int drv_hard_timer_inst_create(int id, drv_hard_timer_inst_t** inst);
#
功能:创建硬件定时器实例。
参数:
id
:定时器编号,范围[0, 5]
inst
:用于存储创建的定时器实例指针
返回值:
0
:成功负值
:失败
void drv_hard_timer_inst_destroy(drv_hard_timer_inst_t** inst);
#
功能:销毁硬件定时器实例,释放资源。
参数:
inst
:定时器实例指针的指针
int drv_hard_timer_get_info(drv_hard_timer_inst_t* inst, rt_hwtimer_info_t* info);
#
功能:获取定时器硬件特性信息。
参数:
inst
:定时器实例指针info
:用于存储定时器信息的结构体指针
返回值:
0
:成功-1
:失败
int drv_hard_timer_set_mode(drv_hard_timer_inst_t* inst, rt_hwtimer_mode_t mode);
#
功能:设置定时器工作模式。必须在定时器停止状态下设置。
参数:
inst
:定时器实例指针mode
:工作模式(单次或周期)
返回值:
0
:成功-1
:失败
int drv_hard_timer_set_freq(drv_hard_timer_inst_t* inst, uint32_t freq);
#
功能:设置定时器计数频率。必须在定时器停止状态下设置。
参数:
inst
:定时器实例指针freq
:计数频率(Hz),需在硬件支持的范围内
返回值:
0
:成功-1
:失败
int drv_hard_timer_set_period(drv_hard_timer_inst_t* inst, uint32_t period_ms);
#
功能:设置定时器周期。必须在定时器停止状态下设置。
参数:
inst
:定时器实例指针period_ms
:定时周期(毫秒)
返回值:
0
:成功-1
:失败(周期超出范围)
int drv_hard_timer_get_freq(drv_hard_timer_inst_t* inst, uint32_t* freq);
#
功能:获取定时器当前计数频率。
参数:
inst
:定时器实例指针freq
:用于存储频率值的指针(Hz)
返回值:
0
:成功-1
:失败
int drv_hard_timer_start(drv_hard_timer_inst_t* inst);
#
功能:启动定时器。
参数:
inst
:定时器实例指针
返回值:
0
:成功-1
:失败
int drv_hard_timer_stop(drv_hard_timer_inst_t* inst);
#
功能:停止定时器。
参数:
inst
:定时器实例指针
返回值:
0
:成功-1
:失败
int drv_hard_timer_register_irq(drv_hard_timer_inst_t* inst, timer_irq_callback callback, void* userargs);
#
功能:注册定时器中断回调函数。必须在定时器停止状态下注册。
参数:
inst
:定时器实例指针callback
:中断回调函数userargs
:传递给回调函数的用户参数
返回值:
0
:成功-1
:失败
int drv_hard_timer_unregister_irq(drv_hard_timer_inst_t* inst);
#
功能:注销定时器中断回调。必须在定时器停止状态下注销。
参数:
inst
:定时器实例指针
返回值:
0
:成功-1
:失败
辅助函数#
int drv_hard_timer_get_id(drv_hard_timer_inst_t* inst);
#
功能:获取定时器编号。
int drv_hard_timer_is_started(drv_hard_timer_inst_t* inst);
#
功能:查询定时器是否已启动。
软件定时器接口#
int drv_soft_timer_create(drv_soft_timer_inst_t** inst);
#
功能:创建软件定时器实例。系统只支持一个软件定时器实例。
参数:
inst
:用于存储创建的定时器实例指针
返回值:
0
:成功-1
:失败
void drv_soft_timer_destroy(drv_soft_timer_inst_t** inst);
#
功能:销毁软件定时器实例。
参数:
inst
:定时器实例指针的指针
int drv_soft_timer_set_mode(drv_soft_timer_inst_t* inst, rt_hwtimer_mode_t mode);
#
功能:设置软件定时器工作模式。必须在定时器停止状态下设置。
参数:
inst
:定时器实例指针mode
:工作模式(单次或周期)
返回值:
0
:成功-1
:失败
int drv_soft_timer_set_period(drv_soft_timer_inst_t* inst, int period_ms);
#
功能:设置软件定时器周期。必须在定时器停止状态下设置。
参数:
inst
:定时器实例指针period_ms
:定时周期(毫秒)
返回值:
0
:成功-1
:失败
int drv_soft_timer_start(drv_soft_timer_inst_t* inst);
#
功能:启动软件定时器。
参数:
inst
:定时器实例指针
返回值:
0
:成功-1
:失败
int drv_soft_timer_stop(drv_soft_timer_inst_t* inst);
#
功能:停止软件定时器。
参数:
inst
:定时器实例指针
返回值:
0
:成功-1
:失败
int drv_soft_timer_register_irq(drv_soft_timer_inst_t* inst, timer_irq_callback callback, void* userargs);
#
功能:注册软件定时器回调函数。必须在定时器停止状态下注册。
参数:
inst
:定时器实例指针callback
:回调函数userargs
:传递给回调函数的用户参数
返回值:
0
:成功-1
:失败
int drv_soft_timer_unregister_irq(drv_soft_timer_inst_t* inst);
#
功能:注销软件定时器回调。必须在定时器停止状态下注销。
参数:
inst
:定时器实例指针
返回值:
0
:成功-1
:失败
int drv_soft_timer_is_started(drv_soft_timer_inst_t* inst);
#
功能:查询软件定时器是否已启动。
参数:
inst
:定时器实例指针
返回值:
1
:已启动0
:未启动
使用示例#
请参考src/rtsmart/libs/testcases/rtsmart_hal/test_timer.c