📖 技术文库

STM32 / Arduino / RTOS / 嵌入式 知识文章
展开全部分类 (54)
STM32 HAL库ADC多通道DMA扫描采样通道顺序错乱的排查与修复
嵌入式 · 👁 6 阅读
在STM32 HAL库下使用ADC多通道DMA扫描采样时,很多开发者会遇到DMA缓冲区数据与通道顺序不一致的问题。本文从ADC扫描序列、DMA传输宽度、HAL库初始化顺序三个角度剖析根因,给出基于CubeMX与手写代码的完整修复方案,并提供可复用的校验代码与避坑清单,帮助你在电机控制、多传感器采集等场景中稳定获取正确通道数据。
STM32串口DMA+空闲中断实战:彻底解决不定长收包的半包与粘包问题
嵌入式 · 👁 6 阅读
串口不定长收包是嵌入式开发中的常见需求,DMA+空闲中断方案虽高效,却常因半包与粘包导致数据解析错误。本文深入剖析空闲中断的触发机制与半包/粘包的成因,提出基于环形缓冲区与帧边界标记的工程化处理方案,并给出完整的STM32 HAL库代码实现,涵盖初始化、中断处理、数据提取与异常保护,帮助开发者构建稳定可靠的串口通信框架。
从零实现ESP32双核任务间无锁队列:xQueueSendFromISR的临界区陷阱与实测吞吐对比
嵌入式 · 👁 6 阅读
ESP32双核下,ISR与任务共享队列时,xQueueSendFromISR的临界区处理常被误用,导致丢数据或优先级反转。本文从FreeRTOS队列环形缓冲与自旋锁原理出发,给出双核无锁队列的完整实现,剖析ISR临界区陷阱,并用实测数据对比原生队列与自旋锁队列的吞吐差异,附可复现代码与调优建议。
FreeRTOS周期性任务:vTaskDelay与vTaskDelayUntil漂移实测对比与选型指南
嵌入式 · 👁 6 阅读
在FreeRTOS中实现周期性任务时,vTaskDelay与vTaskDelayUntil的选择直接影响任务周期的长期稳定性。本文从调度原理出发,分析相对延时与绝对延时产生漂移的根本原因,给出基于STM32的实测方法与完整代码,通过示波器与时间戳对比两种API在1kHz~10Hz任务下的累积误差,并总结选型原则与常见陷阱,帮助嵌入式开发者在实际项目中做出正确决策。
ESP32双核任务亲和性实战:WiFi协议栈钉Core0、应用逻辑放Core1的配置与踩坑指南
嵌入式 · 👁 6 阅读
ESP32双核FreeRTOS下,WiFi协议栈默认与用户任务争抢CPU,导致实时性抖动。本文讲解任务亲和性原理,给出将WiFi任务固定到Core0、应用逻辑放Core1的完整配置步骤与代码示例,并总结优先级反转、看门狗、跨核队列等常见坑点,帮助开发者构建稳定的双核任务架构。
STM32串口不定长收包:DMA+空闲中断下半包与粘包的边界处理实战
嵌入式 · 👁 6 阅读
本文深入剖析STM32串口DMA+空闲中断接收不定长数据时,半包与粘包问题的根源,从IDLE标志时序、DMA计数器快照、缓冲区设计三个维度给出边界处理方案。包含完整可移植代码,并针对高波特率、中断延迟等场景提供优化建议,帮助开发者构建稳定可靠的串口帧接收机制。
用DWT周期计数器给Cortex-M打补丁:实现微秒级无中断延时与代码段耗时测量
嵌入式 · 👁 6 阅读
本文介绍如何利用Cortex-M内核的DWT周期计数器实现高精度、无中断的微秒级延时与代码段耗时测量。相比传统SysTick或定时器方案,DWT不占用中断资源,精度可达CPU周期级。文章涵盖DWT原理、寄存器配置、完整代码实现及注意事项,帮助开发者在STM32等Cortex-M平台上快速集成这一实用技巧。
FreeRTOS中vTaskDelay与软件定时器混用时优先级反转的排查实录
嵌入式 · 👁 5 阅读
本文记录了一次在STM32平台上使用FreeRTOS时,因vTaskDelay与软件定时器混用导致优先级反转的排查过程。通过分析任务调度、定时器服务任务与中断优先级的关系,揭示了隐藏的优先级反转机制,并给出了配置修正与代码优化方案。文章包含原理讲解、配置步骤、完整代码示例及注意事项,适合有一定FreeRTOS基础的嵌入式开发者参考。
STM32定时器输入捕获测PWM占空比时,高电平宽度漂移的根因与排查:预分频与捕获边沿配置详解
嵌入式 · 👁 34 阅读
许多开发者在用STM32定时器输入捕获测量PWM占空比时,发现高电平宽度随信号频率变化而漂移,导致占空比计算错误。本文从输入捕获原理出发,深入分析预分频器与捕获边沿配置对测量结果的影响,揭示漂移的根源,并提供完整的配置步骤、代码示例与排查清单,帮助开发者彻底解决这一常见问题。
STM32 HAL库中__weak函数被覆盖后中断服务程序不执行的排查路径
嵌入式 · 👁 26 阅读
在STM32开发中,使用HAL库时经常遇到中断服务程序不执行的问题,尤其是当用户覆盖了__weak函数后。本文深入分析__weak机制、中断向量表与回调函数的关系,提供从现象到根因的完整排查路径,涵盖启动文件分析、链接脚本检查、调试技巧,并给出可复现的代码示例与避坑指南,帮助开发者快速定位并解决此类疑难问题。
STM32 HAL库中HAL_Delay在中断上下文失效的根因与替代延时方案
嵌入式 · 👁 31 阅读
本文深入剖析STM32 HAL库中HAL_Delay在中断上下文中失效的根本原因,指出其依赖SysTick中断与轮询计数标志的机制在中断嵌套时导致死锁或延时不准。文章提供三种替代延时方案:基于DWT周期计数器的忙等待、硬件定时器单次触发延时以及中断安全的非阻塞状态机延时,并给出完整代码示例与配置步骤,最后总结关键注意事项,帮助开发者在中断服务程序中实现精准可靠的延时。
FreeRTOS中vTaskDelay与vTaskDelayUntil混用导致周期任务漂移的排查实录
嵌入式 · 👁 29 阅读
本文记录了一次嵌入式项目中FreeRTOS周期任务出现时间漂移的排查过程。通过逻辑分析仪抓取波形,发现任务周期逐渐偏移,最终定位为vTaskDelay与vTaskDelayUntil混用所致。文章详细剖析两者原理差异,给出正确配置步骤与完整代码示例,并总结避免周期漂移的注意事项,适合有一定FreeRTOS基础的开发者参考。