# rtos-tools **Repository Path**: theres-a-bottle/rtos-tools ## Basic Information - **Project Name**: rtos-tools - **Description**: 一些rtos实用的开源仓库 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-02 - **Last Updated**: 2025-07-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 说明 此仓库包含一些针对嵌入式的一些实用仓库的链接,将他们声明为了子模块以便查看。 ## 文件结构 ```shell ❯ tree -L 2 . |-- README.md |-- agreement | `-- ymodem |-- database | `-- flash-db |-- driver | |-- MultiButton | |-- easy_button | `-- easy_button-Application `-- general |-- list `-- toolkit ``` # agreement ## ymodem https://github.com/chxaitz/Ymodem-rotate-state-machine Ymodem是一个基于状态机轮转的非死循环的传输协议。你所要做的就是,在完成几个底层接口之后,只需要在上层,接收数据之后,根据当前是下载数据还是上传数据,相应的调用ymodem_rx_put( char *buf, size_t len);或ymodem_tx_put( char *buf, size_t len);函数即可。他的主要特征 标准C,方便移植; 非死循环,可用于非OS的嵌入式环境下,在后台完成传输操作; # database ## flash-db https://github.com/armink/FlashDB/blob/master/README_zh.md FlashDB 是一款超轻量级的嵌入式数据库,专注于提供嵌入式产品的数据存储方案。FlashDB 不仅支持传统的基于文件系统的数据库模式,而且结合了 Flash 的特性,具有较强的性能及可靠性。并在保证极低的资源占用前提下,尽可能延长 Flash 使用寿命。 FlashDB 提供两种数据库模式: 键值数据库 :是一种非关系数据库,它将数据存储为键值(Key-Value)对集合,其中键作为唯一标识符。KVDB 操作简洁,可扩展性强。 时序数据库 :时间序列数据库 (Time Series Database , 简称 TSDB),它将数据按照 时间顺序存储 。TSDB 数据具有时间戳,数据存储量大,插入及查询性能高。 # driver ## MultiButton https://github.com/0x1abin/MultiButton 一个高效、灵活的多按键状态机库,支持多种按键事件检测。 功能特性 ✅ 多种按键事件: 按下、抬起、单击、双击、长按开始、长按保持、重复按下 ✅ 硬件去抖: 内置数字滤波,消除按键抖动 ✅ 状态机驱动: 清晰的状态转换逻辑,可靠性高 ✅ 多按键支持: 支持无限数量的按键实例 ✅ 回调机制: 灵活的事件回调函数注册 ✅ 内存优化: 紧凑的数据结构,低内存占用 ✅ 配置灵活: 可自定义时间参数和功能选项 ✅ 参数验证: 完善的错误检查和边界条件处理 ## easy_button https://github.com/bobwenstudy/easy_button ``` easy_button FlexibleButton MultiButton lwbtn 最大支持按键数 无限 32 无限 无限 按键时间参数独立配置 支持 支持 部分支持 支持 单个按键RAM Size(Bytes) 20(ebtn_btn_t) 28(flex_button_t) 44(Button) 48(lwbtn_btn_t) 支持组合按键 支持 不支持 不支持 不支持 支持静态注册(可以省Code Size) 支持 不支持 不支持 支持 支持动态注册 支持 支持 支持 不支持 单击最大次数 无限 无限 2 无限 长按种类 无限 1 1 无限 批量扫描支持 支持 不支持 不支持 不支持 ``` ## easy_button-Application https://github.com/Sighthesia/easy_button-Application/blob/main/README_CN.md 一个基于 easy_button (一个功能强大的嵌入式按键管理库)实现的按键检测基础应用示例。该实现采用硬件抽象设计理念,将应用层、硬件抽象层和适配层进行解耦分离,具备良好的可移植性。 # general ## list https://github.com/Akagi201/list Port linux kernel list.h to userspace ## toolkit https://github.com/cproape/toolkit ToolKit是一套应用于嵌入式系统的通用工具包,可灵活应用到有无RTOS的程序中,采用C语言面向对象的思路实现各个功能,尽可能最大化的复用代码,目前为止工具包包含:循环队列、软件定时器、事件集。 Queue 循环队列 - 支持动态、静态方式进行队列的创建与删除。 - 可独立配置缓冲区大小。 - 支持数据最新保持功能,当配置此模式并且缓冲区已满,若有新的数据存入,将会移除最早数据,并保持缓冲区已满。 Timer 软件定时器 - 支持动态、静态方式进行定时器的创建与删除。 - 支持循环、单次模式。 - 可配置有无超时回调函数。 - 可配置定时器工作在周期或间隔模式。 - 使用双向链表,超时统一管理,不会因为增加定时器而增加超时判断代码。 Event 事件集 - 支持动态、静态方式进行事件集的创建与删除。 - 每个事件最大支持32个标志位。 - 事件的触发可配置为**“标志与”和“标志或”**。 ``` toolkit ├── include // 包含文件目录 | ├── toolkit.h // toolkit头文件 | └── toolkit_cfg.h // toolkit配置文件 ├── src // toolkit源码目录 | ├── tk_queue.c // 循环队列源码 | ├── tk_timer.c // 软件定时器源码 | └── tk_event.c // 事件集源码 ├── samples // 例子 | ├── tk_queue_samples.c // 循环队列使用例程源码 | ├── tk_timer_samples.c // 软件定时器使用例程源码 | └── tk_event_samples.c // 事件集使用例程源码 └── README.md // 说明文档 ```