<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[LCG元的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/michael_jovi</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; michael_jovi]]></copyright><item><title><![CDATA[STM32F103 内部Flash模拟EEPROM实战：双页轮换磨损均衡、掉电保护与Flash擦写阻塞中断的RAM驻留实测]]></title><link>https://blog.csdn.net/michael_jovi/article/details/164817711</link><guid>https://blog.csdn.net/michael_jovi/article/details/164817711</guid><author>michael_jovi</author><pubDate>Sun, 20 Sep 2026 10:16:01 +0800</pubDate><description><![CDATA[很多中小规模产品需要在断电后保留少量配置参数（校准系数、设备地址、累计运行时间），但为了几个字节的数据外挂一颗 24C02 既增加 BOM 成本，又占用 I2C 总线。STM32F103 的内部 Flash 可以模拟 EEPROM 完成这一需求，但直接按页擦写会迅速耗尽擦写寿命。本文基于 STM32F103C8T6，设计"双页轮换 + 追加写入 + 掉电保护"的轻量 FEE 方案，15000 次参数写入仅消耗约 234 次擦除（单页直写方案需 15000 次）。]]></description><category></category></item><item><title><![CDATA[STM32F103 PWM+DMA驱动WS2812B灯带实战：CCR时序整定、首灯错位根因与伽马校正限流实测]]></title><link>https://blog.csdn.net/michael_jovi/article/details/164817295</link><guid>https://blog.csdn.net/michael_jovi/article/details/164817295</guid><author>michael_jovi</author><pubDate>Sun, 20 Sep 2026 10:14:55 +0800</pubDate><description><![CDATA[WS2812B 用一根数据线以 800kHz 归零码传输每个像素的 24 位 GRB 数据，对 T0H/T1H 高电平时间的容差只有 ±150ns，用 GPIO 延时或普通中断翻转极易因中断抖动出现颜色错乱。本文基于 STM32F103C8T6（72MHz）+ TIM2 PWM + DMA1_Channel2，把每个 bit 预编码成 CCR 比较值，由硬件定时器输出精确波形、DMA 后台自动搬运，实现零 CPU 参与的灯带刷新。]]></description><category></category></item><item><title><![CDATA[STM32F103 NTC 热敏电阻测温实战：分压网络设计、Steinhart-Hart 标定与 ADC 采样优化实测]]></title><link>https://blog.csdn.net/michael_jovi/article/details/165192111</link><guid>https://blog.csdn.net/michael_jovi/article/details/165192111</guid><author>michael_jovi</author><pubDate>Sat, 19 Sep 2026 19:18:47 +0800</pubDate><description><![CDATA[NTC 热敏电阻凭借成本低、响应快、测温范围宽，成为嵌入式温度检测的主流方案，但"电阻→电压→ADC→温度"这条链路上每一步都会引入误差：分压电阻选型不当导致量程内分辨率不足、ADC 采样时间不够造成读数系统性偏低、B 值公式在宽温区偏差高达 ±2℃。本文基于 STM32F103C8T6 与 MF52 10kΩ/B3950 NTC，从分压网络灵敏度推导出发，对比查表法、B 方程、Steinhart-Hart 三种标定方式，并实测采样次数对噪声的抑制效果。]]></description><category></category></item><item><title><![CDATA[STM32F103 时钟安全系统 CSS 实战：HSE 停振检测、NMI 中断处理与主时钟自动切换实测]]></title><link>https://blog.csdn.net/michael_jovi/article/details/165200606</link><guid>https://blog.csdn.net/michael_jovi/article/details/165200606</guid><author>michael_jovi</author><pubDate>Sat, 19 Sep 2026 19:16:20 +0800</pubDate><description><![CDATA[先讲个真实场景。去年调试一台户外采集设备，现场反馈"设备偶尔死机，断电重启就好"。返厂拆机后接上示波器，发现 OSC_IN 引脚上的 8MHz 正弦波时有时无——晶振引脚虚焊，振动一下信号就没了。更麻烦的是，程序跑飞后没有任何告警，因为死机那一刻连看门狗都没来得及喂。这个案例里芯片本身没坏，坏的是时钟源，而 MCU 对"时钟源失效"这件事默认是毫无防备的。]]></description><category></category></item><item><title><![CDATA[STM32F103 驱动 HX711 称重实战：DOUT 就绪时序、增益切换陷阱与两点标定精度实测]]></title><link>https://blog.csdn.net/michael_jovi/article/details/165620160</link><guid>https://blog.csdn.net/michael_jovi/article/details/165620160</guid><author>michael_jovi</author><pubDate>Fri, 18 Sep 2026 22:33:34 +0800</pubDate><description><![CDATA[称重是嵌入式最常见的测量需求之一，但应变桥传感器满量程输出只有几毫伏，F103 内置 12 位 ADC 直采等于自废武功。本文基于 STM32F103C8T6 + HX711 专用 ΣΔ 转换芯片 + 5kg 悬臂梁称重传感器，讲透惠斯通电桥的毫伏级信号链，逐位拆解 24 位补码数据帧与增益脉冲协议，给出 EXTI 就绪中断 + 临界区保护的完整驱动及两点标定实现。]]></description><category></category></item><item><title><![CDATA[STM32F103 双ADC交错采样实战：DUALMOD寄存器拆解、DMA位宽陷阱与1.71MSPS有效采样率实测]]></title><link>https://blog.csdn.net/michael_jovi/article/details/165748810</link><guid>https://blog.csdn.net/michael_jovi/article/details/165748810</guid><author>michael_jovi</author><pubDate>Fri, 18 Sep 2026 22:29:52 +0800</pubDate><description><![CDATA[STM32F103 的 ADC 标称 1MSPS，但 72MHz 主频下 ADCCLK 最高仅 12MHz，单 ADC 实测极限 857kSPS，难以满足高速采集需求。本文采用 ADC1+ADC2 交错采样模式（DUALMOD=0111），TIM3 TRGO 触发，ADC2 延迟 7 个 ADCCLK 硬件跟随，32 位 DMA 打包搬运，采样率翻倍至 1.71MSPS。实测：采样率 1.713MSPS（偏差 -0.06%），交错间隔 0.58μs，100kHz 输入 ENOB 10.3 位；]]></description><category></category></item><item><title><![CDATA[STM32F103 中断系统实战：NVIC 优先级分组陷阱、中断嵌套延迟实测与临界区保护选型]]></title><link>https://blog.csdn.net/michael_jovi/article/details/165621964</link><guid>https://blog.csdn.net/michael_jovi/article/details/165621964</guid><author>michael_jovi</author><pubDate>Thu, 17 Sep 2026 13:32:44 +0800</pubDate><description><![CDATA[本文基于STM32F103C8T6，通过EXTI0与TIM3中断嵌套场景，结合DWT周期计数器与逻辑分析仪，量化验证了中断响应延迟（EXTI0: 205ns，TIM3: 171ns）、嵌套开销及临界区性能。实测表明：优先级分组影响嵌套能力，FreeRTOS FromISR优先级违规导致偶发HardFault，修复后零复现。对比PRIMASK、BASEPRI与FreeRTOS临界区，分别耗时28ns、44ns、62ns，为中断系统配置与优化提供数据支撑。]]></description><category></category></item><item><title><![CDATA[STM32F103 bxCAN 双机通信实战：位时序采样点整定、回环自检与 Bus-Off 恢复实测]]></title><link>https://blog.csdn.net/michael_jovi/article/details/165623056</link><guid>https://blog.csdn.net/michael_jovi/article/details/165623056</guid><author>michael_jovi</author><pubDate>Thu, 17 Sep 2026 13:25:11 +0800</pubDate><description><![CDATA[汽车电子与工业现场中，CAN 双机通信看似接两根线就能通，实则暗藏三类高频陷阱：位时序不准导致波特率漂移、采样点失配引发偶发错误帧、Bus-Off 死锁让总线彻底瘫痪且无法自恢复。本文基于 STM32F103C8T6 + TJA1050 组建双节点 500kbps CAN 网络，采用"回环模式先行自检、位时序逐级整定、掩码过滤器硬件筛选、错误状态机实时监控"的完整落地流程。实测：采样点 88.9% 时 10000 帧零错误；位宽实测偏差仅 0.3%；总线负载 54% 下无丢帧；]]></description><category></category></item><item><title><![CDATA[STM32F103 复位来源诊断实战：RCC_CSR 标志位判优、BKP 复位计数持久化与六种复位源注入实测]]></title><link>https://blog.csdn.net/michael_jovi/article/details/165623974</link><guid>https://blog.csdn.net/michael_jovi/article/details/165623974</guid><author>michael_jovi</author><pubDate>Wed, 16 Sep 2026 21:17:35 +0800</pubDate><description><![CDATA[设备在现场莫名重启，日志里却只有一条"系统初始化"——看门狗超时、按键误触还是欠压掉电？凭猜排查效率极低。本文基于 STM32F103C8T6，以 RCC_CSR 复位标志寄存器为主线，建立"快照 → 优先级判优 → 清除"三步诊断流程，重点解决 NRST 标志污染导致的复位源误判；再利用 VBAT 备份域的 BKP 寄存器实现重启计数与累计运行时长的掉电持久化。实测六种复位源（上电、NRST、IWDG、WWDG、软件、选项字节装载）共 120 次注入全部识别正确；]]></description><category></category></item><item><title><![CDATA[STM32F103 定时器主从级联等精度测频实战：闸门同步快照、ITR 硬连线映射与 1Hz~1MHz 误差实测]]></title><link>https://blog.csdn.net/michael_jovi/article/details/165609974</link><guid>https://blog.csdn.net/michael_jovi/article/details/165609974</guid><author>michael_jovi</author><pubDate>Wed, 16 Sep 2026 14:31:41 +0800</pubDate><description><![CDATA[做嵌入式开发绕不开频率测量：霍尔传感器的转速脉冲、流量计的脉冲输出、超声换能器的驱动频率，本质上都是"数边沿"。最常见的做法是开一个 1 秒闸门，在定时器更新中断里读计数器，也就是教科书上的直接计数法（M 法）。这个方法在高频段表现很好，1 MHz 信号 1 秒闸门的相对误差只有 0.0001%。但它的误差公式是 ±1/N，N 是闸门内的脉冲数——频率越低，N 越小，误差越大。10 Hz 信号误差 ±10%，1 Hz 信号误差直接 ±100%，读数完全不可信。]]></description><category></category></item><item><title><![CDATA[STM32F407 FSMC 驱动 ILI9341 彩屏实战：从地址映射到窗口填充，全屏刷新 5.5ms 实测]]></title><link>https://blog.csdn.net/michael_jovi/article/details/164571069</link><guid>https://blog.csdn.net/michael_jovi/article/details/164571069</guid><author>michael_jovi</author><pubDate>Tue, 15 Sep 2026 09:28:49 +0800</pubDate><description><![CDATA[MCU 驱动彩屏时，SPI 方案带宽有限、GPIO 模拟 8080 时序又慢又不稳定，界面稍微复杂一点就明显卡顿。本文以 STM32F407VET6 + 2.8 寸 ILI9341（16 位 8080 并口）为例，讲解 FSMC 把 LCD 映射成内存地址的原理，从 RM0090 寄存器级解释 CubeMX 的 LCD Interface 配置，并按 ILI9341 手册时序参数推导 ADDSET/DATAST 取值。实测：读 ID 稳定返回 0x9341；]]></description><category></category></item><item><title><![CDATA[STM32F103 SPI 驱动 W5500 以太网模块实战：硬件协议栈寄存器体系、Socket 状态机避坑与 TCP 吞吐实测]]></title><link>https://blog.csdn.net/michael_jovi/article/details/165341294</link><guid>https://blog.csdn.net/michael_jovi/article/details/165341294</guid><author>michael_jovi</author><pubDate>Tue, 15 Sep 2026 09:27:48 +0800</pubDate><description><![CDATA[STM32F103 没有以太网 MAC，想联网只能换 F407 跑 LwIP，软件协议栈吃 RAM 又占 CPU。本文改用 W5500 硬件协议栈芯片，MAC、PHY、TCP/IP 全部片内完成，MCU 仅通过 SPI 读写寄存器。实测：VERSIONR 返回 0x04，ping 千包零丢失、RTT 0.31ms；SPI 时钟 4.5→18MHz 时，TCP 回显吞吐 0.36→1.31MB/s；RX 缓冲 2→16KB 时，UDP 千包丢包率 3.2%→0。文末附 6 类排查链与驱动代码。]]></description><category></category></item><item><title><![CDATA[STM32F103 舵机 PWM 控制实战：SG90 与 MG996R 脉宽整定、上电抖动根因与角度线性度实测]]></title><link>https://blog.csdn.net/michael_jovi/article/details/165126834</link><guid>https://blog.csdn.net/michael_jovi/article/details/165126834</guid><author>michael_jovi</author><pubDate>Sun, 13 Sep 2026 09:15:06 +0800</pubDate><description><![CDATA[舵机是云台、机械臂、航模舵面最常见的执行机构，但"让舵机转起来"容易，做项目时却被三个问题反复折磨：上电猛甩、角度对不上、带载发抖。本文基于 STM32F103C8T6，用 TIM2 定时器输出 50Hz PWM 驱动 SG90 与 MG996R 两种舵机，完整拆解了上电抖动的排查链（根因是 GPIO 初始化前浮空输入被误读为脉宽）与脉宽-角度校准方法。实测：SG90 在 0.5~2.4ms 区间线性度 R²=0.997，最大偏差 3.5°；]]></description><category></category></item><item><title><![CDATA[STM32F103 I2C 驱动 0.96 寸 OLED（SSD1306）实战：初始化序列逐字节拆解、页寻址陷阱与局部刷新帧率实测]]></title><link>https://blog.csdn.net/michael_jovi/article/details/165127476</link><guid>https://blog.csdn.net/michael_jovi/article/details/165127476</guid><author>michael_jovi</author><pubDate>Sun, 13 Sep 2026 09:14:13 +0800</pubDate><description><![CDATA[0.96 寸 OLED 是嵌入式项目最常见的显示器件，但网上教程多是"照抄初始化数组"，屏幕不亮、显示错位、刷新闪烁时便无从下手。本文基于 STM32F103C8T6 + 硬件 I2C1，从 SSD1306 的 GDDRAM 显存架构讲起，逐字节拆解 26 条初始化命令，重点剖析页寻址模式下"列地址回绕""光标不自动换行"两个隐蔽陷阱。实测：100kHz 全屏刷新 95.2ms（理论 92.2ms，偏差 3.3%），400kHz 降至 23.8ms；]]></description><category></category></item><item><title><![CDATA[STM32F407 DCMI驱动OV2640图像采集实战：SCCB配置、DMA双缓冲与PCLK极性排查实测]]></title><link>https://blog.csdn.net/michael_jovi/article/details/164819793</link><guid>https://blog.csdn.net/michael_jovi/article/details/164819793</guid><author>michael_jovi</author><pubDate>Sat, 12 Sep 2026 21:29:45 +0800</pubDate><description><![CDATA[在 MCU 端做图像采集，不少人的第一反应是用串口或 SPI 一点点把像素读回来，结果帧率低、画面撕裂、CPU 全程被打满。STM32F4 自带的 DCMI 数字摄像头接口配合 DMA，可以让 CPU 几乎不参与地搬运整帧数据，但它的配置项几乎全是"错一个位就花屏或干脆收不到帧"的硬约束：同步极性、数据宽度、DMA 通道映射都是芯片内部定死的。]]></description><category></category></item><item><title><![CDATA[STM32F407 I2S驱动WM8978音频播放实战：PLLI2S时钟整定、DMA双缓冲防爆音与WAV采样率实测]]></title><link>https://blog.csdn.net/michael_jovi/article/details/164863824</link><guid>https://blog.csdn.net/michael_jovi/article/details/164863824</guid><author>michael_jovi</author><pubDate>Sat, 12 Sep 2026 21:28:30 +0800</pubDate><description><![CDATA[采样率靠 PLLI2S 动态整定：I²SxCLK 必须能整除出目标 Fs，凑不出来就换 PLLI2SN/R；44.1 kHz 在 86 MHz 下注定变调。时钟寄存器顺序不能反：先关 PLLI2S 写分频，重初始化 I²S 后再写SPI_I2SPR，否则分频被覆盖。双缓冲段大小是延迟与稳定性的平衡点：本项目 4 KB/段（42.7 ms 延迟）是拐点，再小就 underrun。DMA 回调里只填数据：任何printf、目录扫描、解码耗时操作都会导致供数迟到。]]></description><category></category></item><item><title><![CDATA[STM32F103 USB自定义HID免驱设备实战：报告描述符逐字节拆解与64字节双向吞吐实测]]></title><link>https://blog.csdn.net/michael_jovi/article/details/164865697</link><guid>https://blog.csdn.net/michael_jovi/article/details/164865697</guid><author>michael_jovi</author><pubDate>Fri, 11 Sep 2026 21:43:44 +0800</pubDate><description><![CDATA[做数据采集设备时，USB 转串口要装驱动、串口被独占、Linux 下命名不统一，客户现场无管理员权限就装不上。本文基于 STM32F103C8T6 的 USB 全速外设，用 Vendor 自定义 HID 类搭一条免驱的 64 字节双向通道：设备端手工编写 Usage Page 0xFF00 报告描述符，上位机用 Python hidapi 收发，不依赖第三方驱动。]]></description><category></category></item><item><title><![CDATA[STM32F407 USB主机挂载U盘实战：VBUS供电瓶颈、MSC枚举状态机与FatFS扇区读写吞吐实测]]></title><link>https://blog.csdn.net/michael_jovi/article/details/164867583</link><guid>https://blog.csdn.net/michael_jovi/article/details/164867583</guid><author>michael_jovi</author><pubDate>Fri, 11 Sep 2026 21:42:43 +0800</pubDate><description><![CDATA[工业采集设备常需把本地数据导出到 U 盘，用 PC 软件或拆机取卡都不现实，让 MCU 直接做 USB 主机读写 U 盘是成本最低、免驱的落地方式。本文基于 STM32F407ZGT6 的 OTG_FS 外设，配置 Host Only + MSC 类驱动并桥接 FatFS，实现 U 盘挂载与文件读写。实测发现枚举失败主因并非软件，而是开发板 VBUS 由串口芯片 LDO 反灌、瞬态电流不足，改用独立 5V/1A 供电后枚举成功率从 40% 提升到 100%。]]></description><category></category></item><item><title><![CDATA[STM32F103 双机 NRF24L01+ 无线透传实战：Enhanced ShockBurst 链路参数整定与 2Mbps 端到端吞吐实测]]></title><link>https://blog.csdn.net/michael_jovi/article/details/164741794</link><guid>https://blog.csdn.net/michael_jovi/article/details/164741794</guid><author>michael_jovi</author><pubDate>Thu, 10 Sep 2026 10:58:43 +0800</pubDate><description><![CDATA[本文基于STM32F103C8T6与NRF24L01+模块，通过HAL库实现双机透传链路，系统整定Enhanced ShockBurst协议关键参数。实测在2Mbps速率下端到端吞吐达69.4KB/s（555kbps），室内20m视距丢包率仅0.4%，隔墙15m时升至21%，切换至250kbps后回落至0.6%。重点复盘了地址错配致MAX_RT、未清RX_DR导致仅收一包等典型故障，揭示TX_ADDR/RX_ADDR_P0、EN_AA、SETUP_RETR、RF_SETUP五寄存器协同机制，提供可复现的参数]]></description><category></category></item><item><title><![CDATA[STM32F103 FreeRTOS 任务CPU占用率实测：运行时统计接入、TIM2/DWT计时源对比与优先级饥饿调优]]></title><link>https://blog.csdn.net/michael_jovi/article/details/164738223</link><guid>https://blog.csdn.net/michael_jovi/article/details/164738223</guid><author>michael_jovi</author><pubDate>Thu, 10 Sep 2026 10:58:13 +0800</pubDate><description><![CDATA[多任务里"每个任务吃掉多少 CPU"长期靠猜，负载一上来，高优先级任务饿死低优先级、后台任务悄悄占掉一半主频，等老化测试才发现。本文在 STM32F103C8T6 + FreeRTOS 10.3.2 上接入 vTaskGetRunTimeStats，对比 SysTick、TIM2 直读、DWT 三种计时源，实测 5 档占空比统计误差 <±1.2%，DWT 在 59.6s 溢出后百分比突变 9632%，高优先级忙等致低优先级占用率归零的饥饿被量化复现，互斥量保护后串口乱码率由 100% 降至 0。]]></description><category></category></item></channel></rss>