📖 技术文库

STM32 / Arduino / RTOS / 嵌入式 知识文章
展开全部分类 (54)
用DWT周期计数器在Cortex-M上测量中断响应延迟的实操方法
嵌入式 · 👁 51 阅读
中断响应延迟是嵌入式实时系统的关键指标,但仅靠GPIO翻转和示波器难以获得精确的周期级数据。本文介绍如何利用Cortex-M内核自带的DWT周期计数器,在无额外硬件的情况下精确测量从中断触发到ISR第一条指令执行的延迟。文章涵盖DWT原理、配置步骤、完整代码示例及常见陷阱,帮助开发者快速定位中断延迟瓶颈。
STM32 HAL库DMA串口空闲中断接收不定长数据的丢包排查与环形缓冲改造
嵌入式 · 👁 47 阅读
本文针对STM32 HAL库下DMA+串口空闲中断接收不定长数据时常见的丢包问题,深入分析HAL_UARTEx_ReceiveToIdle_DMA的机制缺陷与中断响应延迟根源,提出基于环形缓冲区的改造方案。通过原理讲解、配置步骤、完整代码示例与注意事项,帮助开发者彻底解决高波特率下数据丢失问题,提升串口通信可靠性。
STM32定时器输入捕获测PWM占空比:从模式复位自动清零计数器实战
嵌入式 · 👁 53 阅读
本文深入讲解STM32定时器输入捕获测量PWM占空比时,如何利用从模式复位(Slave Mode Reset)实现计数器自动清零,避免每次捕获后手动写CNT。文章涵盖原理分析、CubeMX配置步骤、完整代码示例及关键注意事项,帮助开发者提升测量精度与代码效率。
STM32 HAL库DMA串口空闲中断接收不定长数据:避免半包与粘包并实现零拷贝环形缓冲
嵌入式 · 👁 43 阅读
本文深入讲解STM32 HAL库下利用DMA+串口空闲中断接收不定长数据时,如何通过环形缓冲与零拷贝技术解决半包与粘包问题。从原理分析、CubeMX配置、代码实现到注意事项,提供完整可落地的方案,帮助开发者构建高效可靠的串口通信框架。
STM32 HAL库ADC多通道DMA扫描模式通道顺序错乱的排查与重排方案
嵌入式 · 👁 52 阅读
本文针对STM32 HAL库中ADC多通道DMA扫描模式下数据顺序与预期通道顺序不一致的问题,深入分析ADC扫描序列与DMA传输的映射机制,指出常见配置误区,并提供基于CubeMX和手动重排的两种解决方案。通过原理讲解、配置步骤、完整代码示例和注意事项,帮助开发者快速定位并修复通道顺序错乱问题,确保多通道采集数据的正确性。
STM32F4系列ADC注入通道与规则通道混用时EOC标志误判的配置修正
嵌入式 · 👁 49 阅读
本文针对STM32F4系列ADC在同时使用注入通道和规则通道时,因EOC标志误判导致数据读取错误的常见问题,深入分析ADC状态寄存器中EOC、JEOC标志的置位机制,指出规则组与注入组转换完成标志的混淆原因,并提供基于HAL库的配置修正方案与完整代码示例,帮助开发者彻底解决混用场景下的标志误判问题。
从一次HardFault定位到栈溢出:用Keil MDK调用栈回溯与map文件排查实战
嵌入式 · 👁 45 阅读
嵌入式开发中HardFault异常常令人头疼,尤其当故障由栈溢出引发时,仅靠调试器难以直接定位。本文以一次真实案例为线索,讲解如何利用Keil MDK的调用栈回溯、map文件分析及栈使用量检查,快速锁定溢出点。涵盖原理、配置步骤、完整代码示例与注意事项,助你掌握系统级排查方法。
STM32 HAL库SPI DMA传输完成回调中再次启动DMA导致总线错误的排查与规避
嵌入式 · 👁 46 阅读
本文针对STM32 HAL库开发中,在SPI DMA传输完成回调函数内直接再次启动DMA传输而引发总线错误(BusFault)的典型问题,深入分析HAL库DMA状态机与中断处理机制,揭示错误根源在于DMA通道未完全释放时重复配置。文章提供三种规避方案:延迟重启、状态标志轮询、使用HAL_SPI_TransmitReceive_DMA的循环模式,并给出完整代码示例与调试技巧,帮助开发者彻底解决该隐蔽性故障。
RTOS任务栈溢出静默踩内存:用MPU栈保护区+填充字双保险定位法
嵌入式 · 👁 54 阅读
RTOS任务栈溢出常导致静默踩内存,系统行为异常却难以定位。本文详解栈溢出原理,提出MPU栈保护区与填充字双保险检测方案:MPU在栈底设置不可访问区触发硬件异常,填充字周期性扫描发现越界。给出STM32CubeIDE下FreeRTOS完整配置步骤与代码示例,并总结注意事项,助你快速定位栈溢出问题。
从寄存器层面拆解STM32 GPIO复用功能与重映射配置,避免外设引脚冲突
嵌入式 · 👁 44 阅读
本文深入STM32 GPIO的复用功能(AF)与重映射机制,从寄存器层面解析配置流程。通过剖析AFR、MODER、CRL/CRH等关键寄存器,结合USART、SPI等外设实例,给出完整的寄存器级代码示例与避坑指南,帮助开发者彻底理解引脚复用逻辑,有效解决外设引脚冲突问题。
FreeRTOS中vTaskDelay与vTaskDelayUntil混用导致周期任务漂移的实测对比
嵌入式 · 👁 44 阅读
本文通过实测对比FreeRTOS中vTaskDelay与vTaskDelayUntil在周期任务中的表现,揭示混用两者导致任务周期漂移的根本原因。文章从原理出发,给出配置步骤与完整代码示例,并总结避免漂移的注意事项,帮助嵌入式开发者正确选择延时API,确保周期任务的时间确定性。
基于DMA双缓冲的串口不定长帧接收:空闲中断与半传输中断的协同配置
嵌入式 · 👁 41 阅读
串口不定长帧接收是嵌入式开发中的常见需求,传统中断方式占用CPU资源高。本文深入讲解如何利用STM32的DMA双缓冲机制,结合空闲中断与半传输中断,实现高效、可靠的不定长帧接收。从原理分析到CubeMX配置,再到完整代码实现,逐步剖析关键细节,并给出实际应用中的注意事项,帮助开发者掌握这一实用技能。