📖 技术文库

STM32 / Arduino / RTOS / 嵌入式 知识文章
展开全部分类 (54)
ESP32 低功耗模式下 RTC 内存保持与 GPIO 唤醒源配置的坑与对策
嵌入式 · 👁 27 阅读
ESP32 在深度睡眠(Deep Sleep)模式下,RTC 内存是唯一能保存数据的区域,但很多开发者在使用 GPIO 唤醒时,常遇到 RTC 内存数据丢失、唤醒引脚配置失效、以及唤醒后系统不稳定等问题。本文从硬件原理出发,深入剖析 RTC 内存的电源域和 GPIO 唤醒源的映射关系,给出完整的配置步骤和代码示例,并总结常见坑点与解决方案,帮助开发者避开这些雷区,实现可靠的低功耗设计。
Arduino 上实现无中断的软件串口:基于定时器捕获与 DMA 的替代方案
嵌入式 · 👁 37 阅读
在资源受限的 Arduino 平台上,硬件串口数量往往不足,传统软件串口依赖中断和位敲打,实时性差且易冲突。本文提出一种基于定时器输入捕获与 DMA 的替代方案,彻底摆脱中断频繁介入,实现高效、稳定的软件串口收发。文章深入原理,给出完整配置步骤与代码示例,并探讨注意事项,适合希望突破 Arduino 串口限制的嵌入式开发者。
STM32 硬件 CRC 外设 vs 软件查表法:Modbus RTU 校验的性能对决与选型指南
嵌入式 · 👁 41 阅读
在嵌入式开发中,CRC 校验是保证数据完整性的基石,尤其在 Modbus RTU 通信中至关重要。STM32 内置硬件 CRC 外设,而软件查表法也是经典方案。本文深入剖析两者在 Modbus RTU 场景下的性能差异、实现细节与选型策略,通过基准测试数据揭示真相,并给出工程实践建议,助你做出最优决策。
STM32F4 168MHz 下多路 ADC 连续采样:DMA 总线冲突的规避策略与实战
嵌入式 · 👁 34 阅读
在 STM32F4 系列以 168MHz 主频运行时,多路 ADC 连续采样配合 DMA 是高效的数据采集方案,但总线冲突常导致采样数据错位,影响系统可靠性。本文深入剖析冲突根源,提供时钟配置、DMA 优先级调整、双缓冲与数据对齐等实用规避策略,并附完整代码示例,助你构建稳定、高速的嵌入式采集系统。
STM32F4 在 168MHz 下 SDRAM 帧缓冲的总线仲裁延迟实测与优化策略
嵌入式 · 👁 27 阅读
本文深入探讨 STM32F4 系列微控制器在 168MHz 主频下,使用外部 SDRAM 作为 LCD 帧缓冲时遇到的总线仲裁延迟问题。通过实际测量不同访问模式下的延迟数据,分析 AHB 总线矩阵、DMA 与 CPU 竞争 SDRAM 带宽的机理,并给出基于时序优化、DMA 优先级调整和内存布局重映射的实用解决方案,帮助开发者显著提升图形刷新流畅度。
STM32H7 FDCAN与CAN 2.0混合组网:波特率容错与仲裁时序实测深度解析
嵌入式 · 👁 28 阅读
在车载与工业控制中,FDCAN与经典CAN 2.0节点共存是常态。本文基于STM32H7系列,深入探讨混合组网时波特率偏差对仲裁场时序的影响,通过实测数据对比不同数据率下的容错边界,并给出配置策略与代码示例,帮助开发者规避隐性故障,提升总线鲁棒性。
基于 RTOS 信号量实现多任务对 SPI Flash 的原子读写保护
嵌入式 · 👁 39 阅读
在嵌入式多任务系统中,多个任务并发访问 SPI Flash 等共享外设时,容易产生数据竞争和总线冲突,导致读写错误甚至系统崩溃。本文深入剖析 RTOS 信号量的原理,并以 FreeRTOS 为例,详细讲解如何利用互斥信号量(Mutex)实现对 SPI Flash 的原子读写保护,提供完整代码示例和关键注意事项,帮助开发者构建稳定可靠的多任务嵌入式系统。
STM32F4 168MHz 下 DMA2D 双缓冲 GUI 刷新的时序优化实战
嵌入式 · 👁 30 阅读
在 STM32F4 系列以 168MHz 主频驱动 GUI 时,DMA2D 是提升刷新率的关键外设。本文深入剖析 DMA2D 双缓冲机制的原理,结合寄存器配置与中断同步,给出从初始化到完整刷屏的代码示例,并分享时序优化技巧与常见陷阱,帮助开发者突破帧率瓶颈。
RTOS 中优先级反转的隐蔽触发场景:中断里调用互斥锁的后果分析
嵌入式 · 👁 34 阅读
在嵌入式 RTOS 开发中,优先级反转是经典问题,但当中断服务程序(ISR)中误用互斥锁时,会引发一种隐蔽且致命的优先级反转场景。本文深入分析中断上下文调用互斥锁的底层机制,揭示其如何导致系统死锁、任务饿死及中断延迟失控,并提供基于 FreeRTOS 的完整代码示例、配置步骤与规避策略,帮助开发者避开这一陷阱。
嵌入式高精度采样:Arduino 上利用 ADC 过采样与抖动注入实现 16 位有效分辨率
嵌入式 · 👁 27 阅读
在嵌入式开发中,10 位或 12 位 ADC 往往难以满足高精度测量需求。本文深入探讨过采样与抖动注入的原理,并给出在 Arduino(AVR 或 SAMD 平台)上实现 16 位有效分辨率的完整方案。通过理论分析、代码实现和注意事项,帮助开发者在不更换硬件的前提下,显著提升 ADC 的分辨率与信噪比,适用于传感器数据采集、精密仪表等场景。
STM32 低功耗模式下 RTC 校准漂移的实测与补偿策略
嵌入式 · 👁 20 阅读
在电池供电的嵌入式设备中,RTC 在低功耗模式下的时间漂移常被忽视,却可能导致日志时间错乱或定时任务失效。本文基于 STM32L4 系列实测,分析 Stop 模式与待机模式下 RTC 的漂移特性,对比内部 RC 与外部晶振的误差来源,并给出实用的软件补偿策略(含温度补偿和周期校准),附带完整代码示例,帮助开发者将月误差从分钟级降至秒级。
ESP32 双核环境下 FreeRTOS 任务通知替代二值信号量:上下文切换开销实测对比
嵌入式 · 👁 23 阅读
在ESP32双核FreeRTOS应用中,任务间同步常使用二值信号量,但其内核调用和队列机制会引入额外开销。本文深入分析任务通知(Task Notification)作为轻量级替代方案的原理,并通过实测对比两者在上下文切换时间、CPU占用率上的差异。文章提供完整配置步骤、代码示例及性能数据,帮助开发者优化实时性敏感的系统。