自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(88)
  • 收藏
  • 关注

原创 Linux系统编程 | IPC对象---消息队列

IPC对象是活动在内核级别的一种进程间通信的工具。各种不同的IPC其实是在不同时期逐步引入的,在UNIX伯克利版本system-V(念作系统五,V是罗马数字,是Unix伯克利分支的版本号)中引入的三种通信方式(消息队列、共享内存和信号量组)被称为IPC对象。消息队列是system-V三种IPC对象之一,其最主要的特征是允许发送的数据携带类型,具有相同类型的数据在消息队列内部排队,读取的时候也要指定类型,然后依次读出数据。这使得消息队列用起来就像一个多管道集合。

2025-05-22 21:15:24 1023

原创 Linux系统编程 | Signal信号集

在 Linux 中,信号集(Signal Set)是一种用于管理和操作信号的数据结构。信号集是一个包含多个信号的集合,它可以用来表示一组需要被处理、阻塞或忽略的信号。每个信号在信号集中都有对应的标志位,通过对这些标志位的操作,可以方便地对一组信号进行统一的管理。

2025-05-13 21:26:45 844

原创 Linux系统编程 | 进程间Signal信号通信

在Linux操作系统中,进程间通信(Inter-Process Communication, IPC)是一个重要的概念,它允许不同的进程之间交换信息或同步它们的行为。信号(signal)是一种基本的进程间通信机制,用于通知一个进程发生了某个特定事件。信号是一种异步通信机制,一般情况下,进程什么时候会收到信号、收到什么信号是无法事先预料的。(就像你家的门铃,你不知道它什么时候会响,但是门铃响的时候我们可以下楼开门(处理))

2025-05-08 17:15:22 811

原创 Linux系统编程 | 进程间管道通信

在Linux系统中,进程间通信(Inter-Process Communication, IPC)是不同进程之间进行数据交换和同步的过程。管道是一种半双工的通信机制,通常用于具有亲缘关系的进程之间(如父子进程)。它只能在单向上传输数据。命名管道(也称为FIFO)则允许无亲缘关系的进程之间通过文件系统中的一个特殊文件进行通信。

2025-05-04 14:32:48 956

原创 Linux系统编程 | 进程的加载与替换:exec簇

在Linux中,用于加载并执行指定程序的API有exec簇和system函数。exec簇的进程替换不会创建一个新的进程,只是加载新的程序代码和数据,替换当前进程执行的程序代码。system函数的进程替换是创建一个新的子进程,然后在新的子进程里面去执行指定的命令。

2025-04-28 20:36:43 616

原创 Linux系统编程 | 精灵进程与守护进程

精灵进程又称守护进程、后台进程,在英文中称为 daemon 进程。精灵进程是运行在一个相对干净的环境、不受终端影响、常驻内存的进程,和神话中的精灵一样,拥有不死不灭的特性,长期稳定提供某种功能或服务。本文将对精灵进程、守护进程进行基础知识的梳理及其创建的过程讲解。

2025-04-23 21:57:39 904

原创 Linux系统编程 | 孤儿进程与僵尸进程

了解 ​​孤儿进程(Orphan Process)​​ 和 ​​僵尸进程(Zombie Process)​​ 是深入理解 Linux/Unix 进程管理的关键,尤其在开发高可靠性服务、调试系统问题或优化资源管理时至关重要。理解孤儿进程和僵尸进程,能帮助编写出更加可靠的多进程程序、有效管理系统资源、快速定位异常,并避免安全漏洞。这是与Linux系统开发和运维相关岗位的​​基本功​!

2025-04-20 18:12:58 977

原创 Linux系统编程 | 多进程

多进程(Multiprocessing)是操作系统提供的一种并发执行机制,允许系统同时运行多个进程。它的主要目的是提高计算机资源的利用率、增强程序的并发能力,并改善系统的整体性能。1、提高 CPU 和系统资源的利用率2、增强程序的健壮性和稳定性3、实现真正的并行计算(多核 CPU)4、提高系统的响应能力5、方便实现任务分工和模块化

2025-04-18 21:40:01 826

原创 C/C++调用Python程序代码实现混合编程笔记教程

C/C++调用Python程序代码实现混合编程笔记教程Python‌在基础开发、数据科学、人工智能、Web框架开发等领域具有广泛的支持工具和开发教程,极大的缩短了产品原型开发周期、降低了开发难度。有许多的功能,通过C/C++实现,非常的复杂并且不方便,但是Python可能就是几行代码就搞定了。为了避免处处重复造轮子,又希望在原先的C/C++通用轻松简单的实现一些功能,因此探索在C/C++中如何嵌入调用Python的API及应用程序非常有必要。

