📖 技术文库

STM32 / Arduino / RTOS / 嵌入式 知识文章
展开全部分类 (54)
ESP32 双核环境下 FreeRTOS 任务与 Arduino loop() 的优先级反转陷阱及规避
嵌入式 · 👁 5 阅读
在 ESP32 双核架构下,Arduino loop() 与 FreeRTOS 任务共享 CPU 资源,但开发者常忽视其优先级差异,导致优先级反转、任务饿死或系统卡顿。本文深入剖析 loop() 在双核中的运行机制,揭示其与 FreeRTOS 任务之间的优先级反转陷阱,并提供基于互斥锁、任务通知和核绑定的实用规避策略,附完整代码示例,助你构建稳定可靠的嵌入式系统。
ESP32 低功耗模式下 RTC 内存数据丢失的边界条件与规避策略
嵌入式 · 👁 4 阅读
ESP32 在深度睡眠等低功耗模式下依赖 RTC 内存保存关键数据,但开发者常因忽视边界条件导致数据意外丢失。本文深入剖析 RTC 内存的物理特性、电源域切换、复位类型及编译链接等边界条件,并给出实用的规避策略与代码示例,帮助你在低功耗设计中可靠地保存数据。
ESP32-C3 低功耗模式实战:RTC 内存保持与 GPIO 唤醒源的冲突排查与解决
嵌入式 · 👁 4 阅读
在 ESP32-C3 低功耗开发中,RTC 内存用于保存唤醒后的关键数据,而 GPIO 唤醒源则负责将芯片从深度睡眠中唤醒。然而,两者常因引脚复用、电源域隔离或配置顺序不当而冲突,导致数据丢失或无法唤醒。本文通过一个实际项目案例,深入剖析冲突根源,并给出完整的排查流程、代码示例及规避策略,帮助开发者快速定位并解决此类问题。
ESP32 双核环境下 FreeRTOS 任务与中断优先级嵌套的实战调优指南
嵌入式 · 👁 4 阅读
ESP32 双核架构为 FreeRTOS 提供了强大的并行处理能力,但任务调度与中断优先级嵌套的配置不当会导致性能瓶颈或不可预测的延迟。本文深入剖析双核环境下的调度机制、中断优先级模型,并结合实际案例给出任务分配、优先级设置及中断嵌套的调优策略,帮助开发者构建稳定高效的嵌入式系统。
嵌入式高精度温度测量:利用 Arduino ADC 采样抖动与过采样技术
嵌入式 · 👁 4 阅读
在嵌入式系统中,使用 Arduino 内置 ADC 进行温度测量时,常受限于 10 位分辨率与噪声干扰。本文深入探讨采样抖动(Dithering)与过采样(Oversampling)原理,结合硬件电路与软件算法,在不增加外部高精度 ADC 的情况下,将有效分辨率提升至 13 位以上。文章提供完整代码示例与配置步骤,帮助开发者掌握低成本高精度测温的实用技巧。
STM32F4 LSE停振无感恢复:RTC备份寄存器与时间戳补偿实战
嵌入式 · 👁 4 阅读
在STM32F4系列中,LSE(低速外部晶振)停振会导致RTC失准,影响依赖时间的系统。本文深入探讨如何利用RTC备份寄存器保存关键时间戳,结合HSE/HSI自动切换实现无感恢复,并设计时间戳补偿算法,确保系统时间连续性和精度。文章提供完整代码示例,涵盖原理、配置步骤及注意事项,助力开发者构建高可靠嵌入式时钟系统。
ESP32 低功耗模式下 RTC 外设保持工作的边界条件与实测电流对比
嵌入式 · 👁 4 阅读
在电池供电的物联网设备中,ESP32 的低功耗模式(如 Deep Sleep)常被用于延长续航,但 RTC 外设(如定时器、GPIO 唤醒、ULP 协处理器)能否在特定模式下保持工作,直接决定了系统架构的可行性。本文深入剖析 ESP32 各低功耗模式下 RTC 外设的边界条件(供电域、时钟源、唤醒源),并通过实测电流数据对比不同配置下的功耗差异,帮助开发者精准选择低功耗策略,避免“假休眠”导致的电流飙升。
RTOS 中优先级反转导致看门狗误触发:基于互斥量与优先级继承的排查流程
嵌入式 · 👁 4 阅读
在嵌入式实时系统中,优先级反转是导致任务调度异常、看门狗误触发的常见隐患。本文以一个实际案例为切入点,深入剖析优先级反转的成因、对系统时序的影响,并详细讲解如何利用互斥量与优先级继承机制进行排查与修复。通过配置步骤、代码示例和调试技巧,帮助开发者快速定位并解决此类问题,提升系统稳定性。
STM32H7 400MHz 主频下 Flash 零等待执行与缓存命中率对实时性的影响实测
嵌入式 · 👁 4 阅读
STM32H7 系列以 400MHz 主频和双核架构成为高性能嵌入式应用的标杆,但其片内 Flash 在如此高频下无法直接零等待访问,必须依赖指令缓存(I-Cache)和数据缓存(D-Cache)以及 Flash 预取策略。本文通过实际测试,量化了零等待执行与缓存命中率对中断响应时间和循环执行周期的影响,并给出配置建议,帮助开发者在实时性敏感场景中做出最优选择。
STM32F4 LSE停振后RTC无缝恢复:硬件无校验方案与时间连续性保障
嵌入式 · 👁 4 阅读
在STM32F4系列嵌入式系统中,LSE(低速外部晶振)停振是RTC(实时时钟)失效的常见隐患,尤其在工业或电池供电场景。本文深入剖析LSE停振的检测机制与RTC备份域特性,提出一种无需软件校验、仅依赖硬件自动切换的恢复方案,确保时间在停振期间不丢失、恢复后连续运行。通过配置LSI作为后备时钟源、利用RTC的BINR/BSRR寄存器与备份寄存器标志,实现毫秒级无缝切换。文章提供完整CubeMX配置步骤、HAL库代码示例及关键注意事项,助力开发者构建高可靠时钟系统。
ESP32 多核环境下 FreeRTOS 任务与中断优先级嵌套导致死锁的排查方法
嵌入式 · 👁 4 阅读
在ESP32双核平台上,FreeRTOS任务与中断的优先级嵌套是常见设计,但不当使用会导致死锁,表现为系统卡死或任务饿死。本文深入分析死锁的成因,特别是多核环境下的竞争条件,提供系统化的排查流程,包括日志分析、优先级配置检查、临界区审查,并给出可复现的代码示例和修复方案,帮助开发者快速定位并解决此类问题。
基于 RT-Thread 的临界区保护在中断与线程共享外设时的死锁排查实战
嵌入式 · 👁 3 阅读
在 RT-Thread 嵌入式开发中,中断与线程共享外设(如 UART、SPI)时,临界区保护不当极易引发死锁。本文通过一个真实案例,深入剖析死锁的根因——中断中调用挂起线程的 API 与线程中持有信号量导致的优先级反转,并给出基于临界区嵌套、中断屏蔽和信号量超时的完整解决方案,附可复现代码与排查工具链。