自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(141)
  • 问答 (1)
  • 收藏
  • 关注

原创 嵌入式乐鑫音频项目“无声”问题深度调试复盘与方法论总结

我们共同经历了一场从应用层到硬件物理层,横跨Arduino和ESP-IDF两大生态的深度探索。这不仅仅是一次Bug修复,更是一次关于如何系统性地解决嵌入式领域复杂问题的完整实践。这次旅程中,我们共同运用和发现了一些非常优秀的调试思路和方法论,它们比解决问题本身更有价值。: 为了保证项目的稳定性和可维护性,必须放弃在这个不兼容的环境上继续投入。硬件上后,程序能够成功编译、烧录、运行,甚至能识别唤醒词,但。我们的“破案”过程,如同一部侦探小说,充满了反转和惊喜。这是导致所有问题的根本原因。

2025-06-19 01:01:01 344

原创 “智眸·家联“项目开发(一)

【代码】“智眸·家联“项目开发(一)

2025-06-17 23:57:29 514

原创 unable to start ssh-agent service, error :1058

这一解决方案直击 ​​权限-协议-工具链​​​权限合规​​ → 通过 ACL 修复满足 SSH 协议的安全基线;​​代理托管​​ → 利用ssh-agent规避私钥的频繁暴露;​​密钥注入​​ → 通过ssh-add建立客户端与代理的信任链。三者协同,最终实现安全且高效的认证流程 ✅。

2025-06-17 23:54:44 736

原创 idf.py build flash monitor (没有 fullclean)

您提的这个问题非常重要,也很常见!fullclean。

2025-06-16 23:55:48 384

原创 “智眸·家联“项目开发(一)

我们今天解决问题的过程,就像是侦探破案,从最表面的线索(网络不通)开始,一步步深入,最终找到了案件的核心(硬件不匹配),并成功破案。下面我们来复盘一下这个过程中的关键知识点和具体操作。

2025-06-16 22:41:54 909

原创 “智眸·家联“项目开发(一)

我们的目标是打造一个“室内导航小助手”。它能用这个小设备,通过自带的来推算自己走了多远、转了多少圈,再用来修正位置,避免跑偏。最终,我们会把它的运动轨迹实时显示在电脑或手机的网页上。

2025-06-16 22:39:49 805

原创 构建esp-IDF出现的(Git仓库所有权检测)问题

构建失败主要源于Git仓库所有权检测错误(),这导致CMake无法获取版本信息而终止。根本原因是Windows文件系统(NTFS)未记录Git仓库的所有权信息,触发了Git的安全机制。

2025-06-15 18:09:44 469

原创 2023年12月四级真题Reading Comprehension的分析总结

本节将呈现核心文章,其内容经过精心设计,以确保对四级学习者而言既易于理解又富有吸引力。文章综合了描述此类研究和健康话题时常见的关键信息,并严格遵循四级词汇和语法复杂度的要求。

2025-06-03 20:04:08 693

原创 高效背诵英语四级范文

​:考试作文评分核心是​。

2025-06-03 19:59:39 962

原创 适合自己的记单词方式

​​碰到单词:​​ ​​“找亲戚,想对立(反义),搞画面,快用起!”​​​​碰到短语/语法:​​ ​​“想情景,换说法,立刻说/写别拖拉!”​​​​核心就一句话:​​​​别把英语当一堆零件!把它当成你在玩的游戏🎮、在追的剧📺、在吃的瓜🍉、在烦的难题⚡️!想办法让它和你正在做的事情、经历过的事情、看到的东西、需要解决的问题 “勾搭” 上!​​ 越“勾搭”,越熟练,越忘不掉!这样学,记东西没那么累,反而像玩解锁游戏🎮,每建立一条新联系就点亮一个小灯泡💡,慢慢把你脑中的英语网织起来,越用越溜!试试看。

2025-06-03 19:54:18 699

原创 总览四级考试

​ 你不是一个人在战斗,很多很多人都是这么努力过来的。相信自己付出的每一分钟都有意义!现在就开始行动吧,哪怕只是背20个单词,你已经在进步的路上了!

2025-06-03 19:53:13 588

原创 提升四级阅读速度方法

​:💡 ​。

2025-06-03 19:50:04 845

原创 2023年12月四级真题作文的分析总结

为了帮助您更深入地理解和更灵活地运用与大学新年晚会场景相关的词汇,我为您整理了一份核心词汇的同义词(“兄弟词”)和反义词(“对手词”)扩展列表。这份列表旨在拓宽您的词汇量,让您在表达时有更多选择,使文章更具多样性和表现力,并且。

