📖 技术文库

STM32 / Arduino / RTOS / 嵌入式 知识文章
展开全部分类 (54)
STM32 HAL库中DMA+空闲中断实现不定长串口帧接收的完整配置与踩坑记录
嵌入式 · 👁 75 阅读
本文深入讲解STM32 HAL库下利用DMA与串口空闲中断实现不定长数据帧接收的完整方案。从原理剖析、CubeMX配置、代码实现到实际调试中的常见陷阱与解决方案,涵盖DMA传输机制、空闲中断触发条件、缓冲区管理及错误处理。适合有一定HAL库基础的开发者,助你彻底掌握高效串口通信设计,避免重复踩坑。
STM32定时器输入捕获测频率:从模式复位计数器消除溢出累积误差
嵌入式 · 👁 78 阅读
使用STM32定时器输入捕获测量频率时,若信号周期大于定时器溢出周期,需软件累加溢出次数,但中断延迟会导致累积误差。本文介绍如何配置定时器从模式(Slave Mode)中的复位模式(Reset Mode),利用输入捕获信号自动复位计数器,彻底消除溢出累积误差。文章涵盖原理分析、CubeMX与寄存器配置步骤、完整代码示例及关键注意事项,帮助开发者实现高精度频率测量。
STM32 HAL库ADC多通道DMA采集通道顺序错乱的根因与修复
嵌入式 · 👁 61 阅读
多通道ADC+DMA是STM32高频用法,但很多开发者发现DMA缓冲区数据与通道顺序对不上,甚至随采样次数漂移。本文从ADC规则组序列寄存器、DMA循环模式与HAL初始化顺序三个层面剖析根因,给出基于CubeMX与手写代码的两种修复方案,并附完整可运行示例与避坑清单,帮助你在电机控制、传感器阵列等场景稳定获取多路模拟量。
STM32 HAL库DMA+空闲中断接收不定长串口数据的溢出风险与环形缓冲改造
嵌入式 · 👁 70 阅读
本文剖析STM32 HAL库中使用DMA+串口空闲中断接收不定长数据的常见方案,指出其在高速或突发数据下因缓冲区覆盖导致的溢出风险,并给出基于环形缓冲区的改造方法。文章包含原理讲解、CubeMX配置步骤、完整代码示例及关键注意事项,帮助开发者构建稳定可靠的串口接收机制。
用DWT周期计数器在Cortex-M上做函数级耗时统计的移植与坑点
嵌入式 · 👁 54 阅读
在嵌入式开发中,精确测量函数执行时间对性能优化至关重要。Cortex-M内核自带的DWT周期计数器能以极低成本实现纳秒级耗时统计。本文深入讲解DWT的工作原理,给出在STM32等Cortex-M芯片上的完整移植步骤与代码示例,并总结初始化顺序、计数器溢出、中断干扰、编译器优化等常见坑点,帮助开发者快速构建可靠的函数级性能剖析工具。
STM32 HAL库下ADC多通道DMA扫描时通道顺序错乱的排查与重排方法
嵌入式 · 👁 64 阅读
本文针对STM32 HAL库开发中ADC多通道DMA扫描采集时数据顺序与预期通道顺序不一致的常见问题,深入分析ADC扫描序列、DMA传输机制及HAL库配置陷阱,提供从原理排查到软件重排的完整解决方案,并给出可直接移植的代码示例与关键注意事项,帮助开发者彻底解决通道错乱问题。
ESP32双核下FreeRTOS任务看门狗TWDT误触发:从idle任务饥饿到喂狗策略修正
嵌入式 · 👁 74 阅读
ESP32双核运行FreeRTOS时,任务看门狗(TWDT)误触发是常见痛点。本文深入分析idle任务饥饿导致TWDT报警的机理,揭示双核调度中喂狗策略的陷阱,并提供基于任务优先级与喂狗钩子的完整修正方案。通过原理讲解、配置步骤与代码示例,帮助开发者彻底解决误触发问题,提升系统稳定性。
STM32 HAL库ADC+DMA连续转换:传输完成与半传输中断的配合使用及数据分块处理
嵌入式 · 👁 85 阅读
本文深入讲解STM32 HAL库下ADC+DMA连续转换模式中,如何利用DMA传输完成中断(TC)与半传输中断(HT)实现高效数据分块处理。内容涵盖DMA双缓冲原理、CubeMX配置步骤、中断回调编写、完整代码示例及常见注意事项,帮助开发者避免数据覆盖、提升系统实时性,适用于音频采样、电机控制等高速数据采集场景。
STM32 HAL库ADC多通道DMA扫描模式采样顺序错乱排查与重排技巧
嵌入式 · 👁 77 阅读
本文针对STM32 HAL库中ADC多通道DMA扫描模式常见的采样顺序错乱问题,从ADC规则组转换序列、DMA传输机制和HAL库配置细节入手,分析错乱根源,提供基于CubeMX的配置步骤、完整代码示例以及软件重排与硬件校准技巧,帮助开发者快速定位并解决数据错位问题,确保多通道采样顺序与预期一致。
STM32 HAL库ADC多通道DMA采集数据错位:从原理到修复的完整排查指南
嵌入式 · 👁 79 阅读
ADC多通道DMA采集是STM32常用方案,但数据错位问题频发:通道1数据跑到通道2位置、首元素为0、数组整体偏移。本文从DMA传输机制、ADC扫描序列与HAL库配置细节出发,剖析错位的三类根因(DMA对齐、序列长度、缓存一致性),给出可复现的排查步骤与完整修复代码,并总结CubeMX配置与运行期注意事项。
STM32 HAL库中__weak函数被用户重定义后链接顺序导致回调失效的排查方法
嵌入式 · 👁 76 阅读
在STM32 HAL开发中,用户重定义__weak回调函数后偶发失效,常被误判为中断未触发。本文从ELF符号解析与链接顺序入手,解释__weak的弱符号机制、静态库抽取规则和重定义覆盖条件,给出map文件、nm/objdump、反汇编定位方法,并提供工程配置与代码组织建议,帮助开发者快速定位并彻底解决回调不生效问题。
STM32定时器输入捕获测频率:预分频与捕获边沿配置的误差来源与校准方法
嵌入式 · 👁 84 阅读
本文深入分析STM32定时器输入捕获测频时,预分频系数与捕获边沿配置引入的误差来源,包括量化误差、边沿抖动、预分频相位不确定性等,并提供硬件与软件校准方法。通过原理讲解、配置步骤和完整代码示例,帮助开发者实现高精度频率测量,适用于电机控制、传感器信号采集等嵌入式场景。