1 Star 0 Fork 2

Genicre / soft_timer

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
soft_timer.h 3.02 KB
一键复制 编辑 原始数据 按行查看 历史
Genicre 提交于 2023-04-04 18:52 . init
/*******************************************************************************
** File Name: softtimer.h
** note: softtimer
** Author: lijw
** Version: 1.0
** Created Data: 2023-04-02
** islijw@163.com
**
** Copyright (c) 2023 lijw
** All rights reserved.
*******************************************************************************/
#ifndef __SOFT_TIMER_H__
#define __SOFT_TIMER_H__
#include <stdio.h>
#include <stdint.h>
#include <stddef.h>
/* 临界区 */
#define SOFT_TIMER_ENTER_CRITICAL()
#define SOFT_TIMER_EXIT_CRITICAL()
/* ticks定义 */
typedef uint32_t soft_timer_ticks_t;
/* 函数返回 */
typedef enum _soft_timer_status_t
{
soft_timer_error = 0,
soft_timer_ok = 1,
}soft_timer_status_t;
/* 定时器链表 */
typedef struct _soft_timer_list_item_t
{
struct _soft_timer_list_item_t * next;
struct _soft_timer_list_item_t * prev;
}soft_timer_list_item_t;
/* 定时器回调函数定义 */
typedef void soft_timer_cb_t(void*);
/* 定时器结构 */
typedef struct _soft_timer_t
{
int times; /* 重载次数,-1为永久 */
soft_timer_ticks_t interval; /* 计时周期,单位ticks */
soft_timer_ticks_t last_ticks; /* 上一次计数溢出值 */
soft_timer_list_item_t item; /* 定时器链表节点 */
soft_timer_cb_t *cb; /* 溢出回调函数 */
void *parm; /* 回调函数参数 */
}soft_timer_t;
/**
* @brief 此函数需放入定时器中,作为软件定时器的ticks源
* @param none
* @note 软件定时器周期ticks由本函数决定
* @Sample usage:
***/
void soft_timer_inc_ticks(void);
/*
* @brief 添加一个软件定时器,添加之后即开始定时
* @param 定时器的指针
* @param 执行次数,-1为循环执行
* @param 执行间隔
* @param 回调函数
* @param 参数
* @note
* @Sample usage:
***/
soft_timer_status_t soft_timer_add(soft_timer_t *ptimer, int times, soft_timer_ticks_t interval, soft_timer_cb_t *cb, void* parm);
/**
* @brief
* @param
* @note
* @Sample usage:
***/
soft_timer_status_t soft_timer_delete(soft_timer_t *ptimer);
/*
* @brief 修改一个软件定时器,修改之后重新指定开始时间,如果定时器没有添加,或者已经执行完成,即修改失败
* @param 定时器的指针
* @param 执行次数,-1为循环执行
* @param 执行间隔
* @param 回调函数
* @param 参数
* @note
* @Sample usage:
***/
soft_timer_status_t soft_timer_modify(soft_timer_t *ptimer, int times, soft_timer_ticks_t interval, soft_timer_cb_t *cb, void* parm);
/**
* @brief 定时器任务,本函数为循环调用定时器的函数,调用间隔越久,定时器间隔误差越大
* @param none
* @note
* @Sample usage:
***/
void soft_timer_loop(void);
/**
* @brief 软件延时函数,空转cpu
* @param 延时delay_ticks个ticks
* @note
* @Sample usage:
***/
void soft_timer_delay_ticks(soft_timer_ticks_t delay_ticks);
#endif
C
1
https://gitee.com/Genicre_wang/soft_timer.git
git@gitee.com:Genicre_wang/soft_timer.git
Genicre_wang
soft_timer
soft_timer
master

搜索帮助