📖 技术文库

STM32 / Arduino / RTOS / 嵌入式 知识文章
展开全部分类 (54)
STM32 HAL库DMA串口接收:IDLE中断与半满中断协同配置及丢包排查实战
嵌入式 · 👁 58 阅读
本文深入解析STM32 HAL库下DMA串口接收中IDLE中断与半满中断的协同工作机制,提供从CubeMX配置到代码实现的完整步骤,并针对常见丢包问题给出系统化排查方案。通过原理讲解与实战代码,帮助开发者构建稳定高效的串口数据接收框架,解决不定长数据接收中的关键痛点。
STM32定时器输入捕获测PWM频率:高频段误差突增的根源与预分频/分辨率计算
嵌入式 · 👁 53 阅读
许多开发者在使用STM32定时器输入捕获测量PWM频率时,发现低频段精度尚可,但高频段误差突然增大。本文从输入捕获的基本原理出发,深入分析预分频器与捕获分辨率的关系,推导误差公式,并给出完整的配置步骤与代码示例,帮助您彻底理解并解决高频测量误差问题。
STM32 HAL库下ADC多通道DMA扫描采样时通道数据错位的排查与修复
嵌入式 · 👁 51 阅读
本文针对STM32 HAL库开发中ADC多通道DMA扫描采样常见的通道数据错位问题,从ADC扫描与DMA传输机制出发,分析错位根源(如DMA缓冲区对齐、规则组顺序、采样时间不足等),给出系统化的排查步骤与修复方案,并提供完整可运行的代码示例与关键注意事项,帮助开发者快速定位并解决此类问题。
STM32 HAL库中HAL_Delay的SysTick优先级陷阱:为何中断里调用会死锁及三种修复方案对比
嵌入式 · 👁 54 阅读
本文深入剖析STM32 HAL库中HAL_Delay依赖SysTick中断的工作原理,揭示在中断服务函数中调用HAL_Delay导致死锁的根本原因——SysTick优先级低于当前中断,使uwTick无法更新。文章给出三种修复方案:提升SysTick优先级、使用硬件定时器延时、改用轮询计数器,并从实时性、代码侵入性、可靠性等维度对比,附完整代码示例与注意事项,帮助开发者规避这一常见陷阱。
用DWT周期计数器测量中断响应延迟:从GPIO翻转看NVIC抢占的实际开销
嵌入式 · 👁 51 阅读
中断响应延迟是嵌入式实时系统的关键指标,但手册往往只给出理论值。本文介绍如何利用Cortex-M内核的DWT周期计数器,配合GPIO翻转,精确测量从外部中断触发到ISR第一条指令执行的实际周期数,并分析NVIC抢占、流水线、Flash等待周期等因素对延迟的影响,给出可复用的测量代码与优化建议。
STM32定时器输入捕获测频率:预分频与捕获极性的实战取舍
嵌入式 · 👁 53 阅读
输入捕获是STM32测量信号频率的常用手段,但预分频系数与捕获极性的配置直接影响测量范围、精度与响应速度。本文从原理出发,分析PSC与CCER极性位对捕获结果的影响,给出不同频率段的配置策略,并提供完整代码示例与避坑指南,帮助你在实际项目中做出合理取舍。
STM32 HAL库中DMA与中断同时操作同一外设时的优先级冲突排查与配置
嵌入式 · 👁 53 阅读
本文针对STM32开发中DMA与中断同时操作同一外设(如UART、ADC)时出现的优先级冲突问题,从NVIC优先级分组、DMA中断与USART中断的抢占关系入手,分析冲突根源,给出HAL库下的配置步骤与完整代码示例,并总结排查要点与注意事项,帮助开发者避免数据丢失或死锁。
STM32 HAL库中__weak函数重定义失效的链接顺序陷阱与验证方法
嵌入式 · 👁 65 阅读
在STM32 HAL库开发中,常通过重定义__weak回调函数实现自定义逻辑,但部分开发者发现自己的函数未被调用,程序仍执行HAL默认实现。这通常不是代码错误,而是链接顺序与符号解析规则导致。本文剖析__weak机制、GCC链接器符号选择策略,给出可复现的陷阱场景、验证方法与工程级解决方案,帮助开发者彻底规避此类问题。
STM32 HAL库中__weak函数被用户重定义后链接脚本仍选中默认实现的排查路径
嵌入式 · 👁 66 阅读
在STM32 HAL开发中,用户常通过重定义__weak回调函数来定制外设行为,但有时明明写了同名函数,链接后仍执行默认实现。本文从__weak机制、链接器符号解析、编译单元可见性、链接脚本与库顺序等角度,系统梳理排查路径,并给出可复现的验证方法与完整代码示例,帮助开发者快速定位“重定义不生效”的根因。
STM32 HAL库中__weak函数被用户重定义后链接顺序导致外设初始化被覆盖的排查方法
嵌入式 · 👁 61 阅读
本文深入剖析STM32 HAL库中__weak函数被用户重定义后,因链接顺序导致外设初始化被覆盖的隐蔽问题。通过原理讲解、配置步骤、完整代码示例和注意事项,帮助开发者快速定位并解决此类链接冲突,确保外设初始化按预期执行。
FreeRTOS周期任务定时漂移:vTaskDelay与vTaskDelayUntil深度对比与选型指南
嵌入式 · 👁 64 阅读
在嵌入式周期性采样任务中,vTaskDelay与vTaskDelayUntil的定时精度差异常被忽视。本文从FreeRTOS内核调度原理出发,剖析相对延时与绝对延时的漂移成因,通过实测数据对比两者在1kHz采样下的累积误差,给出完整代码示例与选型建议,帮助开发者在电机控制、传感器采集等场景中避免定时漂移陷阱。
STM32 DMA+空闲中断接收不定长串口数据:半包与粘包的边界处理技巧
嵌入式 · 👁 62 阅读
串口不定长数据接收是嵌入式开发中的常见需求,DMA+空闲中断方案能高效处理,但半包与粘包问题常导致解析错误。本文深入剖析空闲中断触发机制与DMA传输特性,提出基于环形缓冲区与时间戳的边界判定策略,给出完整的STM32 HAL库代码实现,并总结关键注意事项,帮助开发者彻底解决分包难题。