- 博客(31)
- 资源 (6)
- 收藏
- 关注
原创 超高性价比的AI视觉开发板开箱
最近呢,立创开发板又出了一块AI视觉开发板。当时是首发价格非常公道,我就第一时间购买了。可以点击下面的超链接查看详细的开发板介绍。开发板拿到手里,就迫不及待的打开了,开发板本身十分的小巧,也符合立创开发板的设计风格。时间流逝、年龄增长,是自己的磨炼、对知识技术的应用,还有那不变的一颗对嵌入式热爱的心!希望大家给我的文章和B站视频。立创庐山派K230开箱上手。1.人脸关键特征识别。2.人脸关键分区识别。
2025-01-04 19:47:57
317
原创 嵌入式项目需求是怎样的?
国家需要发展制造业,制造业离不开工业自动化,所以我想制作一个相关的贴合行业实际的教程,帮助大家学习工业自动化相关的技能。时间流逝、年龄增长,是自己的磨炼、对知识技术的应用,还有那不变的一颗对嵌入式热爱的心!嵌入式项目的开发其实离不开项目需求,任何项目都是以满足项目需求为目的的。项目需求不仅只有功能相关的需求,还有其它的一些需求,比如技术需求。项目目标更像是我们的一个口号,决定我们的项目的思想。4、项目功能与非功能需求。4、项目功能与非功能需求。
2025-01-04 14:39:39
187
原创 工业通信协议有多少种?
本文介绍了工业通信协议有多少种?工业通信协议与普通协议有什么区别。工业通信协议如何进行分类,并简单介绍对应的一些代表性协议。总结适合初学者的工业通信协议。
2024-09-22 12:31:22
3114
原创 用C语言手写动态内存管理
设计一个动态内存管理的数据结构,用于管理整个内存池,包括Used、Free内存块的链表头储存,已经使用内存大小的储存等信息。该动态内存管理支持多段内存同时管理、内存合并、最佳匹配申请、内存申请记录、内存溢出检测等功能。
2024-07-26 14:13:02
780
原创 FlashDB的TS数据库的标准ANSI C移植验证
1、引言本文目录1、引言2、环境准备3、修改驱动4、验证暂无,可以关注我的B站账号等待更新。1、引言在当今数据驱动的时代,高效可靠的数据存储与管理对于嵌入式系统及物联网(IoT)应用至关重要。FlashDB数据库以其轻量级、高性能和低功耗的特性,在资源有限的嵌入式环境中脱颖而出。由于最近需要在项目上进行日志存储,所以选择FlashDB的ts数据进行日志存储。今天在标准ANSI C环境中进行验证。2、环境准备。
2024-06-14 14:04:52
1136
1
原创 移植fatfs制作内存文件系统
这一实践不仅有助于理解FatFs的工作机制,也为开发者提供了一个高效测试和验证FatFs配置的平台。:使用f_open函数创建一个新文件或打开已存在的文件,然后使用f_write函数将数据写入文件。文件进行了微调,并将不同的设备驱动,放在别的文件了(利于软件分层)。时间流逝、年龄增长,是自己的磨炼、对知识技术的应用,还有那不变的一颗对嵌入式热爱的心!点击图中的橙色框,进行下载,注意下载的为R0.15版本。文件中,这个版本的fatfs提供了三种类型的驱动接口,暂无,可以关注我的B站账号等待更新。
2024-06-14 13:35:05
992
原创 纯C实现的ymodem库,无额外依赖
YMODEM使用数据包进行文件传输,每个数据包通常为1024字节(1KB),比XMODEM的128字节要大得多,从而提高了传输效率。通过这种方式,YMODEM协议实现了可靠且高效的文件传输,适用于需要稳定数据传输的嵌入式系统和其他应用场景。接收方接收到EOT信号后,返回一个ACK信号确认,并等待下一个文件的头文件数据包,或者断开连接。时间流逝、年龄增长,是自己的磨炼、对知识技术的应用,还有那不变的一颗对嵌入式热爱的心!发送方和接收方建立连接后,发送方首先发送一个包含文件信息的头文件数据包。
2024-06-13 19:10:55
4096
17
原创 Lua实现自定义函数面向对象编程
通过实际的代码示例和详细的解释,您将学会如何在Lua中创建类和对象、实现继承和封装等OOP概念,从而为您的Lua项目增添更强大的结构和功能。Lua作为一种轻量级且灵活的脚本语言,虽然没有内置的面向对象编程(OOP)支持,但其强大的表(table)机制和元表(metatable)特性使得我们可以通过特定的编程模式来模拟OOP。通过这些代码示例,我们可以看到,尽管Lua没有原生支持OOP,但通过灵活运用表和元表,我们可以有效地实现面向对象编程,为代码带来更高的可读性和可维护性。希望大家给我的文章和B站视频。
2024-06-13 18:33:23
1093
原创 在Lua解释器中注册自定义函数库
在这种情况下,开发者需要将自定义函数库注册到Lua解释器中,从而扩展其功能,满足特定的应用场景。每个函数必须遵循Lua规定的函数签名,即返回类型为int,参数为lua_State*。编写库的注册函数:该函数会将函数表注册到Lua解释器中。通常,这个函数会调用luaL_newlib或luaL_register(取决于Lua的版本)来创建一个新的Lua表,并将所有函数添加到这个表中。在Lua解释器中注册自定义函数库的过程实际上是将C/C++等其他语言编写的函数暴露给Lua脚本,以便Lua能够调用这些函数。
2024-06-13 18:16:58
1226
原创 在Lua解释器中注册自定义函数
如国这个注册的lua函数存在参数输入,在Lua中调用C函数时,所有参数都通过栈传递。在C函数中,将结果返回给Lua时,需要将结果压入栈中,并且返回结果的数量。但只是开始,我们移植lua解释器更多的是为了能让lua解释器能控制我们的硬件或者逻辑,这样lua与底层C语言的交互就尤其重要了。时间流逝、年龄增长,是自己的磨炼、对知识技术的应用,还有那不变的一颗对嵌入式热爱的心!第二个参数是lua解释器中的别名,第三个是C语言中的函数指针。这个函数返回当前栈的大小,也就是传递给函数的参数个数。
2024-06-13 08:36:20
1378
原创 Lua解释器裁剪
这个图上记录了5.4.6版本中所有Lua解释器源码对应的作用,其中棕色的标记的文件就是我们此次要进行裁剪的功能对应的文件。:根据特定应用场景的需求,裁剪解释器可以集成特定的C库或功能,实现高度定制化的解决方案,提高软件的适应性和灵活性。时间流逝、年龄增长,是自己的磨炼、对知识技术的应用,还有那不变的一颗对嵌入式热爱的心!关于lua解释器的裁剪就完成了,对其裁剪有利于嵌入式的应用,满足更多的使用场景。所有的测试仍然可以通过,说明我们的裁剪没有对我们需要的功能造成影响。
2024-06-12 19:45:36
1234
原创 Lua移植到标准ANSI C环境
这个Lua脚本验证了我们需要的基本语法、数据类型、变量、循环、流程控制、函数、运算符、字符串、数组、迭代器、table(表)、元表(Metatable)、错误处理、垃圾回收、面向对象等功能。复制项目构建模板,修改名字,修改CMakeLists.txt和kconfig文件,方便后续模块化移植到自己的项目中,目录结构如下。由于我在window环境下,我可以很轻松的打开文件,所以直接采用的文件读取的方式执行。时间流逝、年龄增长,是自己的磨炼、对知识技术的应用,还有那不变的一颗对嵌入式热爱的心!
2024-06-08 15:48:34
1205
原创 Doxygen自动生成api接口文档
它从源代码注释自动生成文档,解析类、函数和变量的信息,以生成HTML和PDF等格式的输出。通过简化和标准化文档过程,Doxygen增强了跨不同编程语言和项目规模的协作和维护。时间流逝、年龄增长,是自己的磨炼、对知识技术的应用,还有那不变的一颗对嵌入式热爱的心!在生成目前下会生成对应的文件(前面选择了哪些文件输出,就会输出哪些),然后回车,就会快速生成对应的格式的注释框架,手动填充完整就好。如果不愿意手动写注释,可以去看看这篇文档,使用AI自动完成注释。暂无,可以关注我的B站账号等待更新。
2024-05-31 10:34:50
839
原创 AI自动生成注释(通义灵码)
在写代码时,总是不想写注释,甚至不屑于写注释。但当后面别人阅读你的代码时,就会懵逼,甚至几个月后,自己看到也懵逼。时间流逝、年龄增长,是自己的磨炼、对知识技术的应用,还有那不变的一颗对嵌入式热爱的心!这个时候,就需要一个AI,帮你搞定注释:通义灵码!选择对应的函数,点击函数上方的下来框,选择"生成注释"点击下图这个按钮,将没有注释的代码替换成有注释的代码。打开VS Code,应用商店搜索通义灵码,安装插件。登录对应的账号,登录成功即可返回。
2024-05-30 18:27:44
2097
原创 基于RFC5424的Syslog的介绍和自制日志组件
那问题就来了,不同的项目,采用不一样的日子格式,那大家的日志就不通用,查看起来会很麻烦。通一个系统下的不同设备采用不同的日志格式,那最后日志信息汇总时,五花八门的日志格式会让人眼花缭乱。同时,自定义的日志格式如果没有特定的上位机解析软件,那日志的查看筛选将变得十分负责。时间流逝、年龄增长,是自己的磨炼、对知识技术的应用,还有那不变的一颗对嵌入式热爱的心!所以,syslog来了,一个标准的、通用的日志格式框架。3、基于RFC5424的syslog详解。
2024-05-30 13:12:12
913
3
原创 Cmake+Kconfig项目构建
提供了用于cmake和Kconfig协同配置的工程模板 利用kconfig生成的配置关键字,用于控制camke的编译过程 同时关键字产生对应的宏定义,用于对应的代码实现
2024-04-02 14:34:38
1651
原创 sline--简单的命令行工具
sline"这个名字是由"command line”(命令行)这个概念派生而来的。它将"command line"的首字母"C"替换为"S",形成了"sline"。"sline"是一种简化和易于使用的命令行工具。它可能提供了更简洁、直观的命令语法和界面,帮助用户更轻松地执行各种操作。"sline"可能通过减少冗余的命令参数、提供快捷键或别名、自动补全等功能,简化了命令行操作的复杂性,使用户能够更高效地使用命令行工具。
2023-06-11 22:21:27
548
原创 Git入门学习笔记
Git入门学习笔记---------------------------------------------------------------------------------------手动分割线--------------------------------------------------------------------------------文章目录Git入门学习笔记一、为什么学习Git二、Git基础知识三、Git常用命令四、Git指令全集----------------------
2022-05-12 19:42:14
298
1
原创 STM32使用片内FLASH制作小U盘(STM32+FLASH+MSC)
STM32使用片内FLASH制作U盘(STM32+FLASH+MSC)文章目录STM32使用片内FLASH制作U盘(STM32+FLASH+MSC)一、设计原因二、与别人不同的地方三、硬件原理四、CubeMx配置一、设计原因由于平时使用stm32的板子没有带SD卡,有时候也用不了SD的那么大的容量,stm32内部的flash容量都十分充裕。多以产生了使用stm32的片内flash制作一个USB小U盘的想法。二、与别人不同的地方使用自带的flash加上fatfs文件系统,再使用USB的MSC功能就
2022-03-09 14:37:09
10622
9
原创 怎么才算是高级点灯工程师?
怎么才算是高级点灯工程师?文章目录怎么才算是高级点灯工程师?一、前言二、初级工程师一、前言相信大家在学习嵌入式的时候,第一个工程就是点灯!学嵌入式点灯,就和学软件打印“Hello World”一样基础。就来梳理一下,点灯工程师从初级到高级~~二、初级工程师相必绝大多数的嵌入式工程师开始学习都是使用51单片机或者32单片机。在学习这些单片机的时候,往往第一个实例工程就是使用开发板点亮一个led灯。因为只要你的板子能正常点灯,那就说明你的板子供电正常、MCU程序烧写工作正常,其实这也是一
2022-02-26 17:05:58
387
原创 RT-Thread Studio与CubeMX联合编程(超级详细)
RT-Thread Studio与CubeMX联合编程本文章参考以下文章:https://blog.youkuaiyun.com/qq_40824852/article/details/122596043https://zhuanlan.zhihu.com/p/395106066https://blog.youkuaiyun.com/m0_37697335/article/details/108890584一、简介经过上次对RT-Thread Studio的初步尝试,发现RT-Thread Studio中存在官方支
2022-02-22 16:43:44
27503
29
原创 RT-Thread Studio 尝试记录
RT-Thread Studio 使用记录(1)一、简介一站式的 RT-Thread 开发工具,通过简单易用的图形化配置系统以及丰富的软件包和组件资源,让物联网开发变得简单和高效。二、下载RT-Thread Studio 下载链接。三、安装一路下一步。等到安装完成四、启动选择账号登录。进入初始界面。五、新建项目新建完工程,出现以下文件夹其中RT-Thread Settings 可以配置RT-Thread相关设置CubeMX Settings 可以进行芯片引脚相关的
2022-01-20 10:44:52
12760
原创 常见编程命名方法,看看你属于哪一种?
常见编程命名方法一、前言编程中,变量、函数、类千千万,他们的名字也千千万,有的殊途同归,有的天差地别……合适的命名方法,让你的代码就是注释,别人一看就懂;不合适的命名方法,就算你一行代码十行注释,别人还是蒙圈!标题...
2022-01-13 13:36:02
1626
原创 GD32使用HAL库(CubeMX生成代码)编程(直接替换同型号STM32替换)
GD32直接使用HAL库(CubeMX生成代码)编程本文章参考以下文章:无。一、使用背景由于最近芯片价格高涨,STM32出现高价格与缺货的囧况。https://baijiahao.baidu.com/s?id=1709133215644206348&wfr=spider&for=pc与此同时,在各个设备上的国产化需求也日益旺盛。以往较多的低端设备上,或者定制化嵌入式设备中都采用的意法半导体公司的STM32芯片作为主控制器,但由于受到上述两点的影响,设备采用国产化芯片成了
2021-12-31 15:20:41
23664
9
原创 采用C语言实现提取字符串中浮点型数字
采用C语言实现提取字符串中浮点型数字本文参考以下文章:https://www.cnblogs.com/kangjianwei101/p/5220336.html一、适用范围适用于标准C语言的应用环境(比如c51、stm32单片机),除<stdio.h>外,不需要使用其他头文件。二、提取思想请结合代码来看,代码在下文:1.对字符串数组进行从前到后进行遍历,由于标准的C语言字符串以‘\0’结尾,采用while循环while ( *Str != '\0' );2.在遍历过程中进行字
2021-12-24 11:44:18
6953
2
原创 采用迟滞比较的简单比较法
采用迟滞比较的简单比较法本文章图片来源于网络,如有侵权,联系删除。参考以下文章:这里是引用一、临界值抖动问题采用单一临界值来进行转态切换时,会遇到状态抖动。在模拟电路中,解决这类问题大多可以采用低通滤波+施密特触发器来解决。在实际编程中遇到同类问题,同样可以借助施密特触发器的迟滞特性来完成临界值的判断。...
2021-12-17 14:00:59
1810
1
原创 基于HAL库的多串口打印函数(XL_Printf)
基于HAL库的多串口打印函数(XL_Printf)本文参考以下文章:https://blog.youkuaiyun.com/sehanlingfeng/article/details/80383117https://baike.baidu.com/item/va_list/8573665?fr=aladdin一、重定向Printf的局限性使用重定向函数,需要添加stdio.h头文件// 重定向函数1int fputc(int ch,FILE *f){ uint8_t temp[1]={c
2021-12-15 11:18:38
1289
原创 基于CUBEMX的FREERTOS 调试函数记录
基于CUBEMX的FREERTOS 调试函数记录参考了以下帖子,介绍部分我不再赘述,参考帖子中有介绍。https://www.pianshen.com/article/2233283539/https://blog.youkuaiyun.com/weixin_39270987/article/details/113523534https://blog.youkuaiyun.com/ba_wang_mao/article/details/107644953一、使用函数使用了 以下函数:vTaskList()、vTa
2021-12-14 13:11:06
1002
1
嵌入式开发:不止C语言一条路.pptx
2024-06-02
STM32G474采用串口空闲接收中断实现MODBUS-RTU协议框架
2022-04-15
STM32使用片内FLASH制作小U盘(STM32+FLASH+MSC)
2022-03-18
RT-Thread Studio与CubeMX联合编程例程
2022-02-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人