# softtimer
**Repository Path**: tanchenxi/softtimer
## Basic Information
- **Project Name**: softtimer
- **Description**: 一个简单的软件定时器组件,可用于裸机及OS环境
- **Primary Language**: C++
- **License**: MulanPSL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-01-15
- **Last Updated**: 2025-03-31
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# softtimer
#### 介绍
一个简单的软件定时器组件,可用于裸机及OS环境;
该组件为了方便裸机环境开发缩写,虽可以用于OS环境,但OS环境普遍都有完善的软件定时器功能;
不过如果前期业务是在裸机环境下使用了本组件,迁移到OS环境此代码依旧可用;
#### 软件架构
代码非常简单,使用C++向对象方式编写,每当创建一个softtimer 对象,该对象将自动加入一个专用的softtimer对象列表,该组件通过该列表管理所有的softtimer对象;
#### 安装教程
直接添加到你的代码仓库中。
#### 使用说明
1. **在中断 或 线程中 定时回调 softtimer 组件的事务处理回调** ,以驱动该组件工作:
```
void Thread_Handle(void)
{
...
softtimer::process_handle(tick_value, tick_count_per_ms); //传入tick值,以及每个毫秒的tick数
...
}
void IRQ_Handle(void)
{
...
softtimer::process_handle(ms_passed); //传入每次中断经过的时间ms,如每5ms产生一次中断,则传入 5
...
}
```
2. **创建定时器** ,静态创建或动态创建均可:
```
static softtimer timer0; //静态创建
static softtimer timer1(1000, timer_cb, timer_cb_param); //静态创建并注册超时回调及回调参数
softtimer *timer2 = new softtimer; //动态创建
```
3. **开始、停止定时** :
```
timer0.start(); //开始定时
timer0.stop(); //停止定时
```
4. **设置重复**,若不设置重复,则只执行一次 :
```
timer0.set_repeat(true); //无限重复
timer0.set_repeat(true, 10); //重复10次后停止
```
5. **定时回调编写示例** :
```
void timer_cb(softtimer *timer, void *param)
{
//do something when timeout
...
//如果定时器设置为重复,可以在超时后对定时器进行操作,实现更多玩法,如:
timer->stop(); //在某次超时后,停止定时器
timer->reset(); //在某次超时,复位定时器
timer->set_callback(...); //在某次超时后,改变定时器回调
timer->set_timeout(...); //在某次超时后,改变超时时间
}
```