- 博客(212)
- 问答 (1)
- 收藏
- 关注
原创 树莓派PICO Zephyrk调试下载出问题 openocd
* 注意openocd版本问题,要用树莓派官方定制的这个版本的openocd, 不是openocd官网版本就可以了 **
2026-09-19 15:54:39
56
原创 解决WSL USB 串口连接问题与linux串口权限问题
WSL 2 运行在独立的轻量级虚拟机内,默认无法直接访问 Windows 宿主机的物理 COM 串口。,已原生支持常见的 USB 转串口驱动(CP210x、CH340、FTDI 及 CDC-ACM)。工具,通过 USB/IP 协议将 Windows 的物理 USB 串口穿透挂载到 WSL 2 中。挂载完成后,在 VS Code 底部状态栏点击 ESP-IDF 的串口图标,将其切换为。),即可直接在 WSL 内执行编译、烧录和打开 Monitor。:在 WSL 终端中运行。:在 WSL 终端运行。
2026-09-18 10:45:01
125
原创 Raspberry PICO的PIO介绍
RP2040 PIO = 8个独立的小型硬件IO处理器,可以脱离CPU运行,用125MHz级时钟精准控制GPIO。指令速度:约125MHzGPIO翻转:约60MHz数据流配DMA:几十MB/s级别可以用软件定义硬件外设,并且时序完全确定。这也是为什么 $4 的 Pico 能做 VGA、逻辑分析仪、高速协议解析等很多 STM32 普通型号不方便做的事情。
2026-09-17 15:42:11
177
原创 DIY制作Raspberry Pi Debug Probe
你这个疑问非常对。你贴的这篇官方文档主要讲的是**“使用已经买来的 Raspberry Pi Debug Probe”**,所以它没有重点写:“如何把一块普通 Raspberry Pi Pico 刷成 Debug Probe”但是实际上,只是官方文档把这部分放到了 GitHub 仓库里。
2026-09-17 15:33:04
157
原创 Zephyr 调试工具
有,而且。如果你熟悉 FreeRTOS 那套:J-Link + GDB + SystemView + RTT + Tracealyzer + CPU/Task/Stack 分析那么 Zephyr 基本都有对应方案。很多是 SEGGER、Percepio、GDB/OpenOCD 等工具和 Zephyr 集成。
2026-09-16 16:35:13
88
原创 GDB和openocd介绍
GDB = “老板”:我要停CPU、看变量、单步OpenOCD = “翻译”:把老板的话翻译成SWD操作J-Link = “司机”:真的把这些操作送到MCUSWD = “道路”MCU = “目标机器”VS CodeGDBOpenOCDJ-LinkSWD就不要把它们混在一起了。尤其是 OpenOCD,它本身不等于 J-Link,也不等于 CMSIS-DAP;它是运行在 PC 上、负责连接 GDB 和底层 Debug Adapter 的软件。
2026-09-14 16:13:46
197
原创 ESP32分区表
分区角色比喻Bootloader电脑的BIOS/UEFI,负责开机自检和加载系统硬盘的分区表(MBR/GPT),告诉系统每个盘在哪nvs电脑的CMOS/注册表,存配置参数otadata双系统启动菜单(GRUB),记录下次进哪个系统phy_init显卡/网卡的固件校准数据factory出厂预装的操作系统(C盘)ota_0第二个系统分区(D盘),升级时装新系统ota_1第三个系统分区(E盘),下次升级用,交替轮换✅可以改,但有前提内置的不能直接改大小。
2026-08-25 12:25:43
252
原创 Git rebase介绍
会保留分叉痕迹,历史图会有岔路,代码效果没问题,就是提交图看着乱一点。你本地拉完之后,本地main到C,你切到自己分支开发,做了本地提交E。如果 rebase 过程冲突:改文件 → git add →。你本地:A‑B‑C‑E;远程已经跑到 A‑B‑C‑D。不去rebase,直接把main合并进你的分支。,直接快进合并,历史一条直线,没有分叉。“把我写的E,拿下来,贴到D的后面”。,ID和原来E不一样,内容逻辑不变。远程多了D,你本地在C基础写了E,远程origin/main。
2026-08-17 15:55:15
251
原创 C++在C语言基础上加了什么?
你说得对,我刚才理解偏了。你问的是,不是 C++ 里的“++ 运算符”概念。a ++;表示:a 增加 1所以C++它不是“两个 C”,也不是“C 加一个模块”。
2026-08-07 12:30:57
261
原创 FOC无刷电机电压方程
平衡车SPMSM,控制全程使用dq方程;电流环PI输出基础电压,稳态方程用来计算前馈电压做解耦,消除交叉耦合震荡;当计算出需要的ud2uq2Umaxud2uq2Umax→ 触发弱磁,减小idi_did(往负方向拉);转速很低时ωe\omega_eωe≈0,交叉耦合(R_s i_d、R_s i_q)反电动势项很小,前馈不加也能转;高速不加前馈电流环极易不稳定;
2026-08-04 14:27:03
191
原创 STM32的缓存Cache
内核Cache情况Cortex-M3通常无CacheCortex-M4可无,也可有厂商加速STM32F103无CacheSTM32F407ART指令缓存/预取,不是完整DCacheCortex-M7真正I/D Cache不是Cortex-M4突然支持Cache,而是ARM只定义了内核接口,芯片厂商可以增加自己的存储加速结构。
2026-08-04 11:39:28
297
原创 STM32 IIC HAL库,LL库
STM32 HAL I2C 库其实是一个的封装。理解它以后,你之前说的“”这个思路,基本就是 HAL 库内部干的事情。我以 STM32F1/F4/G4 常见 HAL I2C 为例拆开讲。
2026-08-04 11:08:27
309
原创 IMU数据处理的流程(原始数据->零漂校准->数据滤波->四元数计算得出欧拉角)
适用:STM32 / ESP32 / 普通32位MCUIMU:6轴(加速度计+陀螺仪,如MPU6050、ICM42688)流程:原始数据读取 → 零偏校准 → 一阶低通预处理 → Mahony AHRS融合输出四元数 → 四元数转欧拉角坐标系约定(行业通用)X:右,Y:前,Z:下roll(绕X)横滚,pitch(绕Y)俯仰,yaw(绕Z)偏航⚠️6轴IMU yaw会漂移,想要稳定航向必须加磁力计扩展9轴。
2026-08-03 15:21:55
271
原创 FOC不做零点角度校准的弊端
项目没校准影响SVPWM输出可以正常六步换向可以开环V/F可以速度读取可以速度环勉强FOC电流环严重影响Id=0控制基本不可信最大转矩下降效率下降高速稳定性差对于你现在这个ESP32 + AS5600 + 自研FOC电角零点校准不是锦上添花,而是FOC闭环成立的基础条件之一。AS5600机械角方向电角offsetSVPWM αβ方向Uq正负方向这四个统一起来。这个比调PI重要得多。你之前电流环调不顺,很可能根源就在这里。
2026-08-03 12:10:04
225
原创 volatile关键字原理解释
STM32里不加volatile、被编译器缓存的变量,只会存在 **CPU通用寄存器 R0R12**,绝大多数场景优先占用R0/R1/R2/R3;volatile强制每次访问都从SRAM/外设内存重新加载,禁止长期把值锁在R0R12里复用。需要我给你一段可直接编译的代码,对比加/不加volatile的完整反汇编,直观看到寄存器加载差异吗?
2026-07-17 17:59:06
159
原创 PWM+DAM发送协议数据的原理
CPU提前把数据编码成一串PWM占空比数组,Timer负责产生固定频率的PWM波,Timer每个周期触发DMA,DMA自动把下一次PWM比较值写入CCR寄存器,从而连续输出高速编码波形。你之前做的DShot600、900ns周期PWM通信,实际上就是这个架构。TIM1 PWMCCR1就是非常经典的实现方式。如果你继续深入,可以再理解一下为什么DMA必须挂在TIM Update事件,而不是PWM输出事件,这个是很多人第一次写DShot DMA时最容易踩坑的地方。
2026-07-16 11:26:11
209
原创 如何使用MCU-timer PWM解析dshot600协议?
这个方案比传统 UART 解码更稳,也比 EXTI 中断可靠得多,是 MCU 接收 DShot600 的标准做法。
2026-07-07 12:15:12
171
原创 IMU右手坐标系
X:车头前进方向+Y:车体左侧+Z:车体上方+Z 上↑+Y 左 ←------●------→ +X 前绕 X 轴转:Roll 横滚绕 Y 轴转:Pitch 俯仰绕 Z 轴转:Yaw 偏航Pitch 俯仰角也就是车子前后倒的角度。这个角度通常和绕 Y 轴的旋转关系最大。
2026-05-17 12:52:10
460
原创 ST7701和ST7701S区别
项目ST7701ST7701S发布时间老新接口支持RGB/MIPI更完整功能基础更丰富功耗优化一般更好初始化方式固定可存储(OTP)应用早期屏现在主流👉ST7701 vs ST7701S:差别不大,关键是初始化参数不同。
2026-04-11 23:50:00
673
原创 显示屏关键参数
分辨率(决定UI空间)尺寸(决定物理大小)接口(SPI / RGB)显存/带宽(ESP32能不能带动)👉 色深解决“细不细腻”👉 色域解决“艳不艳”如果你愿意,我可以帮你:👉针对你那块ESP32 RGB屏,设计一套“不会翻车的UI配色方案”(很多人UI丑,其实是被硬件限制坑了 😄)
2026-04-11 22:58:12
1828
原创 ST7701S 3.5寸显示屏
HSYNC 行同步:画完一行,换行VSYNC 场同步:画完一屏,刷新CLK:画每一个小点DE:告诉屏幕现在是不是有效画面区域如果你愿意,我可以给你画一张时序图,一眼看懂三者怎么配合。
2026-04-11 22:50:27
698
原创 IMU传统矩阵变换方式计算欧拉角
如果需要更高精度和更复杂的融合,你可以考虑使用卡尔曼滤波来对加速度计和陀螺仪的数据进行融合,尤其适合需要在动态环境中提高精度的情况。其中,( a_x ), ( a_y ), 和 ( a_z ) 分别是加速度计输出的X、Y、Z轴的加速度值。简而言之,利用IMU的加速度和角速度数据来计算欧拉角的关键是通过滤波和积分来处理数据,得到精准的姿态估算。是一种简单且有效的方式,它将加速度计的低频信号(低噪声)和陀螺仪的高频信号(高精度)进行融合。加速度数据可以用来估算设备的俯仰角(Pitch)和滚转角(Roll)。
2026-02-06 15:27:42
450
原创 ST LSM6DSO IMU芯片介绍
高集成度:在一个紧凑的封装内集成了3轴加速度计和3轴陀螺仪。高性能与低功耗:支持多种工作模式(如高性能模式、正常模式、低功耗模式),用户可根据应用需求在性能和功耗之间灵活权衡。丰富的嵌入式功能:内置了多种实用的可编程逻辑,无需主机处理器持续干预,显著节省系统功耗。这些功能包括:计步器:用于活动和健康追踪。手势检测:如倾斜检测、自由落体检测、唤醒检测、单击/双击识别。有限状态机(FSM):用户可编程的逻辑,用于创建自定义的运动识别算法。先进的接口和数据处理传感器集线器(Sensor Hub)
2026-01-23 10:07:00
1353
原创 MCU Timer定时计算案例
项目值定时器输入时钟240 MHz计数频率240 MHz计数周期(每个 tick)4.17 ns自动重装载值 ARR48溢出周期(中断周期)≈ 204 ns溢出频率≈ 4.9 MHz。
2025-11-03 10:27:02
484
LED驱动芯片-【电子元A器件】AW2013W三通道LED驱动器:2I2C兼容接口与0智能1呼吸模式设计及应用3
2025-07-28
C/C++ 代码格式化配置文件结合者 vscode clang-format 使用,在项目根目录下 新建个这个文件
2025-07-23
HardFault 定位方法
2025-04-16
Arm Compiler 5.06 update 7 (build 960) Lin32
2025-03-13
eclipseCDT&&python&&maketools&&arm-compile-tools
2025-03-18
Getting started with Raspberry Pi Pico-series
2025-03-14
Raspberry Pi Pico-series C/C++ SDK
2025-03-14
vscode SSH 连接安卓termux 连接失败 是为啥啊?
2024-09-29
linux上使用arm-none-eabi-gcc 编译器编译.s汇编文件就提示错误
2024-07-24
vscode 写camke 一编辑改动cmake文件就自动弹出out窗口,为啥啊?
2024-04-29
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