1 Star 4 Fork 4

wei / soft_timer

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
soft_timer.h 2.71 KB
一键复制 编辑 原始数据 按行查看 历史
#ifndef __SOFT_TIMER_H
#define __SOFT_TIMER_H
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
typedef void (*sft_tmr_callback_t)(void *);
struct sft_tmr_t;
//内存管理钩子
struct memory_management_hooks_t {
void *(*malloc_fn)(uint32_t sz);
void (*free_fn)(void *ptr);
};
/**
* @brief 初始化内存管理钩子函数
* @param hooks: 用户传递的钩子函数结构
* @retval void
*/
void sft_tmr_init_hooks(struct memory_management_hooks_t *hooks);
/**
* @brief 创建一个定时器
* @param sft_tmr: 作为定时器句柄返回
* @param period: 定时器超时值
* @param auto_reload: 是否自动重装载(非零则定时器到期后自动进行重装载)
* @param tmr_callBack: 定时器到期执行的回调函数
* @param para: 回调函数入参
* @retval <0:失败,>=0成功
*/
int32_t sft_tmr_create(struct sft_tmr_t **sft_tmr, uint32_t period, uint32_t auto_reload, sft_tmr_callback_t tmr_callBack, void *para);
/**
* @brief 删除一个定时器
* @param sft_tmr: 对应定时器句柄
* @retval void
*/
void sft_tmr_delete(struct sft_tmr_t *sft_tmr);
/**
* @brief 修改定时器的超时值(更改后需要重启定时器)
* @param sft_tmr: 对应定时器句柄
* @param period: 定时器超时值
* @retval void
*/
void sft_tmr_change_period(struct sft_tmr_t *sft_tmr, uint32_t period);
/**
* @brief 获取定时器的超时值
* @param sft_tmr: 对应定时器句柄
* @retval 0:失败,>0:欲获取的定时器的超时值
*/
uint32_t sft_tmr_get_period(struct sft_tmr_t *sft_tmr);
/**
* @brief 重定向定时器的回调函数
* @param sft_tmr: 对应定时器句柄
* @param tmr_callBack: 定时器到期执行的回调函数
* @param para: 回调函数入参
* @retval void
*/
void sft_tmr_redirect_callback(struct sft_tmr_t *sft_tmr, sft_tmr_callback_t tmr_callBack, void *para);
/**
* @brief 启动定时器(如果定时器已经启动,则更新到期时间)
* @param sft_tmr: 对应定时器句柄
* @param triger_now: 是否立即触发(非零则立即触发)
* @retval void
*/
void sft_tmr_start(struct sft_tmr_t *sft_tmr, uint32_t triger_now);
/**
* @brief 暂停定时器
* @param sft_tmr: 对应定时器句柄
* @retval void
*/
void sft_tmr_pause(struct sft_tmr_t *sft_tmr);
/**
* @brief 定时器tick自增,强烈建议以1ms为单位
* @retval void
*/
void sft_tmr_inc_tick(void);
/**
* @brief 定时器主循环,当相应定时器到期后执行用户回调
* @retval void
*/
void sft_tmr_loop(void);
/**
* @brief 定时器遍历
* @note 仅用于调试
* @retval void
*/
void tmr_list_for_each(void);
#endif/*__SOFT_TIMER_H*/
C
1
https://gitee.com/wei513723/soft_timer.git
git@gitee.com:wei513723/soft_timer.git
wei513723
soft_timer
soft_timer
master

搜索帮助