一个用纯 C99 写的小型高效日志库,只有两个文件,不需要任何第三方依赖

log.c是一款仅含log.c和log.h两个文件的纯C99日志库,无需任何第三方依赖即可快速集成到嵌入式项目中。它提供六种日志级别、多输出目标(stderr/文件/回调)、线程安全锁机制等核心功能,完美解决printf混乱、错误码映射繁琐等痛点。支持彩色输出、自定义回调对接RTOS队列,虽无内置日志滚动功能,但可通过源码扩展满足需求。几十KB体积、零学习成本,是嵌入式开发者告别日志烦恼的首选方案。

一个用纯 C99 写的小型高效日志库,只有两个文件,不需要任何第三方依赖

写了多年C语言,从满屏printf到各种臃肿的日志框架,直到遇见log.c才找到最佳答案。这个纯C99实现的日志库只有两个文件,零第三方依赖,却提供了时间戳、文件行号、颜色区分、日志分级、文件输出、回调扩展等完整功能。支持多线程安全,可一键静音,生产环境调高日志级别即可节省磁盘和性能。简单到扔进项目就能用,强大到覆盖99%的日志需求,是嵌入式和小型项目的理想选择。在这个动不动就搞几百兆框架的年代,这种几百行代码解决核心问题的小而美,简直就是一股清流。

nanoprintf:一个超轻量级的 snprintf/vsnprintf 实现,纯 C99 单头文件,无 malloc

nanoprintf是一个专为嵌入式设计的超轻量级snprintf/vsnprintf实现,纯C99单头文件,无malloc,栈空间仅需100字节。针对Cortex-M0编译仅580-2800字节。它解决了嵌入式开发中stdio.h带来的syscall和文件描述符累赘问题,支持通过回调函数直接将字符发送到串口、I2C、CAN等总线。可按需禁用浮点、二进制等功能进一步压缩体积,兼容Clang/GCC/MSVC。适合Bootloader、固件日志等空间极度紧张又需要基本格式化输出能力的场景。

lwbtn:一套用 C11 写的按钮库,专门帮你把各种按键的去抖、单击、双击、长按全搞定,不依赖任何操作系统,零动态内存分配

lwbtn是一款专为嵌入式开发者设计的C11按钮库,完美解决按键去抖、单击、双击、长按等常见需求。它不依赖任何操作系统,无需动态内存分配,在资源紧张的MCU上也能稳定运行。开发者只需实现两个回调函数即可快速集成,库内部自动维护状态机,彻底告别手写状态机的繁琐与易错问题。

lwrb:一个用C11实现的超轻量级超简洁的 FIFO 环形缓冲区库

lwrb是一个超轻量级的C11实现FIFO环形缓冲区库,专为资源受限的嵌入式场景设计。它采用静态数组完全避免动态内存分配,支持单写单读模式下的线程/中断安全,零拷贝特性使其完美适配DMA传输。代码简洁高效,跨平台兼容性好,MIT开源许可可随意商用。无论是MCU、DSP还是AVR项目,lwrb都能帮你快速实现可靠的数据队列,是嵌入式开发中数据搬运的利器。

一个用纯 C99 写的小型高效日志库,只有两个文件,不需要任何第三方依赖

log.c是一个纯C99编写的轻量级日志库,仅包含log.c和log.h两个文件,无需任何第三方依赖。它统一了嵌入式开发中的日志接口,提供TRACE到FATAL六个日志级别,支持多输出目标(串口、文件、回调),并具备线程安全特性。文章详细介绍了其安装使用方法、核心API及优缺点对比,是嵌入式项目日志管理的理想选择。

nanoprintf:一个超轻量级的 snprintf/vsnprintf 实现,纯 C99 单头文件,无 malloc

nanoprintf是一款专为嵌入式设计的超轻量级printf实现,纯C99单头文件,无malloc,栈空间占用不到100字节。针对Cortex-M0编译仅580-2800字节,支持snprintf、vsnprintf、pprintf等核心API,可通过回调函数直接输出到串口、I2C、CAN等总线。提供浮点、二进制等可选功能,零syscall,兼容性极佳,是Bootloader和固件开发的理想选择。

lwbtn:一个用 C11 编写的超轻量级按键管理库,不依赖操作系统,零动态内存

lwbtn是一个超轻量级的C11按键管理库,专为嵌入式设备设计。它不依赖任何操作系统,无需动态内存分配,只需提供毫秒级时间源即可工作。支持单击、多击、长按、保活等多种事件,内置软件防抖功能,兼容STM32、Arduino、Win32等平台。这个库把复杂的按键状态机封装成简单易用的API,让开发者告别手写繁琐的按键逻辑,非常适合资源受限的MCU项目使用。

uLog:一个专为资源受限的嵌入式设备设计的超轻量级结构化日志库

uLog是一款专为资源受限嵌入式设备设计的超轻量级结构化日志库,采用纯C语言实现,仅需一个.h和一个.c文件即可使用。它支持CRITICAL、ERROR、WARNING、INFO、DEBUG、TRACE六档日志级别,可实现多路输出(console、文件、内存buffer),每个输出通道独立设置阈值。最核心的特性是编译期开关,定义ULOG_ENABLED时生成日志代码,未定义时完全零开销、零占用。无需任何外部依赖,适合各种裸机或RTOS环境,是嵌入式开发者的理想日志解决方案。

C-Periphery:一个用纯 C 写成的Linux用户态外设访问库,支持 GPIO、LED、PWM、SPI、I²C、等接口

c-periphery是一个纯C语言编写的Linux用户态外设访问库,完美支持GPIO、LED、PWM、SPI、I²C、MMIO、Serial等接口。它将散落在/sys、/dev、mmap等处的复杂调用统一封装为简洁API,让开发者告别繁琐的底层操作。该库具有重入安全、零额外依赖、静态/共享库可选等优势,一套API通吃树莓派、BeagleBone等嵌入式平台,大幅降低开发成本,提升项目效率。