# software_timer **Repository Path**: LONGZR007/software_timer ## Basic Information - **Project Name**: software_timer - **Description**: 软件定时器,同时支持静态和动态分配 - **Primary Language**: C - **License**: GPL-3.0 - **Default Branch**: c - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 7 - **Forks**: 0 - **Created**: 2021-11-16 - **Last Updated**: 2025-04-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: timer, 定时器 ## README # Software Timer #### 介绍 基于链表的软件定时器,支持动态分配内存也支持数组方式。 #### 软件架构 软件架构说明,这么个简单的玩意没有架构可言吧。 #### 安装教程 1. 双击```example/Software timer.sln```使用VS2019进行体验。 2. 复制```software_timer```文件到你的项目中; 3. 在```software_timer.h```中定义```TIMER_ARRAY_CFG```或```TIMER_MALLOC_CFG```,具体含有请看注释; 4. 实现```timer_get_tick()```来获取时间戳; 5. 在main主程序或在定时中断中调用```software_timer_check()```。 #### 使用说明 1. 创建定时器 - 当你在创建后不需要操作定时器时: - software_timer_create()函数,用于创建一个定时器,创建的定时器不可以控制其启动、停止和删除: - ```interval```参数:用来指定定时时间; - ```flag```参数:用来表示定时器创建后启动还是停止的,也表示定时器是单次的还是循环的; - ```timer_callback```参数:定时到时的回调函数; - ```data```参数:为用户参数; - 函数返回:```TIMER_SUCCEED```:创建成功,```TIMER_FAIL```:创建失败; - 当你在创建后需要操作定时器时: - software_timer_create_ex()函数,用于创建一个定时器,创建的定时器可以控制其启动、停止和删除: - ```timer```参数:一个指向software_timer_t实体的指针类型,不能为空指针; - ```interval```参数:用来指定定时时间; - ```flag```参数:用来表示定时器创建后启动还是停止的,也表示定时器是单次的还是循环的; - ```timer_callback```参数:定时到时的回调函数; - ```data```参数:为用户参数; - 函数返回:```TIMER_SUCCEED```:创建成功,```TIMER_FAIL```:创建失败; - software_timer_malloc_create_ex()函数,动态创建一个可控制定时器,使用这种方式创建定时器可以解决定时器重新分配后,在外部调用上一个删除定 时器而删除重新分配定时器的问题: - ```timer```参数:定时器控制句柄,指向software_timer_t **的指针,不能为NULL,也不能为局部变量; - ```interval```参数:用来指定定时时间; - ```flag```参数:用来表示定时器创建后启动还是停止的,也表示定时器是单次的还是循环的; - ```timer_callback```参数:定时到时的回调函数; - ```data```参数:为用户参数; - 函数返回:```TIMER_SUCCEED```:创建成功,```TIMER_FAIL```:创建失败; 1. software_timer_start()函数,用于启动定时器: - ```timer```参数:定时器控制句柄 1. software_timer_stop()函数,用于停止定时器: - ```timer```参数:定时器控制句柄 1. software_timer_delete()函数,用于删除定时器: - ```timer```参数:定时器控制句柄 1. software_timer_is_exist()函数,用于检测定时器是否存在: - ```timer```参数:定时器控制句柄 - 函数返回:```TIMER_SUCCEED```:定时器存在,```TIMER_FAIL```:定时器不存在; #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request