2025-06-03 16:18:14 1008

原创 核心知识点:惯性导航(Inertial Navigation)

惯性导航(Inertial Navigation)是一种。

2025-05-29 20:47:44 1243

原创 后缀数组 (Suffix Array) 与 后缀树 (Suffix Tree)

后缀数组和后缀树都是。

2025-05-27 00:18:58 923

原创 bspatch文件代码分析

就是为了保证每次读取补丁数据时,缓冲区的读取位置都是从头开始,防止数据错乱。这个结构体就是用来描述“数据流”的。它把“怎么读数据”和“怎么写数据”都封装成了函数指针,并且可以带上自己的上下文参数。opaque_r:读操作时用到的上下文指针(比如文件指针、内存地址等),你可以理解为“读的时候需要带点啥”。read:读数据用的函数指针,告诉补丁算法“怎么从补丁流里读数据”。opaque_w:写操作时用到的上下文指针(比如目标地址等),你可以理解为“写的时候需要带点啥”。write。

2025-05-26 16:05:32 1031

原创 内存越界(Memory Out-of-Bounds)详解

内存越界(Memory Out-of-Bounds)是一种基本的。

2025-05-24 21:00:28 1246

原创 stream数据流

数据流(Stream Data Flow)是一种。

2025-05-24 18:38:25 839

原创 vFile文件的精读

这显然不对,因为你可能已经读到文件中间了。这里就会和函数指针类型定义联系起来。,用于在内存中模拟文件操作。,只读取剩余部分,保证安全。定义了一个虚拟文件结构体。假设当前文件总大小为。

2025-05-24 18:03:36 330

原创 函数指针类型定义

想象一下,你有一个电话簿,里面记录的都是人名和对应的电话号码。当你想要打电话给“张三”时,你查到他的号码,然后拨打这个号码,就能联系到张三本人。现在,如果你的电话簿里记录的不是电话号码,而是“张三的秘书的电话号码”,或者“张三家的座机号码”,甚至“张三公司前台的电话号码”。这些号码虽然不同,但它们最终都指向一个目的:联系到张三。在编程中,“函数”就像是“张三本人”,它负责执行特定的任务。

2025-05-24 12:05:17 884

原创 虚拟文件(VFS)

虚拟文件系统(VFS)是一种。

2025-05-24 11:42:02 1420

原创 BSDIFF算法详解

BSDIFF 算法是。

2025-05-24 10:06:03 937

原创 Mcu_Bsdiff_Upgrade

MCU BSDiff 升级系统通过使用二进制差分技术,提供了一种在资源受限的微控制器上进行高效固件更新的机制。系统不传输和存储完整的固件映像,而是只处理固件版本之间的差异,从而显著缩小更新包并降低带宽要求。该架构遵循一个由两部分组成的模型:系统采用新旧固件二进制文件,使用 BSDiff 算法创建补丁,将补丁传输到设备,然后应用补丁以就地创建新的固件版本。该系统由几个关键组件组成,这些组件协同工作以实现差异更新机制: 架构遵循模块化设计,其中:补丁应用程序过程包括几个步骤:该系统设计为在嵌入式设备的内存限制内

2025-05-21 14:16:33 921

原创 PX4开始之旅(二)通过自定义 MAVLink 消息与 QGroundControl (QGC) 通信

想象一下,MAVLink 就像是无人机(飞控)和地面站(QGroundControl)之间约定好的一种“语言”。这种语言有很多标准的“词汇”和“句子”,比如用来报告无人机位置、速度、电池电量,或者发送起飞、降落指令等等。但是,有时候你可能想让无人机做一些特别的事情,或者发送一些标准 MAVLink 语言里没有的信息。比如,你的无人机上装了一个很特别的传感器,你想把这个传感器的数据显示在 QGC 上;或者你想通过 QGC 控制一个自定义的机械臂。这时候,标准的 MAVLink 语言就不够用了。

2025-05-09 23:37:26 1423

原创 PX4开始之旅(一)自动调参

滤波是信号处理领域的一个基本概念,其抽象本质是。

2025-05-09 18:23:50 1431

原创 简易版无人机飞控

想象你正在骑一辆没有车把的自行车,要保持平衡需要不断调整身体重心。四旋翼无人机也是如此,它需要实时感知自己的倾斜角度,并通过调整四个电机转速来保持平衡。使用互补滤波或卡尔曼滤波将陀螺仪和加速度计数据融合,得到准确的欧拉角。

