# 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(...); //在某次超时后,改变超时时间 } ```