There are no reviews yet. Be the first to send feedback to the community and the maintainers!
wukong-robot
wukong-robot项目是由github网友wzpan等开发并维护的一个开源中文语音对话机器人项目,能够让感兴趣的开发者快速打造个性化的智能音箱。 模块化。功能插件、语音识别、语音合成、对话机器人都做到了高度模块化,第三方插件单独维护,方便继承和开发自己的插件 - 中文支持。集成百度、科大讯飞、阿里、腾讯等多家中文语音识别和语音合成技术,且可以继续扩展 - 对话机器人支持。支持基于 AnyQ 的本地对话机器人,并支持接入图灵机器人、Emotibot 等在线对话机器人 - 全局监听,离线唤醒。支持 Muse 脑机唤醒,及无接触的离线语音指令唤醒 - 灵活可配置。支持定制机器人名字,支持选择语音识别和合成的插件 - 智能家居。支持和 mqtt、HomeAssistant 等智能家居协议联动,支持语音控制智能家电 - 后台配套支持。提供配套后台,可实现远程操控、修改配置和日志查看等功能 - 开放API。可利用后端开放的API,实现更丰富的功能 - 安装简单,支持多种平台event_delay
在单片机裸机开发中,通常延时功能函数是以同步阻塞方式实现,的确在很多设备驱动中需要同步阻塞来匹配硬件时序,但这只能存在于硬件驱动层,应用层开发时使用阻塞延时便大大降低了系统实时性和安全性,不可预测就是一块心病。为此我分享出一段由朋友:流星原创的event_delay异步延时方案。使用此库便可以给N个函数增加指定延时时间,异步非阻塞方式,数据结构简单,合作式调度方式。另:此代码已在很多实体项目中使用,稳定安全。GuiLiteNew
GuiLite是一个具有5000行C++代码的准系统GUI框架,它可以在所有平台上运行(例如,iOS,Android,Linux,Windows,macOS,Docker和带或不带OS的MCU)。GuiLite是可嵌入的,它在其他UI框架内运行(例如,Qt,MFC,Winform,Cocoa)。您可以同时使用GuiLite功能和主机UI功能。GuiLite独立于OS和图形库呈现UI。GuiLite可以使用多种语言(例如,Swift,Java,C#,Golang)。cx_ringbuff
在嵌入式开发中离不开设备通信,而在通信中稳定性最高的莫过于环形缓冲区算法,当读取速度大于写入速度时,在环形缓冲区的支持下不会丢掉任何一个字节(硬件问题除外)。从.H文件中可看到Ringbuff的数据结构,当中有读写地址以及有效未读数据大小,以及读状态等。 向外部提供的API接口就是常规的读数据包,读期望帧以及匹配期望帧,整段代码可用于普通的通信数据帧读取,也可以在单片机中用于shell组件的实现。还是希望广大网 友能对我的代码进行功能补充,BUG修复等。LwRB
ringbuffer(环形缓冲区)可以说是嵌入式应用非常常用的数据缓存设计了,LwRB 是国外开发者 MaJerle 维护实现的轻量级 ringbuffer,是一个为嵌入式系统特殊优化设计的 FIFO。1. 纯ANSI C99实现, 数据类型兼容于size_t 2. 与具体硬件平台无关 3. 类FIFO缓冲设计 4. 未使用动态内存分配,纯静态内存 5. 特殊优化过的memcpy实现 6. 当用作单写/单读的管道时是线程&中断安全的 7. 适用于DMA在缓冲区和应用程序内存之间进行零拷贝开销的DMA传输 8. 支持数据查看、读跳过、写进 9. 实现对事件通知的支持cx_sch
在嵌入式软件开发当中,常常第一步就是设计整个系统的架构。有基于OS的,也有裸机的。我们先拿裸机说事儿,我想很多人在做单片机的裸机开发(甚至基于OS)时脑海里根本没有设计架构的想法,从来都是while(1)循环到底,能写点状态机已经算是基础扎实的人物了。那么问题来了,while(1)是什么?在嵌入式设计模式里是怎么给while(1)定义的。《C嵌入式编程设计模式》一书中将while(1)称之为“超循环模式”,也就是嵌入式的入门傻瓜模式。在此模式下即使有前台监听也势必会导致系统实时性傻逼,从硬件上分析:while(1)的高CPU占用率也使得功耗大大提高。当然存在即合理,超循环模式在安全性和可靠性上是非常占优势的。结构简单也易于理解,这对于安全性能要求较高的系统上还是非常具有吸引力的OfflineSWD
这是一个开源的SWD离线烧写器,非常Mini,带OLED屏,使用STM32F103RET6作为主控,基于ST官方CMSIS-DAP项目进行修改,实现可脱机、可去读保护烧写。该SWD离线烧写器功能特性如下: 1. 使用8M FLASH,可使用虚拟U盘向FLASH放置HEX文件或BIN文件进行烧写(BIN较快) 2. 可去除目标板的读保护,直接烧写(烧写后可能需要手动重启) 3. 支持手动切换模式,使离线烧写器支持DAP仿真 4. 安装驱动后可支持虚拟USB转TTL 5. 可离线使用串口调试功能(仅支持英文及常用数字符号)letter-shell
对于嵌入式应用而言,尤其是对于没有操作系统,裸机运行的嵌入式应用,迫切的需要一种高效快捷的调试手段进行嵌入式应用的开发。letter shell就是这样一个可以嵌入在程序中的shell,主要面向嵌入式设备,以C语言函数为运行单位,可以通过命令行调用,运行程序中的函数。1. 命令自动补全 2. 快捷键功能定义 3. 命令权限管理 4. 用户管理 5. 变量支持.letter shell同时支持两种形式的函数定义方式,形如main函数定义的func(int argc, char *agrv[])以及形如普通C函数的定义func(int i, char *str, ...),两种函数定义方式适用于不同的场景。FlashDB
FlashDB 是一款超轻量级的嵌入式数据库,专注于提供嵌入式产品的数据存储方案。与传统的基于文件系统的数据库不同,FlashDB 结合了 Flash 的特性,具有较强的性能及可靠性。并在保证极低的资源占用前提下,尽可能延长 Flash 使用寿命。FlashDB 提供两种数据库模式: - 键值数据库 :是一种非关系数据库,它将数据存储为键值(Key-Value)对集合,其中键作为唯一标识符。KVDB 操作简洁,可扩展性强。 - 时序数据库 :时间序列数据库 (Time Series Database , 简称 TSDB),它将数据按照 时间顺序存储 。TSDB 1. 资源占用极低,内存占用几乎为 0 ; 2. 支持 多分区,多实例 。数据量大时,可细化分区,降低检索时间; 3. 支持 磨损平衡 ,延长 Flash 寿命; 4. 支持 掉电保护 功能,可靠性高; 5. 支持 字符串及 blob 两种 KV 类型,方便用户操作; 6. 支持 KV 增量升级 ,产品固件升级后, KVDB 内容也支持自动升级; 7. 支持 修改每条 TSDB 记录的状态,方便用户进行管理;FlexibleButton
FlexibleButton 是一个基于标准 C 语言的小巧灵活的按键处理库,支持单击、连击、短按、长按、自动消抖,可以自由设置组合按键,可用于中断和低功耗场景。该按键库解耦了具体的按键硬件结构,理论上支持轻触按键与自锁按键,并可以无限扩展按键数量。另外,FlexibleButton 使用扫描的方式一次性读取所有所有的按键状态,然后通过事件回调机制上报按键事件。核心的按键扫描代码仅有三行,没错,就是经典的 三行按键扫描算法。使用 C 语言标准库 API 编写,也使得该按键库可以无缝兼容任意的处理器平台,并且支持任意 OS 和 non-OS(裸机编程)。OpenBLT
OpenBLT是一个开源引导加载程序,可以在任何微控制器上运行并使用任何类型的通信接口来执行软件更新,而无需专用的调试器硬件。该项目的特点有: - 用户友好的PC下载程序。 - 完整的源代码可用。 - 与STM32,XMC4,XCM1,Tricore,HCS12和其他基于ARM Cortex的微控制器一起使用。 - 易于移植到不同的微控制器。 - 支持常用的通讯接口,例如RS232,CAN,TCP / IP和USB。 - 支持从本地连接的存储设备(例如SD卡)进行软件更新。 - 可扩展以支持额外的存储器,例如串行EEPROM或外部闪存。 - 可扩展以支持用户定义的后门条目。nr_micro_shell
在进行调试和维护时,常常需要与单片机进行交互,获取、设置某些参数或执行某些操作,nr_micro_shell正是为满足这一需求,针对资源较少的MCU编写的基本命令行工具。虽然RT_Thread组件中已经提供了强大的finsh命令行交互工具,但对于ROM、RAM资源较少的单片机,finsh还是略显的庞大,在这些平台上,若仍想保留基本的命令行交互功能,nr_micro_shell是一个不错的选择。nr_micro_shell具有以下优点: 1.占用资源少,使用简单,灵活方便。使用过程只涉及两个shell_init()和shell()两个函数,无论是使用RTOS还是裸机都可以方便的应用该工具,不需要额外的编码工作。 2.交互体验好。完全类似于linux shell命令行,当串口终端支持ANSI(如Hypertrm终端)时,其不仅支持基本的命令行交互,还提供Tab键命令补全,查询历史命令,方向键移动光标修改功能。 3.扩展性好。nr_micro_shell为用户提供自定义命令的标准函数原型,只需要按照命令编写命令函数,并注册命令函数,即可使用命令。LiPow-
这是一个基于STM32G0的带USB type-C电源传输的锂电池充电器项目,使用了带电源传输的USB type-C为锂聚合物电池充电。支持2s-4s packs的充电和平衡,支持高达100W的充电。Mini-DSO
这是一个由STC8A8K MCU制成的简单示波器,单片机采用的是STC8A8K64S4A12工作在27MHz,显示屏采用的是0.96的OLED,分辨率为128x64。该示波器项目容易上手,涵盖必要的测量功能。支持正常模式、单模式、自动模式,有触发方式选择,如电平触发,自带保存设置。Mini-DSO输入为单通道模式,秒/格大小能支持多种:500ms,200ms,100ms,50ms,20ms,10ms,5ms,2ms,1ms,500us,200us,100us,电压采集范围为0到30V,采样率能够做到250kHz@100us/div.SerialChart
erialChart是由Sergiu Baluta开发的开源软件,它能用于实时绘制通过串行(RS-232)端口接收到的数据。它可以通过插件和WebView javascript集成来支持其他类型的端口。这个软件采用模块化的设计允许受激励的编码器添加新类型的端口、解码器和显示过滤器。 SerialChart基本数据处理流程为:端口(来自串行/USB端口的原始数据)->解码器(处理数据)->值(显示在屏幕/图表上)。ASCIIFlow
如果你对 Microsoft Visio 望而却步,对 Diagram.ly 都觉得麻烦, ASCIIFlow 可能是你的菜。ASCIIFlow 是上世纪九十年代黑客们最爱的制作流程图表方式,全文本易传播,Geek 风格的反璞归真。ASCII的文本流程图显得简洁明了,可以做到插入灵活,能够节省空间,便于移植,可以用于说明程序实现或者服务构架等等。而且这个工具直接点开网页就可以使用,十分方便!CmBacktrace---ARM-Cortex-M
CmBacktrace是RT-Thread技术总监朱天龙大神开发维护的一款针对 ARM Cortex-M 系列 MCU 的错误代码自动追踪、定位,错误原因自动分析的开源库。CmBacktrace主要特性如下: 1.支持的错误包括:断言(assert)、故障(Hard Fault, Memory Management Fault, Bus Fault, Usage Fault, Debug Fault) 2.故障原因自动诊断 :可在故障发生时,自动分析出故障的原因,定位发生故障的代码位置,而无需再手动分析繁杂的故障寄存器; 3.输出错误现场的 函数调用栈(需配合 addr2line 工具进行精确定位),还原发生错误时的现场信息,定位问题代码位置、逻辑更加快捷、精准。也可以在正常状态下使用该库,获取当前的函数调用栈; 4.支持 裸机 及以下操作系统平台:RT-Thread、UCOS、FreeRTOS(需修改源码) 5.根据错误现场状态,输出对应的 线程栈 或 C 主栈;Simple-Dynamic-Strings
Simple Dynamic Strings (简称 SDS) 是一个 C 语言字符串库,旨在通过添加堆分配的字符串来增强有限的libc字符串处理功能。SDS设计中没有使用C结构来表示字符串,而是使用存储在SDS返回给用户的字符串的实际指针之前的二进制前缀。 使用更简单; - 二进制安全; - 效率更高; - 与 C 字符串函数兼容; SDS是作者过去为满足日常C编程需要而开发的一个C字符串,后来它被移到Redis中,在那里它被广泛使用,并在那里进行了修改以适合高性能操作。现在它是从Redis中提取出来的,并作为一个独立的项目分叉。i.mx6ul_board
TencentOS-tiny
TencentOS tiny 是腾讯面向物联网领域开发的实时操作系统,具有低功耗,低资源占用,模块化,安全可靠等特点,可有效提升物联网终端产品开发效率。TencentOS tiny 提供精简的 RTOS 内核,内核组件可裁剪可配置,可快速移植到多种主流 MCU (如 STM32 全系列)及模组芯片上。而且,基于 RTOS 内核提供了丰富的物联网组件,内部集成主流物联网协议栈(如 CoAP/MQTT/TLS/DTLS/LoRaWAN/NB-IoT 等),可助力物联网终端设备及业务快速接入腾讯云物联网平台。CPlusPlusThings
Patterns-for-Time-Triggered-Embedded-Systems
AnnotatedVersion
awesome-cpp
DUGI_COIDEA_NUC972
stm32_kfifo
MQTT
MultiTimer
MultiTimer 是网友 0x1abin 开发的一个纯软件定时器扩展模块,可无限扩展你所需的定时器任务,取代传统的标志位判断方式, 更优雅更便捷地管理程序的时间触发时序。hello-algorithm
EasyFlash
cJSONNew
JSON是一种轻量级的数据交换格式,可以把JSON的结构理解成无序的、可嵌套的key-value键值对集合,这些key-value键值对以结构体或数组的形式来组织的。cJSON是C语言写的一个JSON解析库。Serial
cpp11_muduo
lede_nuc970
tcpshm
Cmockery-
CMockery 是 Google 发布的用于 C 单元测试的一个轻量级的框架。它很小巧,对其他开源包没有依赖,对被测试代码侵入性小。CMockery 的源代码行数不到 3K,阅读一下 will_return 和 mock 的源代码就一目了然了1. 免费且开源,Google 提供技术支持; 2. 轻量级的框架,使测试更加快速简单; 3. 避免使用复杂的编译器特性,对老版本的编译器来讲,兼容性好; 4. 并不强制要求待测代码必须依赖 C99 标准,这一特性对许多嵌入式系统的开发很有用。Love Open Source and this site? Check out how you can help us