自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 编译esp32报错解决办法

报错信息:CMake Error at build/CMakeFiles/git-data/grabRef.cmake:48 (file):这个错误是由于 Git 的安全检查导致的。从错误信息可以看出,Git 检测到了"可疑的所有权"(dubious ownership),因为 ESP-IDF 框架所在的目录的所有权与当前用户不匹配。

2025-08-29 17:35:24 397

原创 shell脚本实现读取ini键值

以下是修改后的 shell 脚本,它不仅会读取文件中ota_sta对应的值,还会判断该值是否等于0。

2025-08-18 19:24:27 441

原创 linux下查看 UDP Server 端口的启用情况

(list open files)命令用于列出当前系统打开的文件和网络连接。输出中会显示监听 UDP 端口的进程名、进程 ID 以及监听的端口号等信息。表示 UDP 服务器正在监听所有网络接口的 5353 端口。是一个用于显示网络连接、路由表和网络接口统计信息的工具。是一个用于显示套接字统计信息的工具,它比。列显示了监听的本地地址和端口号。列中查看 UDP 监听端口。

2025-08-18 10:20:33 302

原创 shell脚本实现sha256sum校验并拷贝校验通过的文件

逐行读取checksum.txt文件。对每个文件单独进行SHA256校验。只复制验证通过的文件到目标目录。自动创建目标目录(如果不存在)显示详细的验证和复制结果。最终统计成功/失败数量。检查目标目录是否存在。检查校验文件是否存在。处理文件不存在的情况。

2025-08-15 18:53:11 150

原创 linux下找到指定目录下最新日期log文件

此实现能正确处理您提供的示例文件列表,并返回最新文件(如 "2025-08-15_11-07-58.log")。通过字符串比较找到时间戳最新的文件(文件名越大表示时间越新):最新日志文件的完整路径(动态分配的内存,需调用者释放):日志目录路径 (如 "/appdata/log")遍历所有文件,跳过 "." 和 ".."函数仅基于文件名判断,不检查文件修改时间。使用正则表达式验证文件名是否符合。验证文件名格式是否符合日志文件规范。返回的路径字符串需要调用者释放内存。确保只处理符合命名规范的日志文件。

2025-08-15 17:28:09 407

原创 linux下如何用gdb调式代码段错误Segmentation fault

在Linux下,当程序出现段错误(Segmentation fault)时,可以使用GDB(GNU Debugger)来调试定位问题。

2025-08-11 10:24:03 240

原创 Linux 下用select实现串口数据读取方法

在 Linux 系统里,我们可以借助selectpoll或者epoll这些 I/O 多路复用机制达成串口数据读取的触发方式。这些机制能够让程序在特定文件描述符(像串口设备文件描述符)有数据可读时得到通知,进而进行数据读取操作,而不是像轮询方式那样持续调用read函数。

2025-08-08 09:40:01 452

原创 linux下实现System V消息队列实现任意结构体传输

这个实现提供了高度灵活的消息传递机制,适用于各种嵌入式场景,从简单的传感器数据采集到复杂的设备控制命令,都可以通过定义适当的结构体来实现高效通信。以下是一个实现,可以发送和接收任意类型的结构体消息,而不仅限于特定的。监控队列使用情况,避免溢出。

2025-08-07 17:09:26 178

原创 Shell 脚本发送信号给 C 应用程序,让 C 应用程序回收线程资源后自行退出。

下面分别给出一个 Shell 脚本和 C 程序的例子,实现通过 Shell 脚本发送信号给 C 应用程序,让 C 应用程序回收线程资源后自行退出。

2025-08-04 19:28:54 323

原创 在嵌入式 Linux 系统中,配置 DNS 以实现内网或外网连接

主要涉及修改 DNS 服务器地址。

2025-07-29 11:25:45 351

原创 将十六进制字符串转为十六进制并返回十六进制数据长度

【代码】将十六进制字符串转为十六进制并返回十六进制数据长度。

2025-07-24 22:48:53 453

原创 Linux 消息队列接收与处理线程实现