2025-05-09 17:33:32 808

原创 为什么拆分高低字节而不直接存入数组

当需要传输一个多字节的值(如16位的长度值)时,必须将其拆分成单个字节进行传输。如果想直接存储在数组中而不拆分,那么需要使用uint16_t类型的缓冲区,但W25Q64闪存的接口是基于字节(8位)作的,所以最终在与硬件交互时仍然需要进行字节拆分。这种拆分方式实际上是在实现小端序(little-endian)的字节序,即低字节在前,高字节在后。不同的系统可能使用不同的字节序(大端序或小端序)。这种拆分和重组16位值的方法在嵌入式系统和通信协议中非常常见,特别是在处理跨字节边界的多字节数据时。

2025-05-08 04:16:52 487

原创 红外信号发送的简单说明

Cyberry Potter Electromagic Wand 项目包括传输红外 (IR) 信号的功能,类似于电视遥控器的工作原理。这段代码是用于发送红外线(IR)信号的循环处理部分。简单来说,它是一个“按照遥控器信号模式,控制红外LED开关”的机制。:实际的 IR 信号是通过在特定持续时间内快速打开和关闭 38kHz 载波产生的,从而产生 IR 接收器可以理解的模式。通过这种方式,按照预先记录的遥控器信号模式(存储在数组中)精确控制红外LED,从而可以操作电视、空调等家电设备。红外信号发送代码解析。

2025-05-08 04:14:34 527

原创 基于nnom的多选择器

核心组件作模式系统有两种主要作模式,用于确定识别手势时的行为:模式 0 (执行)模式 1 (录制)默认情况下,系统以模式 0 启动。长按按钮 (>0.5 秒) 可在模式之间切换,LED 指示灯模式提供当前模式的视觉反馈。核心硬件组件STM32F103CB 微控制器STM32F103CB 微控制器用作 WAND 系统的中央处理单元。MPU6050 IMU 传感器MPU6050 是一个 6 轴运动跟踪装置,结合了 3 轴陀螺仪和 3 轴加速度计。

2025-05-08 00:15:53 1020

原创 基于nnom模型的多选择控制器

CyberryPotter ElectromagicWand 是一款基于 STM32F103C8T6 微控制器的嵌入式手势识别系统。它使用MPU6050惯性测量单元 (IMU) 来捕获运动数据,使用嵌入式机器学习库通过卷积神经网络 (CNN) 对其进行处理,并识别 12 种不同的手势模式(称为“咒语”)以触发相应的作,例如控制 LED。nnom系统架构CyberryPotter ElectromagicWand 由三个主要组件组成:硬件、固件和 PC 软件工具,它们协同工作以实现手势识别和响应。

2025-05-07 16:22:20 1066

原创 无人机相关技术与故障排除笔记

核心逻辑: 通过微控制器生成高精度 PWM 信号,控制电调输出电压,驱动无刷电机按需运转。关键参数: 频率决定响应速度,分辨率影响控制精度,初始占空比保障安全性。实际应用: 无人机、机器人、工业自动化等领域依赖此类参数实现精准动力控制。核心逻辑: 通过电子换向和磁场同步实现无刷电机高效运转,外转子适合大扭矩场景,内转子适合高转速场景。技术关键: 霍尔传感器定位、六步换向顺序、MOS 管驱动电路设计。SPI 凭借全双工、高时钟频率和精简协议实现高速传输,适合对速度要求高的场景;

2025-05-06 08:22:09 1358

原创 手表心率检测算法的简化说明

根据项目文档,开发人员最初使用了传感器的官方库,但发现它对于他们的需求来说太慢了,因此他们开发了自己的自定义算法来计算心率。OV-Watch 中的心率检测算法是一种简单的峰值检测算法,其工作原理是识别 PPG 信号中的峰值并计算这些峰值之间的时间以确定心率。峰值检测算法侧重于识别 PPG 信号中心率峰值的特征形状,而不是使用更复杂的信号处理技术,这与开发更简单、更快速算法的项目目标一致。OV-Watch 中的算法是一种简化的实时峰值检测方法,可直接处理来自 EM7028 传感器的原始 PPG 信号。

2025-05-06 03:39:56 1061

原创 手表 各功能遇到的问题与解决方案

