
C/C++开源库
文章平均质量分 85
C/C++开源库是程序员们开发和共享代码的重要资源,提供了丰富的功能和工具,帮助简化软件开发过程。这些库涵盖了各种领域,包括图形处理、网络通信、数据处理和机器学习等,用户可以根据自己的需求灵活使用和修改。通过利用开源库,开发者能够加速项目进展,提高代码质量,并与社区协作,共同推动技术进步。
机载软件与适航
全网同名,公众号【机载软件与适航】主理人
展开
-
Windows环境下C语言开源库汇总
以上列出的开源库覆盖了Windows环境下C语言开发的多个领域,包括日志记录、单元测试、网络通信、加密、多媒体处理和物联网通信等。这些库提供了强大的功能,能够帮助开发者更高效地完成项目。你可以根据具体项目需求选择合适的库进行集成和开发。原创 2024-09-06 22:11:38 · 1252 阅读 · 0 评论 -
嵌入式中实现应用层和硬件层分层管理
以STM32为例,打开网络上下载的例程或者是购买开发板自带的例程,都会发现应用层中会有stm32f10x.h或者stm32f10x_gpio.h,这些文件严格来时属于硬件层的,如果软件层出现这些文件会显得很乱。https://gitee.com/schuck/cola_os来源:https://blog.csdn.net/ziqi5543/article/details/101512722。本次只实现如下接口,device_open 和device_close等剩下的接口可以自行研究。原创 2023-08-27 21:25:05 · 829 阅读 · 0 评论 -
分享一个小巧的Linux C 日志模块(附代码)
已剪辑自: https://mp.weixin.qq.com/s/_yFPakSkjqc_k0rikRnVrw在产品研发的过程中,经常需要借助打印信息来帮助调试和后期维护。所以拥有一个完善的日志模块是至关重要的。如下是从经手的项目中整理出来的日志模块及使用示例,以备后续项目开发时使用。(备注:Linux环境下)原创 2023-07-03 23:00:57 · 869 阅读 · 0 评论 -
一个应用于嵌入式的通用工具包!
循环队列、软件定时器、事件集。•Queue循环队列\1. 支持动态、静态方式进行队列的创建与删除。\2. 可独立配置缓冲区大小。\3. 支持数据最新保持功能,当配置此模式并且缓冲区已满,若有新的数据存入,将会移除最早数据,并保持缓冲区已满。•Timer软件定时器\1. 支持动态、静态方式进行定时器的创建与删除。\2. 支持循环单次模式。\3. 可配置有无超时回调函数。\4. 可配置定时器工作在周期或间隔模式。原创 2023-04-16 22:46:10 · 358 阅读 · 0 评论 -
实战总结!18种接口优化方案的总结
有些小伙伴说,不知道如何使用并行优化接口?我之前写过一篇文章并行优化接口的文章,保姆级别的!原创 2023-04-01 23:46:01 · 423 阅读 · 0 评论 -
mbedtls 库基础及其应用
SSL/TLS加密的介绍,重点是mbedtls的基础以及移植说明。原创 2023-02-19 11:21:41 · 5707 阅读 · 0 评论 -
软件定时器库
因为主程序轮流查询定时器状态,加上前面的回调函数执行的时间,实际执行回调时间与期望的延时时间存在一定误差。在硬件资源充足的情况下,可以将数组改为链表,按delay从小到大排序,新启动的定时器按顺序插入到合适的位置,这样主程序查询速度会加快,在最近的软件定时器,也就是第一个软件定时器超时前可以休眠省电。增加申请定时器资源的接口,在10个定时器池中获取没有被使用的,将index下标返回,再传入timer_statrt,同样的定义,可以满足10个定时任务同时运行,提高了定时器的利用率。原创 2023-02-19 11:17:14 · 366 阅读 · 0 评论 -
一个适用于单片机的开源网络协议栈
onps是一个开源且完全自主开发的国产网络协议栈,适用于资源受限的单片机系统,提供完整地ethernet/ppp/tcp/ip协议族实现,同时提供sntp、dns、ping等网络工具,支持以太网环境下dhcp动态ip地址申请,也支持动态及静态路由表。协议栈还封装实现了一个伯克利套接字(Berkeley sockets)层。该层并没有完全按照Berkeley sockets标准设计实现,而是我根据以往socket编程经验,以方便用户使用、简化用户编码为设计目标,重新声明并定义了一组常见socket接口函数:原创 2023-02-19 10:51:14 · 482 阅读 · 0 评论 -
可参考的通信数据接收解析方法
对此,这里提出了一种新的解决方案,可以通用与所有类似的数据解析,原理如下:使用一个固定容量的队列用来缓存接收到的数据,队列容量等于一帧数据的大小,每来一个数据就将数据往队列里面加,当完整接收到一帧数据时此时队列中的全部数据也就是一帧完整的数据,因此只需要判断队列是否是数据校验头,队列尾是否是数据校验尾就可以得知当前是否已经接收到了一帧完整的数据,然后在将数据从队列中取出即可。其中 AA AA 04 80 02 是数据校验头,后面三位是有效数据,问我怎么从外设不断返回的数据中取出有效的数据。原创 2022-12-09 00:35:34 · 317 阅读 · 0 评论 -
TinyFlashDB:一种超轻量的可纠错的通用单片机Flash存储方案
结构体功能:在TinyFlashDB中,API的操作都需要指定的参数index,该index结构体中存储了flash的地址,flash的大小,存储的变量的长度,结束标志位。在读取flash扇区时会去校验此信息。函数功能:从index指向的扇区中获取一个index中指定变量长度的变量,flash头部数据校验出错不会重新初始化flash。参数 index:tfdb操作的index指针。原创 2022-12-02 23:21:00 · 722 阅读 · 0 评论 -
一个开源且完全自主开发的国产网络协议栈
为了适应单片机系统对内存使用极度变态的苛刻要求,onps协议栈在设计之初即考虑采用写时零复制(zero copy)技术。用户层数据在向下层协议传递过程中,协议栈采用buf list链表技术将它们链接到一起,直至将其发送出去,均无须任何内存复制操作。另外,协议栈采用buddy算法提供安全、可靠的动态内存管理功能,以期最大限度地提高协议栈运行过程中的内存利用率并尽可能地减少内存碎片。原创 2022-11-29 21:53:14 · 1956 阅读 · 0 评论 -
【C/C++开源库】环形队列,消息队列库
一、环形队列库之前介绍过一个环形缓冲库:【C语言开源库】在CLion上使用一个轻量的适合嵌入式系统的环形缓冲库ring buffer 和C语言Unity单元测试框架环形缓冲库的设置是非常灵活的,可以根据实际项目的需要来设计。下面分享一些环形缓冲库的设置,可以参考一下:https://github.com/MaJerle/lwrb数据结构之环形缓冲区-C语言实现[C语言创建循环缓冲区(环形缓冲区)-- Circular Buffer](https://www.cnblogs.com/youngju原创 2022-05-20 18:45:20 · 2784 阅读 · 0 评论 -
【C/C++开源库】适合嵌入式的定时器调度器
一、背景在嵌入式软件中,我们经常需要使用定时功能,比如每1s执行某个功能,比如触发了某个条件之后持续1s。如果每次遇到定时的功能,我们都自己去计数,这会让我们的代码很混乱,因此我们有必要准备几个好用的定时器调度器模块。二、MultiTimer简介MultiTimer 是一个软件定时器扩展模块,可无限扩展你所需的定时器任务,取代传统的标志位判断方式, 更优雅更便捷地管理程序的时间触发时序。项目地址:https://github.com/0x1abin/MultiTimer/blob/developm原创 2022-05-20 18:44:00 · 2171 阅读 · 0 评论 -
什么是模块化,怎么写一个好的C语言模块?通过标准库,开源库,驱动库学习
文章目录什么是模块化1什么是模块化2为啥要用模块化模块化具体原理:3模块化基本代码实现:c语言中条件编译相关的预编译指令4模块化编程注意事项外设库,硬件库,驱动库stm32f10x_gpio.hstm32f10x_gpio.c开源库,软件库,组件库lwrb.hlwrb.c标准库,系统库总结什么是模块化1什么是模块化模块化编程就是把我们的一整个项目,分成很多模块(比如一个学生成绩查询可以分为,登陆,查询,修改保存,退出等模块)而一个程序工程包含多个源文件(.c 文件和 .h 文件),每个 .c 文件可原创 2022-04-29 23:25:37 · 3582 阅读 · 2 评论 -
【C/C++开源库】适合单片机/嵌入式的C语言单元测试库
一、为什么需要单元测试?最近在项目开发过程中,有个感悟:作为软件开发人员,应当对自己写的代码进行基本的单元测试。所谓基本的单元测试是包括该软件开发人员所复杂模块中所有函数的基本功能测试,异常处理等。完成这些基本的单元测试可以保证该函数该模块的基本功能。在软件开发的过程中,程序员写bug几乎是不可避免的。但是写完代码之后,对该代码进行基本的功能测试可以保证该代码基本可用,可能存在bug,但是正常情况下的基本功能可以实现。别看这个实现正常情况下的基本功能这个要求看起来简单,但其实经常被大家忽略。在此重新强调原创 2022-03-13 14:32:28 · 8385 阅读 · 2 评论 -
【C/C++开源库】单片机/嵌入式中的C语言日志库
日志系统在系统开发和调整过程中的重要性,大家应该都清楚,特别是项目出问题之后,却没有日志可以帮忙定位问题,就非常令人痛苦。因为我们不可能一直通过调试器去单步调试程序,所以设备的运行日志显得尤为重要。通常我们对日志有这些要求:不同的日志级别(Debug,Warning, Info, Error, Fatal);日志打印要和printf一样简单易用;能够设置日志级别;占用空间小;可配置,甚至可以禁用日志;基于不同日志级别,支持颜色高亮;可以自定义配置,时间戳;支持RTOS;以上是比较基原创 2022-03-05 21:31:48 · 6962 阅读 · 4 评论 -
【C/C++开源库】C/C++矩阵运算开源库
文章目录一、C++矩阵运算库 - eigen1.下载及安装1.1Linux安装及配置1.2Windows配置2.测试使用2.1DevC++2.2Clion3.深入学习二、C++矩阵运算库 - Armadillo1.下载及安装1.1Linux安装1.2Windows配置2.测试使用3.深入学习三、C++矩阵运算库 - boost四、C语言矩阵运算库 -1.C语言矩阵库12.C语言矩阵库23.C语言矩阵库34.C语言矩阵库45.C语言矩阵库56.C语言矩阵库67.C语言矩阵库78.C语言矩阵库89.C语言矩阵库原创 2021-08-20 01:21:22 · 15979 阅读 · 2 评论 -
日志系统模块基础、C语言实现一个日志模块、zlog日志模块基础
文章目录一、日志系统模块基础收集日志1. 日志等级一定要规范2. error日志内容一定要详实 ,info日志要简洁易懂3. error日志一定是全局统一收集的管理日志1. 单个文件的大小要控制2. 日志要便于浏览3. 日志的安全性要得到保障4. 日志要定期清理分析日志二、C语言实现一个日志系统模块1.C语言日志系统12.C语言日志系统23.zlog日志系统Chapter 1 zlog是什么?Chapter 2 zlog不是什么?Chapter 3 Hello World3.1 编译和安装zlog3.2 应原创 2021-12-13 22:56:42 · 5882 阅读 · 2 评论 -
【C语言开源库】lw_oopc:轻量级的C语言面向对象编程框架
文章目录轻量级的面向对象C语言编程框架LW_OOPC介绍摘要s为什么要用面向对象?为什么不直接使用C++?LW_OOPC是什么?LW_OOPC宏介绍问题描述解决方案方案的可扩展性如何?LW_OOPC最佳实践LW_OOPC的优点LW_OOPC的缺点总结幕后花絮参考资料轻量级的面向对象C语言编程框架LW_OOPC介绍轻量级的面向对象C语言编程框架LW_OOPC介绍摘要s本文介绍一种轻量级的面向对象的C语言编程框架: LW_OOPC. LW_OOPC是Light-Weight Object-Oriente原创 2021-11-07 20:22:10 · 3413 阅读 · 0 评论 -
推荐一些嵌入式、C/C++的开源库和项目
前言想用代码实现一个功能时,我们可以先看看是否有前辈已经实现了该功能,并且开源分享在网上。一般我们自己造出来的轮子的可用性基本上是很难和大神们造的轮子相比的。因此多了解一下优秀的开源库的使用,可以让我们编码的时候少走很多弯路。之前我就做了一个系列博客,关于分享C、C++的开源库。文章如下:【C语言开源库】在Clion上使用开源库cJSON【C语言开源库】C语言必备实用第三方库Melon(包括数据结构算法)【C语言开源库】C语言开源库zlog的使用【C语言开源库】在CLion上使用一个轻量的适合原创 2021-11-06 09:00:09 · 7200 阅读 · 0 评论 -
【C++开源库】Windows和linux下好用的串口通讯API库
前情提要之前写了两篇关于串口的博客虚拟串口模拟器和串口调试助手使用教程C语言程序周期接收虚拟串口发送的数据第一篇主要介绍了虚拟串口模拟器和串口调试助手的使用方法和软件推荐。第二篇主要使用了上面两种软件加上C语言程序进行了周期性接收虚拟串口发送的数据,之前的C语言代码用来测试是可以的,但是如果实际项目中需要使用串口通讯,我们最好还是将串口通讯包装成一个可复用的模块比较好,下面我就来推荐一个好用的C++语言的串口通讯模块,并且结合虚拟串口模拟器和串口调试助手给出实例。github地址:http原创 2021-08-06 14:23:00 · 417 阅读 · 1 评论 -
【C语言开源库】 一个只有500行代码的开源http服务器:Tinyhttpd
项目搬运地址:Tinyhttpd源码解析博客:HTTP服务器的本质:tinyhttpd源码分析及拓展[Tinyhttpd精读解析]Tinyhttpd 源码解析TinyHTTPd 源码分析演示首先确保你的linux上安装了 gcc,make,Perl,Perl-CGI在某个目录下//将远程仓库的源代码克隆到你的linux上git clone https://github.com/EZLippi/Tinyhttpd//编译生成目标文件make//执行./http输入了执原创 2021-08-06 14:09:43 · 811 阅读 · 0 评论 -
【C语言开源库】在CLion上使用一个轻量的适合嵌入式系统的环形缓冲库ring buffer 和C语言Unity单元测试框架
项目地址:ring bufferdocumentation:LwRB latest-develop documentationFeaturesWritten in ANSI C99, compatible with size_t for size data typesPlatform independent, no architecture specific codeFIFO (First In First Out) buffer implementationNo dynamic memory原创 2021-08-01 16:29:04 · 2210 阅读 · 1 评论 -
【C语言开源库】C语言开源库zlog的使用
前面的cJSON库和环形缓冲库源文件数目都只有几个,所以我们使用的时候都是直接把这几个源文件放到我们的项目中使用,这次的zlog的源文件有四十多个,如果也和前面一样把源文件加入到项目中,会使得项目源文件管理起来复杂,因此我们需要将这些源文件编译成库文件。在我们的项目中使用库文件和相应的头文件即可。但是因为这个库中的源文件会依赖很多linux上的库函数,因此,想要直接把文件加入到Clion项目中直接编译是不可能的,因此我们需要在linux上将该开源库编译成库文件,我们在CLion上直接使用库文件和头文件即可原创 2021-08-01 16:26:52 · 1777 阅读 · 0 评论 -
【C语言开源库】C语言必备实用第三方库Melon(包括数据结构算法)
简介Melon 是一个用于简化开发的 C 框架库。 它包括许多数据结构、算法、体系结构和许多其他有用的组件。 您可以根据自己的需求选择一些组件或整个框架。 Melon 通过模块开发支持多进程和多线程模型。在 Windows 上,框架无法激活,但其他组件仍在工作。melon GitHub地址:Melonmelon中文帮助文档:中文手册安装Windows与UNIX环境的安装并无差异,仅需要先行安装并配置mingw、git bash以及make即可。执行如下命令安装Melon:$ git clon原创 2021-08-01 16:24:56 · 9204 阅读 · 0 评论 -
【C语言开源库】在Clion上使用开源库cJSON
本篇文章是基于这篇文章进行的测试使用,cJSON使用详细教程 | 一个轻量级C语言JSON解析器Clion的简单介绍Clion是通过cmake来管理构建项目的,因此我们在创建完一个项目时,会自动生成一个CMakeLists.txt,cmake就是通过这个文件来生成makefile,来构建项目。我们在Clion上新建一个C语言执行项目创建完之后,会自动生成一个main.c文件和一个CMakeLists.txt文件。cJSON使用起来很简单,只需要把cJSON.h和cJSON.c复制到我们的项目中即原创 2021-08-01 16:23:00 · 1623 阅读 · 1 评论