📖 技术文库

STM32 / Arduino / RTOS / 嵌入式 知识文章
展开全部分类 (54)
ESP32双核FreeRTOS任务看门狗与中断看门狗同时触发的定位方法
嵌入式 · 👁 92 阅读
ESP32双核架构下,FreeRTOS任务看门狗(TWDT)与中断看门狗(IWDT)同时触发会导致系统反复重启,定位困难。本文从原理出发,分析两者同时触发的典型场景,提供基于Core Dump、看门狗日志与任务状态快照的联合定位方法,并给出完整代码示例与配置步骤,帮助开发者快速锁定死循环、中断阻塞或优先级反转等根因。
DMA+空闲中断实现串口不定长接收:帧尾超时判定的三种策略对比
嵌入式 · 👁 84 阅读
串口不定长接收是嵌入式开发中的常见需求,DMA+空闲中断方案能高效处理数据。但空闲中断的触发时机受波特率和总线负载影响,帧尾超时判定策略直接决定数据完整性。本文深入分析固定超时、动态超时和硬件定时器三种策略的原理、实现与优劣,提供完整代码示例和选型建议,帮助你在实际项目中做出最优决策。
STM32 HAL库中HAL_Delay在中断上下文里调用会卡死的原因与替代延时方案
嵌入式 · 👁 73 阅读
本文深入剖析STM32 HAL库中HAL_Delay在中断服务函数中调用导致系统卡死的根本原因,从SysTick中断优先级与HAL_Delay实现机制入手,解释为何在中断上下文中使用HAL_Delay会引发死锁。针对该问题,文章提供三种可靠的替代延时方案:基于DWT的周期精确延时、基于硬件定时器的微秒级延时以及基于轮询计数器的简单延时,并给出完整代码示例与配置步骤,最后总结中断上下文编程的注意事项,帮助开发者避免常见陷阱。
STM32 HAL库中HAL_Delay的SysTick优先级配置陷阱与替代延时方案实测
嵌入式 · 👁 83 阅读
本文深入剖析STM32 HAL库中HAL_Delay依赖的SysTick中断优先级配置陷阱,揭示高优先级中断导致延时不准确的根源,并提供三种替代延时方案(DWT周期计数器、硬件定时器、查询式延时)的实测对比与完整代码,帮助开发者规避常见坑点,提升系统实时性。
用DWT周期计数器在Cortex-M上做函数级耗时统计的零侵入实现
嵌入式 · 👁 83 阅读
在嵌入式开发中,函数级耗时统计对性能优化至关重要。传统方法需修改函数体或依赖硬件定时器,侵入性强且精度有限。本文介绍利用Cortex-M内核自带的DWT周期计数器,结合链接器脚本与钩子函数,实现零侵入的函数耗时统计。内容涵盖DWT原理、配置步骤、完整代码示例及注意事项,帮助开发者快速定位性能瓶颈,适用于STM32等Cortex-M3/M4/M7平台。
STM32 HAL库DMA串口接收:半满中断与空闲中断协同处理及丢包排查实战
嵌入式 · 👁 85 阅读
本文深入剖析STM32 HAL库下DMA串口接收中半满中断与空闲中断的协同工作机制,从原理出发,提供完整的配置步骤与代码示例,并针对实际开发中常见的丢包问题给出系统化的排查思路与解决方案,帮助开发者构建稳定高效的串口数据接收框架。
STM32 SPI从机模式:NSS脉冲与DMA双缓冲时序配合及丢包排查实战
嵌入式 · 👁 109 阅读
本文深入剖析STM32 SPI从机模式下NSS脉冲与DMA双缓冲的时序配合问题。针对从机模式中常见的丢包现象,从硬件时序、DMA配置、中断优先级等方面分析原因,给出完整的配置步骤与代码示例,并提供实用的排查方法,帮助开发者构建稳定可靠的高速SPI从机通信。
STM32 HAL库中__weak函数重写后仍进默认回调的链接顺序排查
嵌入式 · 👁 75 阅读
在STM32开发中,重写HAL库的__weak回调函数是常见操作,但有时明明重写了函数,程序却仍进入默认的弱符号实现。本文深入分析GCC链接器对弱符号的处理机制,揭示链接顺序、目标文件包含关系以及链接脚本对符号解析的影响,并提供完整的排查步骤与代码示例,帮助开发者彻底解决这一隐蔽问题。
STM32 DMA+空闲中断实现串口不定长数据接收:从原理到避坑全指南
嵌入式 · 👁 76 阅读
串口不定长数据接收是嵌入式开发中的常见需求,传统逐字节中断方式占用CPU资源且易丢包。本文深入讲解STM32的DMA+空闲中断方案,涵盖原理剖析、CubeMX配置步骤、完整代码实现,并分享实际调试中遇到的典型问题与解决方案,帮助开发者快速掌握高效可靠的串口通信技术。
用DWT周期计数器在Cortex-M上做无侵入函数耗时统计的落地方法
嵌入式 · 👁 67 阅读
函数耗时统计是嵌入式性能调优的刚需,传统GPIO翻转或定时器方案存在侵入性强、精度低的问题。本文基于Cortex-M内核的DWT周期计数器,实现纳秒级、零侵入的函数耗时测量。文章详解DWT工作原理、寄存器配置、多平台适配要点,并提供可直接移植的完整代码与实测数据,帮助开发者在STM32等平台上快速落地性能剖析能力。
STM32 HAL库中__weak函数被用户重定义后仍走默认实现的链接排查
嵌入式 · 👁 47 阅读
在STM32 HAL库开发中,用户常通过重定义__weak函数(如HAL_UART_RxCpltCallback)实现自定义逻辑,但有时发现重定义后仍执行默认空实现。本文深入分析链接器处理__weak符号的机制,揭示常见原因:函数签名不匹配、未包含声明头文件、链接顺序问题、优化等级导致符号被丢弃等。通过原理讲解、配置步骤、完整代码示例和注意事项,帮助开发者快速定位并解决此类链接问题,确保回调函数正确覆盖。
STM32串口DMA+空闲中断接收不定长帧:半包与粘包的边界处理实战
嵌入式 · 👁 76 阅读
串口不定长帧接收是嵌入式开发中的常见需求,DMA+空闲中断方案能高效处理,但半包与粘包问题常导致数据解析错误。本文深入剖析空闲中断的触发机制与DMA传输的时序关系,提出基于双缓冲与帧头帧尾校验的边界处理策略,给出完整可移植的C代码实现,并总结实际调试中的关键注意事项,帮助开发者彻底解决不定长帧接收的边界难题。