蘑
菇
助手
MCU助手 · 单片机工具箱
登录
注册
🏠
首页
🧰
工具
📖
文库
❓
问答
✍️
提问
🏠 首页 /
技术文库
📖 技术文库
STM32 / Arduino / RTOS / 嵌入式 知识文章
全部
STM32
STM32 定时器
STM32 串口
STM32 ADC
Arduino 入门
STM32 看门狗
STM32 I2C
STM32 DMA
STM32 低功耗
STM32 编码器
RTOS RTOS
STM32 PWM
嵌入式 IO
STM32 SPI
STM32 中断
STM32 时钟
STM32 存储
Arduino 进阶
ESP32 WiFi
嵌入式 协议
STM32 CAN
STM32 USB
STM32 RTC
STM32 DAC
STM32 GPIO
STM32 传感器
嵌入式 架构
STM32 Boot
嵌入式 调试
STM32 电机
嵌入式 PCB
ESP32 低功耗
STM32 寄存器
嵌入式 C语言
STM32 架构
STM32 显示
STM32 外设
嵌入式 内存
STM32 工具
STM32 调试
嵌入式 稳定性
嵌入式 电源
STM32 安全
嵌入式 RTOS
嵌入式 存储
STM32 Bootloader
STM32 协议
ESP32 物联网
ESP32 OTA
ESP32 蓝牙
嵌入式 显示
嵌入式 驱动
嵌入式 电机
STM32 入门
RTOS 看门狗
嵌入式 CAN
项目 实战
嵌入式 控制
嵌入式 蓝牙
嵌入式 传感器
嵌入式
展开全部分类 (54)
STM32 HAL库中__weak函数被用户重定义后仍调用原实现的链接顺序排查
嵌入式 · 👁 77 阅读
在STM32 HAL库开发中,用户常通过重定义__weak函数来定制外设回调,但有时发现自己的实现未被调用,反而执行了库中的默认空函数。本文深入剖析__weak机制与链接器行为,揭示链接顺序、目标文件包含关系及链接脚本对符号解析的影响,提供从现象到根因的完整排查路径,并给出确保用户实现优先链接的工程配置方案与代码示例,帮助开发者彻底解决这一隐蔽问题。
STM32 HAL库DMA+空闲中断接收不定长串口数据的丢包排查与环形缓冲区改造
嵌入式 · 👁 105 阅读
本文针对STM32 HAL库下DMA+空闲中断接收不定长串口数据时常见的丢包问题,深入剖析了HAL_UARTEx_ReceiveToIdle_DMA的机制与隐患,包括DMA半传输中断干扰、空闲中断响应延迟、缓冲区覆盖等。通过逻辑分析仪抓包与代码级调试定位根因,提出基于环形缓冲区的改造方案,并给出完整代码实现与关键配置步骤,帮助开发者彻底解决高波特率下数据丢失问题。
STM32 HAL库ADC多通道DMA扫描模式:采样顺序与数据对齐陷阱详解
嵌入式 · 👁 78 阅读
本文深入剖析STM32 HAL库下ADC多通道DMA扫描模式的采样顺序与数据对齐问题。许多开发者在使用DMA搬运多通道ADC数据时,常遇到数据错位、通道对应错误等隐蔽bug。文章从ADC扫描原理出发,详解规则组序列配置、DMA传输对齐、数据宽度匹配等关键点,提供完整配置步骤与代码示例,并总结常见陷阱与规避方法,帮助开发者彻底掌握多通道ADC高效采样。
STM32 HAL库中HAL_Delay的SysTick优先级陷阱与替代延时方案实测
嵌入式 · 👁 76 阅读
本文深入剖析STM32 HAL库中HAL_Delay依赖SysTick中断的优先级陷阱:当SysTick优先级低于其他中断时,HAL_Delay可能被阻塞导致延时不准甚至死锁。文章从原理出发,给出优先级配置步骤,并提供基于DWT、定时器及查询SysTick的三种替代延时方案,附完整代码与实测对比,帮助开发者规避常见坑点。
用DWT周期计数器测量中断响应延迟时编译器优化等级导致的偏差修正
嵌入式 · 👁 71 阅读
DWT周期计数器是STM32上测量中断响应延迟的常用手段,但编译器优化等级会显著改变测量结果:高优化下编译器可能重排指令、消除冗余读取,甚至把DWT->CYCCNT的读取提前到中断入口之前,导致测得的延迟偏小或出现负值。本文剖析偏差产生的指令级原因,给出基于volatile屏障、内联汇编和固定优化等级的修正方案,并提供可直接移植的完整代码与验证方法。
从零实现Cortex-M0+的HardFault现场还原:栈帧解析与故障地址定位实战
嵌入式 · 👁 60 阅读
HardFault是嵌入式开发中最令人头疼的异常之一,尤其在资源受限的Cortex-M0+内核上,缺乏完整的故障状态寄存器,定位难度更大。本文从异常入栈机制出发,手把手教你解析HardFault栈帧,提取PC、LR等关键寄存器,并结合反汇编与map文件精准定位故障地址。提供完整可移植的C代码实现,并总结常见陷阱与调试技巧,助你快速驯服HardFault。
STM32 HAL库DMA+空闲中断接收不定长串口数据:溢出与半包问题深度排查
嵌入式 · 👁 81 阅读
本文针对STM32 HAL库下DMA+空闲中断接收不定长串口数据时常见的溢出与半包问题,从原理出发分析根本原因,提供完整的配置步骤与代码示例,并给出实用的排查方法与注意事项,帮助开发者彻底解决数据丢失与分包错误。
STM32 HAL库中__weak函数被用户重定义后链接顺序导致的覆盖问题排查
嵌入式 · 👁 79 阅读
在STM32开发中,HAL库使用__weak定义回调函数,允许用户重定义。但有时用户重定义后,程序仍执行默认弱函数,导致功能异常。本文深入分析链接器处理弱符号与强符号的规则,揭示链接顺序如何影响覆盖结果,并提供排查步骤、完整代码示例及注意事项,帮助开发者彻底解决该问题。
STM32 HAL库中__weak函数被用户重定义后链接脚本仍保留原符号的排查方法
嵌入式 · 👁 68 阅读
在STM32 HAL库开发中,用户重定义__weak函数后,链接脚本仍保留原符号,导致回调不生效。本文从__weak机制、链接器符号解析原理出发,给出map文件分析、objdump反汇编、链接脚本检查等排查步骤,并提供完整代码示例与注意事项,帮助开发者快速定位并解决该问题。
STM32 HAL库中HAL_Delay的SysTick优先级陷阱与替代延时方案
嵌入式 · 👁 76 阅读
HAL_Delay是STM32 HAL库中最常用的延时函数,但其依赖的SysTick中断优先级陷阱常被忽视,导致在中断服务程序中调用时系统死锁。本文深入剖析SysTick优先级机制,揭示HAL_Delay在中断上下文中的风险,并提供基于DWT、硬件定时器和查询式延时的三种替代方案,附完整代码与配置步骤,帮助开发者规避潜在陷阱,提升系统稳定性。
STM32 HAL库中__weak函数重定义失效?链接顺序排查与解决
嵌入式 · 👁 71 阅读
在STM32开发中,我们常通过重定义HAL库的__weak函数(如HAL_UART_RxCpltCallback)来实现自定义逻辑。但有时明明写了同名函数,程序却仍执行默认空实现。这通常不是代码错误,而是链接顺序或工程配置问题。本文深入剖析__weak机制与链接器行为,提供系统化的排查步骤,并给出完整代码示例与注意事项,帮你彻底解决这一隐蔽bug。
STM32 HAL库中HAL_Delay在中断上下文调用的隐患与替代方案
嵌入式 · 👁 75 阅读
HAL_Delay是STM32开发中最常用的延时函数,但它在中断上下文中调用会引发系统阻塞、优先级反转甚至死机。本文深入剖析HAL_Delay的底层实现机制,揭示其在中断中使用的三大隐患,并提供基于DWT、硬件定时器和状态机三种替代方案,附完整代码示例与实测数据,帮助开发者规避常见陷阱。
‹
1
...
16
17
18
...
182
›