在电源管理方面,实现了三种模式:正常运行模式、睡眠模式(MCU进入STOP模式)和关机模式 README.md:131-132。在V2.4.1版本中,修改了串口IO口的处理方式,解决了休眠功耗高的问题 README.md:65。实现经典的双栈表达式计算法:一个栈存放数字,一个栈存放符号 README.md:182-184。使用外部EEPROM进行数据存储,并实现了完善的数据校验机制 README.md:155。使用栈结构存储页面指针,而不是直接存储页面对象,避免动态变化导致的问题。

2025-05-06 02:48:52 954 1

原创 手表的编程思想技巧详解

本回答基于对 OV-Watch 代码库的分析,主要介绍了其软件架构、页面管理、计算器功能、硬件抽象层、任务管理、心率测量和低功耗设计等核心功能的实现方式。OV-Watch 项目展示了一个结构良好的嵌入式系统设计,在硬件、中间件和应用程序层之间明确分离了关注点。该代码库展示了嵌入式系统设计的良好实践,包括适当的硬件抽象,可促进实际硬件和 PC 仿真环境之间的代码可移植性,这对于 UI 开发和测试特别有价值。该项目通过文件实现硬件抽象层,该文件充当硬件层和应用层之间的中间件。

2025-05-05 23:10:23 793

原创 手表关于MPU6050中的功能实现

OV-Watch 项目为 MPU6050 传感器实施了复杂的电源管理,以优化电池寿命,同时保持手腕检测和计步功能。

2025-05-05 20:37:05 1534

原创 手表功能RunModeTasks

RunModeTasks 执行特定于当前模式的功能 根据模式控制作行为”这句话是指 OV-Watch 智能手表项目中的一组任务,这些任务负责管理设备的运行模式并根据不同模式控制设备的行为。这种模式管理机制是智能手表延长电池寿命的关键设计。RunModeTasks 功能解释。

2025-05-05 19:04:00 488

原创 手表对EEPROM的访问

信号灯(同步机制)在OV-Watch中的实现方式在OV-Watch项目中,信号灯(即同步机制)主要通过FreeRTOS作系统提供的消息队列、任务优先级和任务挂起机制来实现对共享资源的访问控制。消息队列实现这些消息队列用于任务间的同步和通信,尤其是可能用于控制对EEPROM的访问。EEPROM访问控制显示器访问控制任务挂起和恢复机制任务优先级机制总结。

2025-05-05 04:17:50 362

原创 手表部件通信

项目使用了名为 (硬件数据访问)的中间层,作为 UI 和硬件之间的桥梁。这一层抽象了硬件访问,为 UI 组件提供了统一的接口来读取各种传感器和硬件组件的数据。在 OV-Watch 项目中,它在函数中用于检查更新请求并在需要时触发传感器数据处理。FreeRTOS 中的消息队列是线程安全的数据结构,支持任务间通信。OV-Watch 中的实现展示了一种清晰的关注点分离,每个任务都处理特定的职责并通过消息队列进行通信。OV-Watch 项目采用了多层架构来读取和显示数据,主要通过硬件中间层和任务管理系统来实现。

2025-05-05 04:07:17 967

原创 手表中计算器中小数的处理

在实现中,当需要处理连续数字并且位于小数点后时,处理逻辑与整数不同:整数是通过乘10实现位移,而小数是通过除以10的幂来调整小数位。这段代码是计算器字符串解析过程中的核心部分,用于判断当前处理的字符与前一个字符的关系。具体来说,它检查前一个处理的字符是否为数字类型。在OV-Watch的计算器实现中,小数处理是通过一个特殊的标志位和位置计数器来完成的。存储当前正在处理的字符信息,而 存储前一个处理过的字符信息。这种处理方法确保了计算器能正确识别和计算带小数点的数值。3. 处理小数点后的后续数字。

2025-05-05 03:27:06 300

原创 FreeRTOS手表学习

概述OV-Watch 是一款功能齐全、节能的智能手表,具有丰富的功能。该项目为具有广泛功能的可穿戴设备提供完整的固件和硬件设计。系统架构OV-Watch 遵循分层架构模式,可分离关注点并提高可维护性。系统架构概述硬件层固件层系统层应用层启动过程和固件更新OV-Watch 实现了一个引导加载程序系统,该系统支持通过蓝牙进行无线 (OTA) 更新。引导流程从 2.4.0 版本开始,固件已拆分为单独的 Bootloader 和 Application 组件,以支持 OTA 更新。

2025-05-05 02:51:04 1671

空空如也

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

TA关注的人

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