- 博客(92)
- 收藏
- 关注
原创 C语言printf使用错误导致程序崩溃
ld:专用于类型。ESP32 开发:注意long是 32 位,打印uint32_t时优先用PRIu32。避免错误:严格匹配格式化字符串与变量类型。
2025-05-09 15:13:51
488
原创 在 ESP-IDF 中使用 .a 静态库调用
在 components/my_lib/CMakeLists.txt 中添加。通过以上步骤,你可以将静态库无缝集成到 ESP-IDF 项目中。├── lib/ # 静态库文件。# 添加组件目录(自动搜索 components/ 下的子目录):库与当前项目的目标架构(如 xtensa-esp32)不匹配。// 调用库中的函数。:确保库是为 ESP32 编译的,使用相同的工具链重新编译库。#include "mylib.h" // 你的库头文件。:库可能依赖其他未链接的组件。
2025-05-07 15:52:28
567
原创 在 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
902
原创 在 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
891
原创 基于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
416
原创 ESP32上C语言实现JSON对象的创建和解析
在ESP32上使用C语言实现JSON对象的创建和解析,同样可以借助cJSON库。ESP-IDF(Espressif IoT Development Framework)本身已经集成了cJSON库,你可以直接使用。以下是详细的步骤和示例代码。
2025-04-24 15:46:35
234
原创 基于 ESP32 - S3 同步 NTP(网络时间协议)并获取系统时间的 C 语言程序例程
以下是一个基于 ESP32 - S3 同步 NTP(网络时间协议)并获取系统时间的 C 语言程序例程。这个例程使用了 ESP-IDF(Espressif IoT Development Framework)来实现,你需要在 ESP-IDF 环境下编译和运行该程序。
2025-04-23 16:38:36
352
原创 基于ESP32 - S3的MD5校验算法的C语言例程
下面是一个基于ESP32 - S3的MD5校验算法的C语言例程。在ESP32 - S3上实现MD5校验,你可以使用ESP-IDF(Espressif IoT Development Framework)提供的功能。
2025-04-23 15:34:58
311
原创 基于esp32-s3,写一个实现json键值对数据创建和读写解析c例程
以下是一个基于 ESP32 - S3 使用 ESP - IDF 框架实现 JSON 键值对数据创建、读写和解析的 C 语言例程。
2025-04-23 15:13:39
250
原创 git将本地修改的 README.md 文件更新到远程仓库案例
如果出现冲突,你需要手动解决冲突,然后再次提交修改。命令将本地的提交推送到远程仓库。命令将暂存区的修改提交到本地仓库,并添加有意义的提交信息,描述这次修改的内容。在推送本地修改之前,建议先拉取远程仓库的最新更新,以避免可能的冲突。如果你还修改了其他文件,并且想将所有修改都添加到暂存区,可以使用通配符。选项用于指定提交信息,你可以根据实际修改情况编写合适的信息。执行该命令后,你可能会看到类似如下输出,提示。命令查看工作目录和暂存区的状态,确认。文件的修改就会更新到远程仓库。通常情况下,如果你使用的是。
2025-04-23 10:39:49
337
原创 strlen参数不匹配编译报错处理
这个编译错误是由于strlen函数期望的参数类型是,而你传递给它的是类型,也就是类型,两种指针所指向的数据类型的有符号性不同,从而引发了错误。要解决这个问题,你需要将uint8_t *类型的指针强制转换为类型,这样就能符合strlen函数的参数要求了。
2025-04-22 16:22:46
106
原创 基于 ESP32 - S3 实现互斥锁的 C 语言例程
下面是一个基于 ESP32 - S3 实现互斥锁的 C 语言例程,该例程利用 FreeRTOS(ESP32 - S3 所使用的实时操作系统)提供的互斥锁机制,创建两个任务,这两个任务会尝试访问一个共享资源,通过互斥锁来保证同一时间只有一个任务可以访问该资源,避免数据竞争。
2025-04-22 15:34:48
243
原创 以下是一个基于 ESP32 - S3 实现消息队列收发测试的 C 例程
以下是一个基于 ESP32 - S3 实现消息队列收发测试的 C 例程,该例程使用了 ESP - IDF(Espressif IoT Development Framework)。消息队列是 FreeRTOS 提供的一种机制,用于在不同任务之间传递数据。
2025-04-22 15:21:46
220
原创 通过 Samba 服务实现 Ubuntu 和 Windows 之间互传文件
点击“完成”,如果之前设置了 Samba 用户和密码,会弹出验证窗口,输入相应的用户名和密码即可访问共享目录。通过以上步骤,你就可以在 Ubuntu 和 Windows 之间实现文件的互传。是 Ubuntu 系统的 IP 地址,可以在 Ubuntu 终端中使用。在“驱动器”下拉菜单中选择一个未使用的驱动器号,在“文件夹”中输入。可以使用以下命令创建一个新的共享目录,例如创建名为。替换为 Windows 上的共享文件夹名称,在 Windows 系统中,打开“此电脑”。替换为 Windows 的用户名和密码。
2025-04-19 10:27:19
425
原创 esp32的NVS非易失性存储代码
在 ESP32 中,(通常nvs指非易失性存储,Non - Volatile Storage)主要实现了与非易失性存储相关的功能。ESP32 的 NVS 是一个轻量级的键值对存储系统,它允许开发者将少量的数据持久化存储在闪存中,即使设备断电或重启,数据也不会丢失。以下详细介绍。
2025-04-17 19:28:57
225
原创 CMake 的多层级文件编译实现
通过上述步骤,你可以实现 CMake 的多层级文件编译。核心要点是合理规划项目结构,编写各级文件,使用包含子目录,使用生成库,使用生成可执行文件,并使用链接库。
2025-04-17 14:50:07
325
原创 C 语言实现 HTTP 和 HTTPS 通信的例程
HTTPS 是基于 HTTP 的安全传输协议,需要使用 SSL/TLS 进行加密。在 C 语言中可以使用 OpenSSL 库来实现 HTTPS 通信。编程来实现简单的 HTTP 请求。以上代码仅是简单示例,实际应用中可能需要更多的错误处理和安全性检查。HTTP 是一种明文传输协议,在 C 语言中可以使用。
2025-04-17 09:41:58
559
原创 在 Ubuntu 系统下进行 GitLab 操作(上传代码和下载代码)的详细流程:
复制输出的内容,登录 GitLab 网站,进入个人设置 -> SSH 密钥,将公钥粘贴到相应的输入框中并保存。在使用 Git 之前,需要配置用户名和邮箱,这会在提交代码时记录你的身份信息。登录 GitLab 网站,点击右上角的“+”号,选择“New project”,按照提示创建一个新的仓库。通过以上步骤,你就可以在 Ubuntu 系统下完成 GitLab 的代码上传和下载操作。然后,将公钥添加到 GitLab 账户中。默认情况下,密钥会生成在。如果你需要从 GitLab 下载代码,可以使用。
2025-04-16 17:20:12
311
原创 基于ESP32-S3 蓝牙SDK封装设计
c复制#endif/*** @brief 蓝牙工作模式枚举*/BT_MODE_NONE = 0, // 无模式BT_MODE_BLE, // 仅BLE模式BT_MODE_CLASSIC, // 仅经典蓝牙模式BT_MODE_DUAL // 双模模式(BLE+经典蓝牙)/*** @brief 蓝牙角色枚举*/BT_ROLE_PERIPHERAL = 0, // BLE外设模式。
2025-04-14 19:37:39
802
原创 线程池管理及FreeRTOS示例
线程池管理是一种多线程处理技术,它预先创建并维护一组线程(在FreeRTOS中称为任务),当有任务需要执行时,从池中取出空闲线程来执行,执行完成后线程返回池中等待下一次任务,而不是销毁线程。
2025-04-10 11:08:24
247
原创 软件运行架构设计
-------------------------细化某个模块(如规则引擎的并发策略)----------------------------------------------是否需要进一步探讨如何将此架构映射到具体代码实现(如C++线程池/Java虚拟线程)?以下针对智能家居SDK中。
2025-04-10 10:44:30
779
原创 结构体指针和结构体作为函数参数主要区别
特性结构体作为参数结构体指针作为参数传递方式按值传递(传递副本)按引用传递(传递地址)性能复制开销大,性能较低仅传递地址,性能高是否修改原始数据不会修改原始结构体会修改原始结构体适用场景结构体较小,且不需要修改数据结构体较大,或需要修改数据在实际开发中,结构体指针作为参数更为常见,因为它更高效且更灵活,尤其是在需要修改结构体内容或处理大型结构体时。
2025-04-09 09:57:08
260
原创 物联网中的物模型是什么意思,在嵌入式软件开发中如何体现?
物模型是物联网设备与平台交互的核心,通过定义属性、事件和服务,统一描述设备的能力和行为。在嵌入式开发中,物模型通过解析、实现和通信,将抽象描述映射到具体的硬件操作,简化了开发流程,提高了系统的灵活性和可扩展性。物模型(Thing Model)是物联网中对物理设备或虚拟设备的抽象描述,定义了设备的属性、事件和服务。它是设备与云平台或其他设备之间交互的基础,用于统一描述设备的能力和行为。在嵌入式软件中实现物模型定义的属性、事件和服务。根据设备的功能,使用JSON或其他格式定义物模型。
2025-03-28 14:17:48
662
原创 cmake教程
它使用 CMakeLists.txt 文件来配置项目的构建过程,并生成适用于不同编译器和操作系统的构建文件(如 Makefile、Visual Studio 项目文件等)。以下是一个简单的 CMake 教程,帮助你快速上手。如果你的项目需要使用库,可以在 CMakeLists.txt 中添加库的依赖。首先,你需要在你的系统上安装 CMake。这将在 build 目录下生成适用于你的系统的构建文件(如 Makefile)。在 Windows 上,你可以下载并安装 CMake 的安装程序。
2025-03-20 23:58:33
434
原创 如何修改word文档的目录字体为指定字体大小
返回文档后,Word会提示是否更新目录,选择。在“修改样式”窗口中,设置字体为。在弹出的“目录”对话框中,点击。选中目录内容(点击目录区域)。打开包含目录的Word文档。(二级目录)等,然后点击。在“样式”窗口中,选择。在顶部菜单栏中,点击。
2025-03-20 11:33:57
2899
原创 在 ARM 嵌入式 Linux 下使用 C/C++ 实现 MQTT
在 ARM 嵌入式 Linux 下使用 C/C++ 实现 MQTT 通信是一个常见的需求,尤其是在资源受限的环境中。以下是一个详细的教程,使用库来实现 MQTT 客户端。
2025-03-17 11:41:23
797
原创 加密流程和相关算法设计实现
是确保数据安全的关键措施。以下是完整的加密流程和相关算法设计实现。通过以上设计和实现,可以确保敏感数据在传输和存储过程中的安全性。
2025-03-14 16:08:48
354
原创 vmware下ubuntu无法上网,电脑通过wifi连网
VMware Tools 提供了虚拟机与宿主机之间的增强功能,包括网络优化。VMware 提供了几种不同的网络连接模式,如桥接模式、NAT 模式、仅主机模式。若没有分配到有效的 IP 地址,可能是 DHCP 服务未正常工作。打开 Ubuntu 虚拟机的终端,使用。
2025-02-18 23:12:52
980
原创 ubuntu下安装TFTP服务器
通过以上步骤,你就可以在 Ubuntu 系统下成功安装和配置 TFTP 服务器。如果上传和下载操作都能正常完成,则说明 TFTP 服务器已经成功安装和配置。用户和组,并设置该目录及其子目录的权限为 777,以允许读写操作。安装完成后,需要对 TFTP 服务器进行配置。下载:ttfp -g -r 文件名 服务器IP地址。上行:tftp -p -r 文件名 服务器IP地址。客户端来验证服务器是否正常工作。命令上传一个文件,或使用。TFTP 服务器通常使用。
2025-02-17 15:25:39
791
原创 嵌入式linux下如何通过IIS接口驱动实现录制pcm音频
在嵌入式 Linux 下,通常使用 ALSA(Advanced Linux Sound Architecture)而不是 IIS(Internet Information Services,它主要用于 Windows 上的 Web 服务,这里你可能想说的是 I2S,Inter - Integrated Sound,一种音频串行接口标准)接口来驱动实现录制 PCM 音频。
2025-02-12 09:37:22
552
原创 linux利用nfs服务器,实现数据和windows环境拷贝
现在,你可以在Windows和Linux之间自由地复制数据。例如,你可以将文件从Linux的共享目录复制到Windows,或者将文件从Windows复制到Linux的共享目录。通过以上步骤,你可以在Linux和Windows之间通过NFS实现数据共享和拷贝。接下来,你需要在Linux服务器上创建一个目录,并配置NFS共享该目录。重启后,你可以使用PowerShell或命令提示符来挂载NFS共享目录。盘符,文件会自动同步到Linux服务器的共享目录中。当你不再需要使用NFS共享目录时,可以将其卸载。
2025-02-10 19:54:10
80788
原创 信噪比SNR>=90db解析
SNR >= 90 dB” 是指信号与噪声比(Signal-to-Noise Ratio,简称SNR)大于或等于90分贝(dB)。SNR 是一个衡量信号质量的参数,用于描述信号强度与背景噪声强度的比值。当SNR大于或等于90 dB时,表示信号的功率是噪声功率的 109109 倍。这意味着信号远强于噪声,信号质量非常高。“SNR >= 90 dB” 表示信号质量非常高,信号远远强于背景噪声。SNR (dB)=10×log10(信号功率噪声功率)SNR (dB)=10×log10(噪声功率信号功率)
2025-01-23 11:14:16
646
原创 离线语音唤醒开发流程
离线语音唤醒功能是一种在设备本地处理语音命令,无需连接互联网即可识别特定唤醒词的技术。这在智能家居设备、智能音箱等场景中广泛应用,以提高用户体验并保护用户隐私。:比如您已经选择了RV1109芯片,这是一个基于RISC-V架构的处理器,具有一定的计算能力和低功耗特性,适合嵌入式应用。:首先,需要通过麦克风采集用户的语音输入,并进行预处理,如降噪、滤波等,以提高语音信号的质量。:将预处理后的语音信号转换为机器学习模型可以处理的特征,常见的特征包括MFCC(Mel频率倒谱系数)、谱图等。
2025-01-23 10:47:45
1170
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人