2025-04-12 21:26:26 860

原创 Windows中xxx.dll动态链接库文件转xxx.a静态库文件

Windows中xxx.dll动态链接库文件转xxx.a静态库文件笔记教程

2025-04-12 21:12:00 884

原创 Shell脚本编程之正则表达式

在 Shell 脚本中,正则表达式是一种强大且常用的文本处理工具,它可以用来匹配、搜索、替换和截取字符串。正则表达式是由一些字符去描述规则,在正则表达式中有两类字符(1)元字符(Meta Character):Shell 环境中具有特殊含义的字符,在命令行解释、文件名扩展、变量替换等方面起着关键作用。(2)普通字符:仅代表自身的字符。\元字符 ==> 普通字符正则表达式也有不同的流派(如Egrep,java,C#)很多语言都用到了正则表达式,但是这些语言中用来描述字符串规则的"元字符"不是都一样的,

2025-04-07 19:38:21 1163 2

原创 Shell脚本编程之大括号扩展

在 Shell 中,大括号扩展(Brace Expansion),通常也被称为"花括号扩展",是一种非常有用的功能,用于生成一系列字符串或文件名。它允许用户通过简短的语法快速生成多个相似的字符串或路径。这种功能在批量创建文件、生成序列数据或简化命令输入时非常方便。可以帮助我们简化代码、提高效率。注意:①、空格敏感性:大括号内部不能有空格,否则会导致错误。         ②、未匹配时不扩展:如果大括号内没有有效的模式,原样输出。         ③、与通配符的区别:大括号扩展与通配符(如 *、?)不

2025-04-03 17:22:52 793

原创 Shell脚本编程之运算符应用

Shell 和C/C++语言类似,支持多种运算符,包括:①、算数运算符②、关系运算符③、布尔运算符④、字符串运算符⑤、文件测试运算符提醒:原生的bash脚本并不支持简单的数学运算,但可以通过awk和expr等命令来实现简单的数学运算, 其中较为常见的是expr。expr 是一款表达式计算工具,使用它能完成表达式的求值操作。

2025-03-23 14:45:25 1058

原创 Shell脚本编程之流程控制

shell中的流程控制语句包括条件判断、循环结构和​流程控制命令等。Shell 脚本的流程控制在 ​嵌入式开发 和 ​Linux 运维 中扮演着至关重要的角色,能够实现自动化、资源管理和系统监控等核心任务。

2025-03-15 16:57:52 744

原创 Shell脚本编程基础篇(2)

shell编程就是通过shell语法将shell命令组合起来,写入一个文件中。将来运行这个文件时,就会执行里面的每一行shell语法,这个文件称之为shell脚本文件。通过shell脚本实现更加自动化和智能化。shell脚本就是实现Linux系统自动管理以及自动化运维所必备的工具,Linux 的底层以及基础应用软件的核心大都涉及 Shell 脚本的内容。本文将紧接上文,继续讲解shell的应用。

2025-03-10 21:49:43 845

原创 Shell脚本编程基础篇(1)

shell在英文中翻译为"贝壳",在贝壳内部就是linux系统内核,在贝壳外部就是用户。Shell 是一个应用程序,它连接了用户和 Linux 内核,让用户能够更加高效、安全、低成本地使用 Linux 内核,这就是 Shell 的本质。Shell 本身并不是内核的一部分,它只是站在内核的基础上编写的一个应用程序。对于shell而言,就是用户与内核之间的媒介。

2025-03-07 15:33:58 960

原创 Altium Designer 23打开Cadence Allegro原理图及PCB工程文件

 这篇博文的内容主要介绍如何在Altium Designer23中,打开Cadence Allegro的原理图及PCB工程文件。        在进行转换前,需要提前安装Altium Designer和Cadence软件。如果仅安装了Altium Designer,是无法正常转换打开Cadence Allegro的原理图和PCB文件的。建议这两个软件,安装发布时间相近的。

2025-02-22 17:50:33 2166

原创 Altium Designer 23原理图编译Net XXX has no driving source警告

本文着手对工程中的几个元器件的引脚出现了Net XXX has no drving source警告进行解决。有如下两种解决办法:(1)、修改元器件引脚电气属性,(2)、忽略屏蔽电气属性检测功能

2025-02-16 19:50:19 902

原创 Altium Designer 23原理图编译Duplicate Net Names Wire xxx报错

针对Altium Designer软件中原理图编译时出现的Duplicate Net Names Wire xxx错误,有效的解决措施如下:(1)、修改网络标签作用范围,(2)、离图连接器和网络标签不能同名

2025-02-16 13:04:16 1396

原创 网络编程 | HTTP协议梳理及编程实现经验教程

HTTP协议是 Hyper Text Transfer Protocol(超文本传输协议)的缩写,是一种用于从网络传输超文本到本地浏览器的传输协议。它定义了客户端与服务器之间请求和响应的格式。传统的HTTP 工作在 TCP/IP 模型之上,通常使用端口 80。最近的 HTTP/2 和 HTTP/3 则使用了更先进的传输层协议,例如基于 TCP 的二进制协议(HTTP/2)或基于UDP的 QUIC 协议(HTTP/3)。

2025-01-23 15:53:56 795

原创 网络编程 | UDP组播通信

组播是介于单播与广播之间,在一个局域网内,将某些主机添加到组中,并设置一个组地址。将数据发送到组播地址时,加入到该组的所有主机都能接收到数据。组播是主机间一对多的通信模式, 组播是一种允许一个或多个组播源发送同一报文到多个接收者的技术。类似于生活中较为常见的群聊功能,在群内的所有群员,都可以在群内发送消息给群友,也可以接收到来自任意群友的消息。

2025-01-20 21:19:34 1651

原创 网络编程 | UDP广播通信

广播是计算机网络通信中的一种通信模式,它的主要特点是将数据包发送到网络上的所有设备,而不是特定的单个设备。这种通信模式被广泛用于局域网络(LAN)中,用于向网络中的所有设备广播消息。只有用户数据报套接字(使用UDP协议)才能广播。UDP(用户数据报协议)广播是一种网络通信方式,它允许信息在同一局域网内的所有设备之间共享。

2025-01-18 21:38:17 1761

原创 网络编程 | UDP套接字通信及编程实现经验教程

TCP协议在网络通信中占主导地位,绝大多数的网络通信借助TCP协议完成数据传输。但UDP也是网络通信中不可或缺的重要通信手段。相较于TCP而言,UDP通信的形式更像是发短信。不需要在数据传输之前建立、维护连接。只专心获取数据就好。省去了三次握手的过程,通信速度可以大大提高,但与之伴随的通信的稳定性和正确率便得不到保证。因此,我们称UDP为“无连接的不可靠的报文传输协议”。

2025-01-18 19:11:42 1497 2

原创 网络编程 | TCP套接字通信及编程实现经验教程

TCP/IP协议簇中包含了如TCP、UDP、IP、ICMP、ARP、HTTP等通信协议。TCP协议是TCP/IP协议簇中最为常见且重要的通信方式之一,它为互联网上的数据传输提供了可靠性和连接管理。TCP(Transmission Control Protocol,传输控制协议)是面向连接的、可靠的、基于字节流的传输层通信协议。它主要用于在不可靠的互联网上提供可靠的数据传输。TCP被广泛应用于各种网络应用中,如Web浏览(HTTP/HTTPS)、电子邮件(SMTP、POP3、IMAP)、

2024-12-08 16:01:01 2002 1

原创 Linux修改系统及终端命令行中的用户名

Linux中,修改系统及终端命令行中的用户名数据信息。

2024-11-30 20:20:40 1985

原创 VS2022对代码文件添加管理注释说明信息

VS2022对代码文件添加管理注释说明信息!

2024-11-30 17:00:22 1049

原创 MATLAB的语音信号采集与处理分析

本文主要介绍了一种基于MATLAB的语音信号采集与处理系统的设计与实现。设计这个系统时为了提供一个交互式平台,用于语音信号的实时采集、分析和处理。系统实现的功能有:通过内置麦克风采集外部音频信号,绘制信号时域波形;利用快速傅里叶变换技术进行频谱分析,将信号的频率成分可视化;进行噪声叠加,模拟各种的噪声干扰;采用巴特沃斯滤波器进行信号滤波,去除噪声干扰;应用小波分解技术进行噪声抑制,提高信号质量;最后是实现了录音播放功能,可以更直观感受处理前后信号的变化。

2024-11-20 14:06:19 2730 3

原创 ODrive V3.6固件上位机ODriveGUI软件使用配置经验教程

本文着眼于实现ODriveGUI连接控制V3.6设备。ODrive v3.6版本后,ODrive最新的软件和硬件都已经不开源了,并且ODrive官方的网页GUI,也是只适用于最新的ODrive设备,ODrive v3.6及以下的版本是无法正常使用的。如果需要正常使用ODrive的网页上位机,需要从ODrive官网购买正版的开发板。ODrive的GUI应用程序也因为开发的时间较为久远,且插件应用程序的不断更新,在大部分的系统环境下,已经无法正常运行检测ODrive设备了。

2024-09-26 15:47:24 3047

原创 ODrive电机驱动算法VScode环境配置笔记教程

本文是对于ODrive电机驱动算法在VScode环境配置笔记教程!ODrive 是一个开源的优秀电机控制器项目,旨在为各种应用提供高性能、高可靠性的电机控制解决方案。这个项目是专门用于驱动无刷直流电机(BLDC)和永磁同步电机(PMSM)的高性能开源伺服控制系统。

2024-09-21 19:53:46 2222

原创 LVGL从SD卡读取图片并显示到MCU LCD屏详细笔记教程

LVGL支持BMP、PNG、JPG和GIF的图片显示,LVGL在MCU设备上显示图片主要如下3种方法:1、将图片转码成源代码,编译时,一起编译到程序代码中2、将图片转码成二进制bin文件,将图片拷贝到SD卡中,程序运行时进行读取显示3、将图片直接拷贝到SD卡中,通过LVGL的解码库解析显示图片。本文重点讲解如何使用LVGL在MCU设备上读取SD卡上的图片文件显示。

2024-08-27 18:09:54 5699 7

原创 BMP位图原理深度解析及编程实现RGB565图片格式转换

BMP:BMP(位图)是一种没有经过压缩的图像格式。图片的大小取决于图像的分辨率和颜色深度。BMP位图因为没有任何的压缩,因此文件尺寸都比较大,不适合在互联网上传播,优点是数据读取出来即可使用,无需任何解码器支持。

2024-08-26 21:47:57 2829 2

原创 LVGL配置FatFs文件系统,实现对STM32的SD卡数据读写

LVGL 有一个文件系统模块,可为各种类型的文件系统驱动程序提供一个通用的抽象层接口。本文将LVGL与FatFs文件系统联系起来,实现LVGL的文件系统模块对SD卡内的文件进行读取和写入等操作。

2024-08-24 17:14:46 4468 4

原创 Sqlite3数据库表内数据批量读取操作---sqlite3_stmt机制

sqlite3_stmt是 SQLite 数据库在 C 语言接口中使用的一个关键数据结构,它代表了一个“准备语句对象”(prepared statement object),也是一个预编译的 SQL 语句,预编译 SQL 语句可以提高执行效率并防止 SQL 注入攻击。这个对象是对 SQL 语句的一种封装,该 SQL 语句已经被编译成字节码形式,可以直接由 SQLite 的虚拟机执行。如果只是读取一条数据时,使用sqlite3_exec和sqlite3_stmt效率是一样的,但是当涉及到大批量的操作时,此前

2024-08-23 18:06:42 1759

原创 DLT645-2007通信协议---读取解析智能电表数据

DLT645-2007是中国电力行业规定的一种智能电表通信协议,主要用于电能表与数据采集设备之间的通信。DLT645-2007协议定义了电能表与数据采集设备之间的数据格式、通信方式、命令集等内容,用于实现电能表数据的采集、传输和管理。该协议支持多种物理通信方式,包括RS-485总线通信、红外通信和无线通信等。

2024-08-12 16:13:36 9271 1

原创 printf函数进阶---个性化彩色打印日志调试

在标准的C语言或C++中,printf 函数本身并不支持直接打印彩色文本。可以通过向终端发送特定的转义序列(ANSI转义序列)来改变文本的颜色和样式。使用printf输出日志的颜色信息,可以实现对终端打印输出的信息非常清晰明了的区分出来,将其运用到实际的项目代码中,可以更加直观的了解程序的运行状态,辅助开发者进行程序调试和优化等。

2024-08-10 21:03:10 730

原创 MDK KEIL程序代码编译成静态库文件及库引用笔记教程

在商业性的程序代码或软件中,各种静态库、动态库是非常常见的。甚至有许多的开源程序,其开放的源码工程中,也有一些程序代码是并不对外开放的,以一个静态库或动态库和一个头文件及部分说明文件的方式提供给用户,许多的核心实现细节,我们是不能直接看到的。并且,对于已经在企业工作过的开发者,对于这种方式已经习以为常了,但是依然有许多的学生群体及初入工作岗位经验不足的开发者,对于如何将源代码编译成库文件和对库文件的重要性是比较缺少认识的。

2024-07-15 17:08:40 1648

原创 MinGW编译器任意版本使用配置经验教程

MinGW(Minimalist GNU for Windows)是一个允许开发者在Windows平台上编译原生Windows应用程序的软件环境。MinGW的目标是在不引入额外的运行时依赖的情况下,能够在Windows上创建独立的应用程序。这意味着使用MinGW编译的程序不需要额外的运行时库,除非程序本身链接了这些库。在Windows环境下进行C/C++开发,MinGW提供了一个轻量级的替代方案,避免了使用像Microsoft Visual Studio这样的大型IDE。

2024-07-08 17:45:35 4375 1

原创 CANopen协议---PDO使用配置

CANopen的PDO 和 SDO 的通讯上面的区别在于,PDO 属于过程数据,即单向传输,无需接收节点回应CAN 报文来确认,从通讯术语上来说是属于“生产消费”模型。

2024-07-08 17:29:54 4468

原创 CANopen协议开发梳理总结笔记教程

CANOpen协议是一种架构在控制局域网络(Controller Area Network, CAN)上的高层通信协议,它广泛应用于工业自动化、机械工程和汽车电子等领域。CANOpen协议通过对象字典、服务数据对象(SDO)、过程数据对象(PDO)等机制,为机器人、运动控制、过程控制、楼宇自动化、交通运输等行业提供了一种标准化的通信解决方案。

2024-07-05 16:33:11 3007 4

原创 LVGL使用GUI Guider配置STM32界面详细笔记教程

GUI Guider是NXP公司为LVGL开发的一个GUI设计工具,用户可以通过直接拖放控件来设计 LVGL的GUI页面,加速 GUI的设计,并且可以导出与硬件平台无关的c语言、Python代码,非常简单方便的加入到项目中。

2024-06-20 21:52:19 11461 6

STM32移植LVGL+FatFs+FreeRTOS综合工程代码

在STM32F407开发板,针对MDK KEIL v5软件平台上,移植实现LVGL+FatFs+FreeRTOS的完整工程代码。 FatFs R0.15移植教程:https://blog.csdn.net/weixin_49337111/article/details/139332023?spm=1001.2014.3001.5501 LVGL移植教程:https://blog.csdn.net/weixin_49337111/article/details/139142416?spm=1001.2014.3001.5501 LVGL图片显示教程:https://blog.csdn.net/weixin_49337111/article/details/141609089?spm=1001.2014.3001.5501 FreeRTOS移植教程:https://blog.csdn.net/weixin_49337111/article/details/135079595?spm=1001.2014.3001.5501

2024-08-28

LVGL移植到STM32 MCU平台通用程序源码

LVGL移植到STM32 MCU平台详细经验笔记教程 LVGL移植教程链接:https://blog.csdn.net/weixin_49337111/article/details/139142416?spm=1001.2014.3001.5502 本程序为上述教程中的程序源码,目标平台为STM32F407VET6,使用了LVGL v8.3版的库,经测试,代码运行正常。仅供参考交流学习,如有问题,欢迎交流讨论。

2024-05-23

嵌入式MCU BootLoader开发配置工程Demo

嵌入式MCU BootLoader开发配置详细笔记教程中的工程demo资源文件 博客文章链接:https://blog.csdn.net/weixin_49337111/article/details/137680267?spm=1001.2014.3001.5502 BootLoader和APP应用程序的启动跳转切换,原理上就是内存地址的切换,当BootLoader程序接收到对应的操作触发条件时,会进行相应的地址跳转切换,及一些其它的附加操作,然后执行该地址空间上的用户程序。但一般来说,BootLoader中会进行CPU工作模式、配置内存控制器、初始化外设等工作,为后续程序运行创建一个稳定的硬件环境。所以在APP中可以节省掉BootLoader中已经进行过的硬件环境配置。

2024-04-14

SDL2支持文件,SDL2-devel-2.30.1-mingw.zip

VScode中安装LVGL模拟器所使用的依赖下载文件,SDL2-devel-2.30.1-mingw.zip 安装LVGL模拟器的教程如下 https://blog.csdn.net/weixin_49337111/article/details/136536375#comments_31930883

2024-03-28

ESP32接入网络后,循环扫描服务器IP及端口是否在线的完整工程demo(ESP-IDF)

ESP32接入网络后,循环扫描服务器IP及端口是否在线的完整工程demo(ESP-IDF) 本资源详细描述的CSDN博客文章说明:https://blog.csdn.net/weixin_49337111/article/details/135305996?spm=1001.2014.3001.5501

2024-01-09

STM32移植FreeRTOS正常运行的工程源代码

STM32移植FreeRTOS,经测试验证能正常运行的工程源代码,STM32F407,STM32F103系列,其它版本后续更新,所使用的库为ST官方于2022年更新的标准库(对的,没有写错,是2022版最新的STM32标准库)。 FreeRTOS移植可参考本人的CSDN博客:https://blog.csdn.net/weixin_49337111/article/details/135079595?spm=1001.2014.3001.5502 如有问题,欢迎交流讨论。

2024-01-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除