# hiTimerList **Repository Path**: GKoSon/hiTimerList ## Basic Information - **Project Name**: hiTimerList - **Description**: 当你有一个时基础(硬件定时器 或者周期执行的任务)就可以用本仓库的链表来扩展 本仓库是定时器链表 尤其适合裸机 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-15 - **Last Updated**: 2026-01-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # hiTimerList 基于单向链表的定时器扩展库 ## 项目简介 hiTimerList 是一个轻量级的高精度定时器管理库,采用单向链表(slist)数据结构实现。该项目专为嵌入式系统设计,提供了灵活的定时器注册、启动、停止和循环执行功能。 ## 主要特性 - **灵活的定时器管理**:支持动态注册和注销定时器 - **高精度定时**:基于硬件定时器中断 - **链表结构**:使用单向链表管理定时器节点,高效管理多个定时任务 - **回调机制**:通过回调函数实现定时事件处理 ## 文件结构 ``` hiTimerList/ ├── hitime.c # 定时器核心实现 ├── hitimer.h # 定时器接口定义 ├── main.c # demo演示(LED演示) ├── slist.c # 单向链表操作实现 └── slist.h # 单向链表接口定义 ``` ## 核心功能模块 ### 定时器管理(hitime.c/hitimer.h) - `timer_register_isr()` - 注册定时器中断服务 - `timer_start_time()` - 启动定时器 - `timer_stop_time()` - 停止定时器 - `hiTimer_list_loop()` - 定时器循环处理 - `time_node_add()` - 添加定时器节点 ### 链表操作(slist.c/slist.h) - `add_slist()` - 添加链表节点 - `delete_slist()` - 删除链表节点 - `search_slist()` - 查找链表节点 - `show_slist()` - 显示链表内容 ## 硬件要求 - 需要稳定的时驱 比如通用硬件定时器等 当然os任务也可以 ## 使用说明 ### 基础用法 1. **后台函数hiTimer_list_loop放在您稳定的时驱LpTim0_IRQHandler** ```c void LpTim0_IRQHandler(void) { if(TRUE==Lptim_GetItStatus(M0P_LPTIMER0)) { Lptim_ClrItStatus(M0P_LPTIMER0); hiTimer_list_loop(); } } ``` 2. **前台函数hiTimer.creat 供您注册回调函数** ```c void led_loop(void){ volatile static boolean_t ItFlag = 0; Gpio_WriteOutputIO(LED_PORT, LED_PIN, ItFlag); ItFlag = !ItFlag; } void led_init(void){ hiTimer.creat(2,1,led_loop); } ``` 3. **启动/停止回调函数 注:需要参数XXXX来源hiTimer.creat的返回值** ```c // 启动定时器 hiTimer.start(XXXX); // 停止定时器 hiTimer.start(XXXX); ``` ### LED 演示应用 项目来源: HC32L19x_DDL_Rev1.3.0/example/lptimer/lpt_lpm/source/main.c 本仓库借助小华HC32的低功耗定时器LPTIM0提供1S的时驱 真机看到LED周期2S的blink 调试看到唯一的实例节点在内存展示如下 ![WATCH](debug.png) - `led_init()` - 初始化 LED - `led_loop()` - LED 循环控制 - `LpTim0_IRQHandler()` - 定时器中断处理 ## API 参考 ### 定时器操作 | 函数 | 描述 | |------|------| | `timer_register_isr()` | 注册新的定时器 | | `timer_start_time()` | 启动指定定时器 | | `timer_stop_time()` | 停止指定定时器 | | `hiTimer_list_loop()` | 主定时器循环处理 | ### 链表操作 | 函数 | 描述 | |------|------| | `add_slist()` | 添加节点到链表 | | `delete_slist()` | 从链表删除节点 | | `search_slist()` | 查找链表节点 | | `show_slist()` | 遍历并显示链表 | ## 应用场景 - 嵌入式系统多任务定时管理 - LED 指示灯控制 - 周期性数据采集 - 实时事件处理 ## 技术原理 本项目采用中断驱动的定时器管理方式: 1. **硬件定时器** 产生精确的时间基准 2. **链表结构** 维护多个定时器节点 3. **中断处理** 快速响应定时事件 4. **回调机制** 灵活处理定时任务 ## 许可证 本项目遵循开源许可证协议。 ## 贡献指南 欢迎提交 Issue 和 Pull Request 来改进项目。 ## 一句话小结 等您准备好一个时基以后 可以用本仓库去扩展 比如1个硬件定时器 通过本仓库变成一万个 尤其适合裸机 ## 联系方式 - 项目地址:[hiTimerList](https://gitee.com/GKoSon/hiTimerList) - 作者主页:[GKoSon](https://gitee.com/GKoSon)