📖 技术文库

STM32 / Arduino / RTOS / 嵌入式 知识文章
展开全部分类 (54)
STM32F4 系列 LSE 停振后自动切换 HSI 并保持 RTC 走时的实现细节
嵌入式 · 👁 39 阅读
在 STM32F4 系列 MCU 中,LSE(低速外部晶振)为 RTC 提供精确时钟,但在恶劣环境下可能停振,导致 RTC 失效。本文深入探讨 LSE 停振的检测机制,并给出一种在 LSE 失效后自动切换至 HSI(内部高速 RC 振荡器)并保持 RTC 走时的完整实现方案,涵盖原理、配置步骤、代码示例及注意事项,帮助开发者构建高可靠的嵌入式时钟系统。
STM32H7 双 Bank 模式下利用 Flash 擦写中断实现 OTA 无缝回滚的时序设计
嵌入式 · 👁 34 阅读
本文深入探讨 STM32H7 系列在双 Bank Flash 架构下,如何利用擦写中断(ECC 错误中断、操作完成中断)设计一套安全的 OTA 升级与无缝回滚时序。通过分析硬件特性、中断触发机制,并给出基于 HAL 库的完整代码示例,帮助开发者实现升级失败时自动回滚,且不影响系统实时性。适合具备一定嵌入式基础的工程师参考。
STM32F4 LSE 停振无感恢复:基于备份域寄存器的硬件 RTC 时间保持与自愈策略
嵌入式 · 👁 32 阅读
在工业与物联网场景中,STM32F4 的 LSE(32.768kHz 晶振)常因温漂、振动或焊接问题停振,导致 RTC 时间丢失。本文深入剖析 LSE 失效机理,提出一种利用备份域寄存器(BKP)与硬件 RTC 校准逻辑的无感恢复方案:在停振瞬间自动切换至 LSI 并保存时间戳,复位后通过备份域标志位无缝恢复。文章包含原理分析、寄存器级配置步骤、完整 C 代码示例及工程注意事项,帮助开发者构建高可靠时间系统。
ESP32-C3 低功耗模式中 RTC 内存保持与 ULP 协处理器唤醒的边界条件排查
嵌入式 · 👁 61 阅读
在 ESP32-C3 低功耗设计中,RTC 内存保持与 ULP 协处理器唤醒是两大核心机制,但二者存在微妙的边界条件:ULP 无法访问所有 RTC 内存,且唤醒后主 CPU 的恢复流程可能覆盖关键数据。本文深入剖析 RTC 内存分区、ULP 访问权限及唤醒时序,结合完整代码示例,指导开发者排查数据丢失、唤醒失败等典型问题,提升低功耗系统的稳定性。
ESP32 低功耗模式下 RTC 外设保持运行的边界条件与实测电流对比
嵌入式 · 👁 53 阅读
ESP32 在深度睡眠(Deep Sleep)下,RTC 外设(如 RTC 定时器、RTC GPIO、ULP 协处理器)仍可运行,但并非所有外设都能保持。本文深入解析 RTC 外设在低功耗模式下的边界条件,包括电源域划分、时钟源选择、唤醒源配置,并通过实测对比不同配置下的电流消耗,帮助开发者精准优化功耗。
STM32F4 低功耗 STOP 模式下的 RTC 与 DMA 数据采集完整配置方案
嵌入式 · 👁 42 阅读
在电池供电的物联网设备中,低功耗与数据采集的平衡至关重要。STM32F4 系列支持 STOP 模式,可将功耗降至微安级,但如何在此模式下保持 RTC 运行并利用 DMA 连续采集数据,是许多开发者面临的挑战。本文深入剖析 STOP 模式的工作原理,详细讲解 RTC 唤醒与 DMA 传输的配置步骤,并提供完整代码示例,帮助你在低功耗场景下实现可靠的数据记录。
STM32F4 DMA双缓冲与定时器触发ADC连续采样:缓冲区切换毛刺的消除方法
嵌入式 · 👁 35 阅读
在STM32F4系列微控制器中,使用DMA双缓冲配合定时器触发ADC进行连续采样,是高性能数据采集系统的常见方案。然而,许多开发者会遇到缓冲区切换瞬间产生的数据毛刺,导致波形失真或误码。本文将深入剖析毛刺产生的根源,并给出三种实用的消除方法,包括硬件同步、软件补偿和DMA配置优化,帮助您彻底解决这一嵌入式开发痛点。
ESP32-S3 多核模式下 FreeRTOS 任务与中断优先级对 Wi-Fi 吞吐量的量化影响
嵌入式 · 👁 48 阅读
ESP32-S3 双核架构下,FreeRTOS 任务调度与中断优先级配置直接影响 Wi-Fi 吞吐量。本文通过实测数据,量化分析任务优先级、中断抢占、CPU 亲和性对 TCP 吞吐的影响,并提供最优配置策略与代码示例,帮助开发者规避常见性能陷阱。
STM32 DMA 双缓冲传输的缓冲区对齐陷阱与 MPU 配置策略
嵌入式 · 👁 32 阅读
在 STM32 高性能系列(如 H7、F4)中,DMA 双缓冲模式能显著提升数据吞吐率,但许多开发者常因缓冲区对齐问题遭遇 Cache 一致性故障,导致数据错乱或系统崩溃。本文深入剖析 DMA 双缓冲的硬件对齐要求,结合 Cortex-M7 的 MPU 配置,给出完整的工程实践方案,涵盖原理、配置步骤、代码示例及常见陷阱,助你彻底规避这类嵌入式开发中的隐性雷区。
UART 不定长接收:DMA 环形缓冲区下的帧边界与噪声毛刺精确区分策略
嵌入式 · 👁 28 阅读
在嵌入式系统中,使用 DMA 环形缓冲区实现 UART 不定长接收是提升实时性与 CPU 效率的常用手段,但如何从连续数据流中精确区分有效帧与噪声毛刺,一直是开发者面临的痛点。本文深入剖析帧边界定义、噪声毛刺特征,并给出基于空闲检测、超时判定与数据校验的三层过滤机制,配合完整代码示例,助你构建鲁棒的接收方案。
ESP32-C3 低功耗模式下 RTC 内存保持与 GPIO 唤醒源冲突排查指南
嵌入式 · 👁 29 阅读
ESP32-C3 在深度睡眠(Deep Sleep)模式下,RTC 内存用于保存唤醒后的上下文,而 GPIO 唤醒源则依赖 RTC GPIO 控制器。然而,开发者常遇到 RTC 数据丢失或唤醒失败的问题,根源往往在于 GPIO 配置与 RTC 内存访问的冲突。本文深入剖析冲突机理,提供系统化排查步骤与完整代码示例,助你快速定位并解决低功耗设计中的隐性陷阱。
基于RTOS信号量实现多优先级串口打印缓冲池:彻底解决日志阻塞中断的嵌入式方案
嵌入式 · 👁 36 阅读
在嵌入式开发中,串口日志打印常因阻塞中断或低优先级任务饿死而成为系统隐患。本文深入剖析RTOS信号量机制,设计一个多优先级串口打印缓冲池,通过双缓冲与互斥信号量结合,实现日志的无阻塞异步输出,确保中断响应实时性。文章涵盖原理讲解、FreeRTOS配置步骤、完整代码示例及关键注意事项,助你构建健壮的日志系统。