下面是一个完整的 C 语言实现,创建一个线程来接收消息队列中的数据,缓存到队列中,然后逐个处理。4. 可以根据需要修改消息处理函数 process_message() 的实现。◦ 使用条件变量 (pthread_cond_t) 实现生产者-消费者模型。◦ 使用互斥锁 (pthread_mutex_t) 保护共享数据。◦ 接收线程: 从消息队列接收消息并放入处理队列。◦ 当有新消息到达时,接收线程通知条件变量。◦ 处理线程: 从处理队列取出消息并处理。◦ 当队列为空时,处理线程等待条件变量。

2025-07-14 23:05:25 194

原创 linux打包固件shell脚本

确保校验文件不包含自己,且不会重复打包已生成的。:解压后直接是文件,适合 SDK/软件发布。:避免动态获取脚本名可能导致的意外问题。确保解压后直接是文件,没有父目录层级。,避免动态获取脚本名可能带来的问题。(包含所有文件的 SHA256)如果需要排除更多文件(如。、临时文件等),可在。

2025-07-14 22:20:01 399

原创 linux下的消息队列数据收发

在 Linux 下,可以使用 POSIX 消息队列来实现一个线程向另一个线程发送消息。

2025-07-14 18:02:48 421

原创 linux获取NTP方式

此实现已在ARMv7嵌入式平台测试通过,实测同步精度在局域网环境下可达±50ms,广域网环境下±200ms(受网络延迟影响)。8种详细错误代码(从socket创建到时间设置)默认使用pool.ntp.org公共服务器。若目标平台无DNS支持,可直接使用IP地址。使用NTP v3协议(兼容大多数服务器)使用settimeofday设置系统时间。正确处理1900-1970时间差。超时检测机制(默认5秒可配置)// 使用自定义服务器和超时。支持自定义NTP服务器。// 使用默认参数同步。

2025-07-11 14:37:43 305

原创 linux下OTA升级方案

├── current -> /app/versions/v1.0.0 # 符号链接指向当前版本。方案(如Android OTA),由Bootloader决定启动分区,彻底避免软故障。RestartSec=5s # 等待5秒后重启。│ ├── v1.0.0 # 旧版本(当前运行)│ └── v1.1.0 # 新版本(待升级)└── update.sh # 升级脚本。# 切换回上一个可用版本(如v1.0.0)

2025-07-11 14:28:05 1060

原创 linux下进程之间socket通信c程序例程

我们将实现一个简单的客户端 - 服务器模型,服务器监听连接,客户端连接到服务器并发送 JSON 消息,服务器接收消息并打印出来,然后服务器也可以向客户端发送 JSON 消息。• 服务器端:创建一个 Unix 域套接字,绑定到指定路径,监听连接,接受客户端连接,接收客户端发送的 JSON 消息,解析并打印该消息,然后向客户端发送一条 JSON 响应消息。• 客户端:创建一个 Unix 域套接字,连接到服务器,创建一个 JSON 消息并发送给服务器,接收服务器的响应消息,解析并打印该消息。

2025-07-06 22:50:20 283

原创 蓝牙抓包调式工具

以下是一些可以抓取蓝牙与 App 交互数据包的工具:

2025-06-05 09:37:55 1023 1

原创 基于esp32,控制IO1高低电平 和读取IO0按键的c程序

1. GPIO0在ESP32开发板上通常连接有自动下载电路,用作按键输入可能会有问题。◦ BUTTON_IO (GPIO0): 用于连接按键(注意: GPIO0在ESP32上通常有特殊用途,如启动模式选择)5. 如果需要更复杂的按键处理(如双击、多击等),可以考虑使用状态机或专门的按键库。2. 按键需要连接在GPIO0和地之间,内部已启用上拉电阻。◦ OUTPUT_IO (GPIO1): 用于输出高低电平。◦ 区分短按(500ms以内)和长按(2000ms以上)◦ 实际应用中可以根据按键状态来控制输出。

2025-05-29 23:53:57 381

原创 linux删除当前目录的子目录中的所有 .c 文件

该命令只会列出符合条件的文件,而不会进行删除操作。命令可以实现删除操作。如果你想更直观地控制删除过程,也可以使用。命令是一个强大的文件搜索工具,结合。

2025-05-29 14:58:04 272

原创 Ubuntu 下代码对比工具

【代码】Ubuntu 下代码对比工具。

2025-05-29 13:35:17 572

原创 C语言printf使用错误导致程序崩溃

