📖 技术文库

STM32 / Arduino / RTOS / 嵌入式 知识文章
展开全部分类 (54)
STM32 HAL库中HAL_Delay在中断上下文调用导致死锁的成因与替代方案
嵌入式 · 👁 83 阅读
本文深入剖析STM32 HAL库中HAL_Delay在中断服务函数中调用引发死锁的根本原因,从SysTick中断优先级与HAL_Delay实现机制入手,揭示优先级冲突导致的系统挂死现象。提供三种实用替代方案:基于DWT的微秒级延时、硬件定时器延时以及非阻塞状态机设计,并给出完整代码示例与配置步骤,帮助开发者规避中断上下文延时陷阱,提升系统实时性与可靠性。
ESP32双核下FreeRTOS任务看门狗与IDLE任务饥饿的定位方法
嵌入式 · 👁 100 阅读
ESP32双核运行FreeRTOS时,任务看门狗(TWDT)超时与IDLE任务饥饿是常见但难定位的稳定性问题。本文从原理出发,分析双核调度特性、TWDT与IDLE任务的关系,给出基于esp_task_wdt与运行时统计的定位步骤,并提供完整代码示例与避坑指南,帮助开发者快速锁定饥饿任务与看门狗误触发根源。
用DWT周期计数器替代SysTick做微秒级函数耗时测量的实操方法
嵌入式 · 👁 79 阅读
在嵌入式开发中,函数耗时测量对性能优化至关重要。SysTick定时器常被用作时基,但其毫秒级分辨率难以满足微秒级测量需求。本文介绍如何利用Cortex-M内核的DWT周期计数器实现高精度耗时测量,涵盖原理、配置步骤、完整代码示例及注意事项,帮助开发者精准定位性能瓶颈。
STM32内部参考电压VREFINT反推VDDA:低成本电池电压监测的校准流程
嵌入式 · 👁 88 阅读
在电池供电的嵌入式设备中,监测电池电压是常见需求。直接使用ADC测量VDD引脚电压会因VDDA未知而无法换算。STM32内部集成的参考电压VREFINT提供了一个已知的稳定基准(典型1.20V),通过测量VREFINT的ADC值可反推出当前VDDA,进而实现无需外部基准芯片的低成本电池电压监测。本文详解原理、校准步骤、完整代码与注意事项。
STM32串口不定长收包实战:DMA+空闲中断全配置与避坑指南
嵌入式 · 👁 77 阅读
串口不定长数据接收是嵌入式开发中的高频需求。本文深入剖析STM32的DMA+空闲中断方案,从原理、CubeMX配置、代码实现到常见陷阱,提供完整可移植的工程代码,并分享实际调试中遇到的坑与解决方案,帮助开发者快速掌握高效可靠的串口收包技术。
STM32串口DMA+空闲中断:彻底解决不定长收包中的半包与粘包边界判定
嵌入式 · 👁 84 阅读
串口不定长收包是嵌入式开发中的高频需求,DMA+空闲中断方案虽能降低CPU负载,但半包与粘包问题常导致协议解析失败。本文深入剖析空闲中断的触发机制与DMA传输计数的时序关系,提出基于“时间窗+长度差”的边界判定策略,并给出完整的HAL库实现代码与避坑指南,帮助开发者稳定处理变长数据帧。
用DWT周期计数器在Cortex-M上实现纳秒级函数耗时测量与误差校准
嵌入式 · 👁 63 阅读
在嵌入式性能调优中,精确测量函数耗时至关重要。本文介绍如何利用Cortex-M内核的DWT周期计数器实现纳秒级测量,涵盖原理、配置步骤、完整代码示例,并深入分析误差来源与校准方法。面向有一定基础的开发者,帮助你在无示波器条件下快速定位热点函数,提升代码执行效率。
STM32 HAL库中DMA与中断同时操作同一外设时的优先级冲突排查与解决
嵌入式 · 👁 78 阅读
在STM32开发中,DMA与中断同时服务同一外设(如UART、SPI)时,常出现数据错乱、丢包或HardFault。本文从NVIC优先级、DMA请求与中断响应时序出发,剖析冲突根因,给出基于HAL库的配置步骤、完整代码示例与排查清单,帮助开发者彻底解决这类隐蔽的优先级冲突问题。
ESP32双核调度实战:WiFi任务钉Core0、应用逻辑放Core1的实测与栈配置
嵌入式 · 👁 87 阅读
ESP32双核FreeRTOS下,WiFi协议栈默认占用Core0,若应用逻辑与WiFi争抢同一核心,易出现延迟抖动与栈溢出。本文从双核调度原理出发,给出将WiFi任务固定到Core0、应用逻辑放到Core1的完整配置步骤、实测数据与栈大小调优方法,并附可直接编译的代码示例与常见坑位提醒,帮助开发者获得更稳定的实时响应。
用DWT周期计数器实现us级精确定时:替代定时器资源的嵌入式方案
嵌入式 · 👁 112 阅读
在STM32开发中,定时器资源常被PWM、编码器、通信等外设占用,导致软件延时精度不足。本文介绍利用Cortex-M内核的DWT周期计数器实现us级精确定时,无需占用硬件定时器,精度可达CPU周期级。文章涵盖DWT原理、配置步骤、完整代码示例及注意事项,帮助开发者在资源紧张时获得高精度延时方案。
ESP32串口DMA+空闲中断实战:彻底解决不定长帧的半包与粘包边界问题
嵌入式 · 👁 86 阅读
串口不定长帧接收是嵌入式开发的常见痛点,尤其在使用DMA+空闲中断时,半包与粘包问题频发。本文深入剖析ESP32 UART的DMA与空闲中断机制,提出基于环形缓冲与帧头帧尾校验的边界处理策略,并给出完整可移植的C代码示例,帮助开发者构建稳定可靠的串口通信框架。
STM32 HAL库中HAL_Delay在中断上下文里被卡死的根因与替代延时方案
嵌入式 · 👁 78 阅读
很多开发者习惯在中断服务函数里调用HAL_Delay做简单延时,结果程序卡死或系统节拍异常。本文从SysTick优先级、HAL_Delay实现机制和中断嵌套规则出发,剖析卡死的根本原因,并给出基于DWT、定时器和状态机等五种可在中断上下文安全使用的延时替代方案,附完整代码与配置要点。