# soft-timer **Repository Path**: plant-some-trees/soft-timer ## Basic Information - **Project Name**: soft-timer - **Description**: 一个轻量级的软件定时器管理系统,适用于嵌入式系统(如STM32、ESP32等),支持单次触发和循环触发两种模式,提供定时器的动态启停、状态监控等功能。 - **Primary Language**: C - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-08 - **Last Updated**: 2025-09-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 软件定时器 (soft_timer) ## 介绍 这是一个轻量级的软件定时器库,可以用于嵌入式系统或其他需要定时功能的场景。它支持周期性定时器和一次性定时器,能够注册回调函数并管理多个定时器。 ## 功能特性 - 支持周期性定时器和一次性定时器。 - 可以获取定时器状态。 - 提供关闭单个或所有定时器的接口。 - 支持回调函数注册。 - 包含定时器处理和监控功能。 ## 文件结构 - `soft_timer.c`:软件定时器的核心实现。 - `soft_timer.h`:软件定时器的头文件,定义结构和接口。 - `soft_timer_demo.c`:提供示例用法和测试代码。 ## 使用方法 1. **注册定时器回调函数**:使用 `timer_tick_register` 注册系统tick获取函数。 2. **初始化定时器**:为每个定时器分配内存并初始化。 3. **设置定时器**: - 周期性定时器:调用 `soft_timer_cycle`。 - 一次性定时器:调用 `soft_timer_once`。 4. **处理定时器**:在主循环中调用 `soft_timer_handle` 来触发回调。 5. **监控定时器**:使用 `soft_timer_monitor` 查看定时器状态。 ## 示例 `soft_timer_demo.c` 提供了一个示例测试函数 `soft_timer_test`,演示了如何使用定时器功能,包括回调函数定义和定时器初始化。 ## API 说明 - `void timer_tick_register(call_back call_fun)`:注册系统tick回调函数。 - `void soft_timer_cycle(SOFT_TIMER_t *ptimer, uint32_t value, void (*function)(void))`:设置周期性定时器。 - `void soft_timer_once(SOFT_TIMER_t *ptimer, void (*function)(void))`:设置一次性定时器。 - `uint8_t soft_timer_state_get(SOFT_TIMER_t *ptimer)`:获取定时器当前状态。 - `void soft_timer_to_close(SOFT_TIMER_t *ptimer)`:关闭单个定时器。 - `void soft_timer_all_close(SOFT_TIMER_t *ptimer, uint8_t max_num)`:关闭所有定时器。 - `void soft_timer_handle(SOFT_TIMER_t *ptimer, uint8_t max_num)`:处理定时器逻辑,需要定期调用。 - `void soft_timer_monitor(char *dst)`:监控并输出定时器状态信息。 ## 注意事项 - 需要实现 `system_tick_get` 函数以获取系统tick。 - 定时器列表和最大数量由用户定义,确保资源合理分配。 ## 许可证 请查看 `LICENSE` 文件以了解项目许可证信息。 --- 如需进一步开发或贡献代码,请参考项目文档和代码注释。