ld:专用于类型。ESP32 开发:注意long是 32 位,打印uint32_t时优先用PRIu32。避免错误:严格匹配格式化字符串与变量类型。

2025-05-09 15:13:51 638

原创 在 ESP-IDF 中使用 .a 静态库调用

在 components/my_lib/CMakeLists.txt 中添加。通过以上步骤,你可以将静态库无缝集成到 ESP-IDF 项目中。├── lib/ # 静态库文件。# 添加组件目录(自动搜索 components/ 下的子目录):库与当前项目的目标架构(如 xtensa-esp32)不匹配。// 调用库中的函数。:确保库是为 ESP32 编译的,使用相同的工具链重新编译库。#include "mylib.h" // 你的库头文件。:库可能依赖其他未链接的组件。

2025-05-07 15:52:28 782 1

原创 在 ESP32 开发中,配置默认的串口打印

ESP32 有 3 个 UART(UART0/UART1/UART2),但 UART1 的 TX 引脚(GPIO9)可能与 Flash 冲突,需谨慎选择。如果需要更改日志输出的 UART 端口(例如改用 UART1 或禁用日志),可以通过。确认 GPIO 引脚未被占用(如 UART1 默认用于 Flash,需避免冲突)。在 ESP32 开发中,默认的串口打印(日志输出)通常通过。通过以上方法,可以灵活配置 ESP32 的日志输出串口。(默认 UART0,GPIO1/GPIO3)(自定义 TX/RX 引脚)

2025-05-06 15:25:24 1733

原创 在 Ubuntu 下使用 ESP-IDF 通过串口烧录 ESP32

通过以上步骤,你可以在 Ubuntu 下顺利完成 ESP-IDF 项目的串口烧录。遇到问题时,优先检查串口权限、硬件连接和芯片型号配置。idf.py set-target esp32 # 或 esp32s2/esp32c3/esp8266。通过 USB 线将 ESP32/ESP8266 开发板连接到 Ubuntu 主机。# 或永久加入 dialout 组(见步骤1.3)或检查硬件连接(USB 线/开发板是否正常)。:可选,修改波特率(默认 460800)。确认设备识别到的串口号(通常为。

2025-05-06 15:15:37 1230

原创 esp32将partitions.csv文件启用到工程项目中的配置

在ESP-IDF项目中,你可以通过以下两种常见方式配置项目使用自定义的。

2025-04-29 17:41:26 731

原创 基于esp32实现键值对存储读写c程序例程

我们首先打开 NVS 命名空间,然后使用 nvs_set_i32 写入参数,最后调用 nvs_commit 提交更改。4. 主函数:在 app_main 函数中,我们调用 write_config_parameter 写入一个参数,然后调用 read_config_parameter 读取该参数,并打印结果。1. 初始化 NVS:在 app_main 函数中,我们首先调用 nvs_flash_init() 来初始化 NVS。// NVS 分区被截断,需要擦除并重试。// 定义一个函数用于写入配置参数。

2025-04-27 23:33:46 514

原创 ESP32上C语言实现JSON对象的创建和解析

在ESP32上使用C语言实现JSON对象的创建和解析,同样可以借助cJSON库。ESP-IDF(Espressif IoT Development Framework)本身已经集成了cJSON库,你可以直接使用。以下是详细的步骤和示例代码。

2025-04-24 15:46:35 395

原创 基于 ESP32 - S3 同步 NTP(网络时间协议)并获取系统时间的 C 语言程序例程

以下是一个基于 ESP32 - S3 同步 NTP(网络时间协议)并获取系统时间的 C 语言程序例程。这个例程使用了 ESP-IDF(Espressif IoT Development Framework)来实现,你需要在 ESP-IDF 环境下编译和运行该程序。

2025-04-23 16:38:36 542

原创 基于ESP32 - S3的MD5校验算法的C语言例程

下面是一个基于ESP32 - S3的MD5校验算法的C语言例程。在ESP32 - S3上实现MD5校验,你可以使用ESP-IDF(Espressif IoT Development Framework)提供的功能。

2025-04-23 15:34:58 447

原创 基于esp32-s3,写一个实现json键值对数据创建和读写解析c例程

以下是一个基于 ESP32 - S3 使用 ESP - IDF 框架实现 JSON 键值对数据创建、读写和解析的 C 语言例程。

