蘑
菇
助手
MCU助手 · 单片机工具箱
登录
注册
🏠
首页
🧰
工具
📖
文库
❓
问答
✍️
提问
🏠 首页 /
技术文库
📖 技术文库
STM32 / Arduino / RTOS / 嵌入式 知识文章
全部
STM32
STM32 定时器
STM32 串口
STM32 ADC
Arduino 入门
STM32 看门狗
STM32 I2C
STM32 DMA
STM32 低功耗
STM32 编码器
RTOS RTOS
STM32 PWM
嵌入式 IO
STM32 SPI
STM32 中断
STM32 时钟
STM32 存储
Arduino 进阶
ESP32 WiFi
嵌入式 协议
STM32 CAN
STM32 USB
STM32 RTC
STM32 DAC
STM32 GPIO
STM32 传感器
嵌入式 架构
STM32 Boot
嵌入式 调试
STM32 电机
嵌入式 PCB
ESP32 低功耗
STM32 寄存器
嵌入式 C语言
STM32 架构
STM32 显示
STM32 外设
嵌入式 内存
STM32 工具
STM32 调试
嵌入式 稳定性
嵌入式 电源
STM32 安全
嵌入式 RTOS
嵌入式 存储
STM32 Bootloader
STM32 协议
ESP32 物联网
ESP32 OTA
ESP32 蓝牙
嵌入式 显示
嵌入式 驱动
嵌入式 电机
STM32 入门
RTOS 看门狗
嵌入式 CAN
项目 实战
嵌入式 控制
嵌入式 蓝牙
嵌入式 传感器
嵌入式
展开全部分类 (54)
STM32F4 LSE 停振自愈:RTC 校准寄存器实现秒级恢复的实战指南
嵌入式 · 👁 27 阅读
在工业与物联网应用中,LSE 晶振因环境或老化停振会导致 RTC 失准,甚至系统挂起。本文深入剖析 STM32F4 的 RTC 时钟安全系统(CSS)与校准机制,手把手教你配置 LSE 故障检测、切换 LSI 备用时钟,并利用 RTC 同步与校准寄存器(RTC_CALR)实现秒级自愈,确保时间戳连续且误差可控。代码基于 HAL 库,含完整工程要点与避坑指南。
STM32F4 系列 D-Cache 与 DMA 数据一致性:三种典型场景与规避方案
嵌入式 · 👁 41 阅读
在 STM32F4 系列(如 F4x9)中,当启用 D-Cache 后,DMA 与外设之间的数据一致性成为嵌入式开发中的常见痛点。本文深入剖析三种典型场景:DMA 写入内存、CPU 写内存后 DMA 读取、以及外设寄存器与内存交互,并给出基于硬件维护(如 SCB_CleanDCache/InvalidateDCache)和软件设计(如内存属性配置、双缓冲)的规避方案。通过原理讲解、配置步骤和完整代码示例,帮助开发者避免数据错乱,提升系统稳定性。
UART不定长接收:DMA+环形缓冲区下帧超时与半满中断的竞态精确处理
嵌入式 · 👁 46 阅读
在STM32等嵌入式平台上,使用DMA+环形缓冲区实现UART不定长接收是高效且常见的方案,但帧超时与半满中断的竞态常导致数据错乱或丢失。本文深入剖析竞态产生的根源,并给出基于硬件定时器、DMA半满/传输完成中断及状态机的精确处理策略,附带完整代码示例,助你构建健壮的接收框架。
ESP32 多核环境下 FreeRTOS 任务与事件组在 WiFi 协议栈抢占下的优先级反转实战排查
嵌入式 · 👁 57 阅读
在 ESP32 双核 FreeRTOS 应用中,WiFi 协议栈任务(如 wl2_tcb、ipc0)会以高优先级抢占用户任务,导致事件组同步逻辑出现优先级反转,表现为任务卡死或响应延迟。本文通过一个实际案例,深入分析多核调度与事件组等待的交互机制,提供完整的排查思路、代码示例和修复方案,帮助开发者避开这一常见陷阱。
RTOS 中优先级反转的隐蔽触发场景:互斥量与消息队列混用时的排查方法
嵌入式 · 👁 32 阅读
在嵌入式实时系统(RTOS)中,优先级反转是导致任务调度异常、响应超时的经典问题。然而,当互斥量(Mutex)与消息队列(Queue)混用时,优先级反转可能以更隐蔽的方式触发,甚至绕过常规的优先级继承机制。本文深入剖析这一场景的底层原理,结合具体代码示例,给出系统化的排查与修复方法,帮助开发者避免这类“隐形杀手”对系统实时性的破坏。
STM32 低功耗模式(STOP2)下 RTC 闹钟唤醒后 GPIO 状态恢复的陷阱与配置顺序
嵌入式 · 👁 45 阅读
在 STM32 低功耗设计中,STOP2 模式配合 RTC 闹钟唤醒是常见方案,但唤醒后 GPIO 状态恢复常被忽视,导致外设误动作。本文深入剖析 STOP2 模式下 GPIO 状态丢失的硬件机制,揭示配置顺序对恢复的关键影响,并给出完整的代码示例与调试建议,帮助开发者避开陷阱,实现稳定可靠的低功耗应用。
RTOS下多生产者单消费者环形缓冲区的无锁化改造:信号量驱动的实战指南
嵌入式 · 👁 47 阅读
在嵌入式实时系统中,多任务间的高效数据交换常依赖环形缓冲区。然而,当多个生产者任务同时写入时,传统的互斥锁机制会引入优先级反转和上下文切换开销。本文深入探讨如何利用RTOS信号量(Semaphore)实现多生产者单消费者(MPSC)场景下的无锁化环形缓冲区,通过巧妙设计避免数据竞争,提升系统实时性。文章将剖析原理、给出完整代码示例,并分享关键注意事项,助你掌握这一高性能并发编程技巧。
STM32 不定长串口接收:DMA 环形缓冲区 + 空闲中断的边界条件深度剖析
嵌入式 · 👁 50 阅读
在嵌入式开发中,串口接收不定长数据是常见需求,但处理不当极易丢帧。本文深入讲解如何利用 DMA 环形缓冲区配合空闲中断,实现高效、可靠的 STM32 不定长串口接收。文章不仅涵盖原理与配置步骤,更重点分析了环形缓冲区读写指针的边界条件、DMA 半传输中断与空闲中断的协同机制,以及常见陷阱的规避方法,助你彻底告别丢帧困扰。
STM32F4 LSE 停振应急手册:备份域寄存器实现无损时钟切换与故障记录
嵌入式 · 👁 38 阅读
在工业与物联网场景中,STM32F4 的 LSE(32.768kHz 低速外部晶振)常因环境干扰或老化而停振,导致 RTC 失准甚至系统挂起。本文深入剖析 LSE 失效检测机制,并演示如何利用 RTC 备份域寄存器(BKP)在中断服务函数中完成时钟源无缝切换(LSE→LSI),同时将故障时间与状态原子化写入备份寄存器,实现掉电不丢失的故障记录。文章包含原理图解、CubeMX 配置步骤、完整 C 代码示例及工程注意事项,助你构建高可靠的时钟管理模块。
AVR 软中断黑科技:用 SREG 保留位在 Arduino 上实现任务切换
嵌入式 · 👁 55 阅读
在 Arduino 上实现多任务通常依赖定时器中断或协作式调度,但 AVR 内核中隐藏着一个未公开的 SREG 位——T 标志(Bit 6),它可以在不占用任何外设资源的情况下,通过软件触发中断级任务切换。本文将深入剖析 T 标志的工作原理,展示如何利用它构建一个轻量级、低延迟的软中断调度器,并给出完整代码示例与注意事项,帮助你在资源受限的 MCU 上实现接近 RTOS 的并发体验。
ESP32-C3 低功耗模式下 RTC 内存保持与快速唤醒的边界条件分析
嵌入式 · 👁 66 阅读
ESP32-C3 作为 RISC-V 架构的低功耗 Wi-Fi/BLE SoC,其深度睡眠模式下的 RTC 内存保持能力是设计低功耗物联网设备的关键。然而,RTC 内存并非无限,且唤醒延迟受多种边界条件制约。本文深入剖析 ESP32-C3 在深度睡眠下 RTC 内存的可用大小、数据保持的电气条件、以及快速唤醒的时序约束,结合寄存器配置与代码示例,帮助开发者规避常见陷阱,实现最优功耗与响应速度的平衡。
ESP32 双核环境下 FreeRTOS 任务优先级反转的实测分析与规避策略
嵌入式 · 👁 39 阅读
在 ESP32 双核 FreeRTOS 系统中,优先级反转是导致实时性失控的隐形杀手。本文通过实测复现经典反转场景,深入剖析双核调度下的特殊表现,并给出互斥量、优先级继承、任务隔离等实用规避策略。文章包含完整代码示例与实验数据,帮助开发者构建高可靠嵌入式系统。
‹
1
...
23
24
25
...
154
›