2025-04-23 15:13:39 354

原创 git将本地修改的 README.md 文件更新到远程仓库案例

如果出现冲突,你需要手动解决冲突,然后再次提交修改。命令将本地的提交推送到远程仓库。命令将暂存区的修改提交到本地仓库,并添加有意义的提交信息,描述这次修改的内容。在推送本地修改之前,建议先拉取远程仓库的最新更新,以避免可能的冲突。如果你还修改了其他文件,并且想将所有修改都添加到暂存区,可以使用通配符。选项用于指定提交信息,你可以根据实际修改情况编写合适的信息。执行该命令后,你可能会看到类似如下输出,提示。命令查看工作目录和暂存区的状态,确认。文件的修改就会更新到远程仓库。通常情况下,如果你使用的是。

2025-04-23 10:39:49 482

原创 strlen参数不匹配编译报错处理

这个编译错误是由于strlen函数期望的参数类型是,而你传递给它的是类型,也就是类型,两种指针所指向的数据类型的有符号性不同,从而引发了错误。要解决这个问题,你需要将uint8_t *类型的指针强制转换为类型,这样就能符合strlen函数的参数要求了。

2025-04-22 16:22:46 171

原创 基于 ESP32 - S3 实现互斥锁的 C 语言例程

下面是一个基于 ESP32 - S3 实现互斥锁的 C 语言例程,该例程利用 FreeRTOS(ESP32 - S3 所使用的实时操作系统)提供的互斥锁机制,创建两个任务,这两个任务会尝试访问一个共享资源,通过互斥锁来保证同一时间只有一个任务可以访问该资源,避免数据竞争。

2025-04-22 15:34:48 362

原创 以下是一个基于 ESP32 - S3 实现消息队列收发测试的 C 例程

以下是一个基于 ESP32 - S3 实现消息队列收发测试的 C 例程,该例程使用了 ESP - IDF(Espressif IoT Development Framework)。消息队列是 FreeRTOS 提供的一种机制,用于在不同任务之间传递数据。

2025-04-22 15:21:46 337

原创 基于ESP32 - S3实现一个ping百度的C测试程序

【代码】基于ESP32 - S3实现一个ping百度的C测试程序。

2025-04-20 17:50:52 458

原创 通过 Samba 服务实现 Ubuntu 和 Windows 之间互传文件

点击“完成”,如果之前设置了 Samba 用户和密码,会弹出验证窗口,输入相应的用户名和密码即可访问共享目录。通过以上步骤,你就可以在 Ubuntu 和 Windows 之间实现文件的互传。是 Ubuntu 系统的 IP 地址,可以在 Ubuntu 终端中使用。在“驱动器”下拉菜单中选择一个未使用的驱动器号,在“文件夹”中输入。可以使用以下命令创建一个新的共享目录,例如创建名为。替换为 Windows 上的共享文件夹名称,在 Windows 系统中,打开“此电脑”。替换为 Windows 的用户名和密码。

2025-04-19 10:27:19 570

原创 esp32的NVS非易失性存储代码

在 ESP32 中,(通常nvs指非易失性存储,Non - Volatile Storage)主要实现了与非易失性存储相关的功能。ESP32 的 NVS 是一个轻量级的键值对存储系统,它允许开发者将少量的数据持久化存储在闪存中,即使设备断电或重启,数据也不会丢失。以下详细介绍。

2025-04-17 19:28:57 385

原创 CMake 的多层级文件编译实现

通过上述步骤,你可以实现 CMake 的多层级文件编译。核心要点是合理规划项目结构,编写各级文件,使用包含子目录,使用生成库,使用生成可执行文件,并使用链接库。

2025-04-17 14:50:07 696

原创 C 语言实现 HTTP 和 HTTPS 通信的例程

HTTPS 是基于 HTTP 的安全传输协议,需要使用 SSL/TLS 进行加密。在 C 语言中可以使用 OpenSSL 库来实现 HTTPS 通信。编程来实现简单的 HTTP 请求。以上代码仅是简单示例,实际应用中可能需要更多的错误处理和安全性检查。HTTP 是一种明文传输协议,在 C 语言中可以使用。

2025-04-17 09:41:58 732

空空如也

空空如也

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

TA关注的人

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