蘑
菇
助手
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函数被用户重写后仍调用原实现的链接顺序排查
嵌入式 · 👁 67 阅读
在STM32 HAL库开发中,用户常通过重写__weak函数(如HAL_UART_RxCpltCallback)实现自定义逻辑。但有时重写后系统仍调用原弱函数,导致功能异常。本文深入分析链接器处理弱符号与强符号的机制,揭示因链接顺序、库文件包含方式导致的覆盖失败问题,并提供三种排查方法与解决方案,帮助开发者彻底解决这一隐蔽bug。
STM32 HAL库中DMA+空闲中断实现不定长串口接收的完整配置与踩坑记录
嵌入式 · 👁 88 阅读
本文深入讲解STM32 HAL库下利用DMA与串口空闲中断实现不定长数据接收的原理、配置步骤与完整代码,并分享实际开发中遇到的典型问题与解决方案。内容涵盖CubeMX配置、中断处理、DMA缓冲区管理及常见陷阱,适合有一定HAL库基础的嵌入式开发者快速掌握高效串口通信技巧。
STM32 HAL库中__weak函数被用户重定义后链接顺序导致的覆盖失效排查
嵌入式 · 👁 62 阅读
本文深入剖析STM32 HAL库中__weak函数被用户重定义后,因链接顺序不当导致覆盖失效的隐蔽问题。从__weak机制原理出发,结合链接器行为分析,给出可复现的故障场景与完整排查步骤,并提供正确的工程配置与代码示例,帮助开发者彻底规避此类陷阱。
STM32 HAL库DMA串口空闲中断接收不定长数据的丢包根因与环形缓冲改造
嵌入式 · 👁 99 阅读
本文面向有一定基础的嵌入式开发者,剖析STM32 HAL库中DMA+串口空闲中断接收不定长数据时丢包的根因:HAL_UARTEx_ReceiveToIdle_DMA的缓冲区覆盖、回调重装延迟与中断优先级问题。给出基于环形缓冲的改造方案,包含原理讲解、CubeMX配置步骤、完整C代码与注意事项,帮助实现高吞吐、低丢包的串口接收。
STM32 HAL库中__weak函数被用户重定义后链接顺序导致的意外覆盖排查
嵌入式 · 👁 85 阅读
在STM32 HAL库开发中,用户常通过重定义__weak函数实现自定义回调,但链接顺序不当可能导致用户函数被库中弱符号覆盖,引发难以排查的运行时错误。本文深入分析__weak机制与链接器行为,结合STM32CubeIDE与GCC工具链,给出问题现象、根本原因、排查步骤及完整解决方案,帮助开发者避免此类陷阱。
STM32 HAL库中HAL_Delay在中断上下文调用导致死锁的成因与替代延时方案
嵌入式 · 👁 98 阅读
本文深入剖析STM32 HAL库中HAL_Delay在中断服务程序(ISR)中调用引发死锁的根本原因,从SysTick中断优先级与HAL_Delay实现机制入手,揭示死锁形成的条件。针对该问题,提供三种可靠的替代延时方案:基于DWT的周期计数延时、基于硬件定时器的单次延时以及基于空循环的粗略延时,并给出完整代码示例与配置步骤。最后总结中断上下文编程的注意事项,帮助开发者规避此类陷阱,提升嵌入式系统稳定性。
STM32 HAL库中__weak函数重定义后中断仍进默认死循环的链接排查方法
嵌入式 · 👁 89 阅读
在STM32 HAL库开发中,用户常通过重定义__weak函数(如HAL_GPIO_EXTI_Callback)实现自定义中断逻辑。但有时重定义后中断仍进入默认死循环,根源在于链接阶段符号未正确覆盖。本文深入剖析__weak机制与链接原理,提供从map文件分析到链接脚本调整的完整排查方法,并给出可复现的代码示例与注意事项,帮助开发者彻底解决这一隐蔽问题。
STM32 HAL库DMA+空闲中断不定长收包:半满中断与空闲中断的竞态处理与缓冲区设计
嵌入式 · 👁 80 阅读
本文深入剖析STM32 HAL库下DMA+空闲中断实现不定长串口收包时,半满中断与空闲中断的竞态问题。通过分析DMA半满/全满中断与串口空闲中断的触发时序,提出双缓冲区设计与临界区保护方案,并给出完整代码示例。文章涵盖原理讲解、CubeMX配置步骤、代码实现及注意事项,帮助开发者构建稳定高效的串口通信框架。
STM32 HAL库中HAL_Delay在中断上下文中的隐患与替代方案
嵌入式 · 👁 80 阅读
HAL_Delay是STM32开发中最常用的延时函数,但在中断服务程序(ISR)中调用它可能导致系统死锁或响应异常。本文深入分析HAL_Delay基于SysTick轮询的实现原理,揭示其在中断上下文中的三大隐患:优先级反转、死锁风险与实时性破坏,并提供三种可靠的替代方案:基于DWT周期计数器的微秒级延时、硬件定时器延时以及非阻塞状态机设计,附完整代码示例与配置步骤,帮助开发者规避常见陷阱。
STM32 HAL库DMA+空闲中断接收不定长串口数据的丢包排查与环形缓冲改造
嵌入式 · 👁 82 阅读
本文针对STM32 HAL库下DMA+空闲中断接收不定长串口数据时常见的丢包问题,从原理上分析HAL_UARTEx_ReceiveToIdle_DMA的局限与中断响应延迟、缓冲区覆盖等根因,给出基于环形缓冲区的改造方案,包含完整代码示例与配置步骤,并总结关键注意事项,帮助开发者实现稳定可靠的不定长数据接收。
STM32 HAL库中__weak函数重定义失效:链接器仍选弱符号的排查与解决
嵌入式 · 👁 43 阅读
在STM32 HAL库开发中,用户常通过重定义__weak函数(如HAL_UART_RxCpltCallback)实现自定义逻辑。但有时明明定义了同名函数,链接器却仍选择弱符号,导致回调不执行。本文深入剖析__weak机制、链接器符号解析规则,结合Keil MDK与GCC环境,给出完整排查步骤与解决方案,并附可复现代码与注意事项,帮助开发者彻底解决这一隐蔽问题。
STM32H7 的 DCache 与 DMA 数据一致性:地址对齐、Clean/Invalidate 失效场景与实测复现
嵌入式 · 👁 79 阅读
STM32H7 高性能内核带 DCache,能大幅提升代码执行效率,却也让 DMA 传输频频“翻车”。本文从 Cache 一致性原理出发,详解地址对齐要求、Clean/Invalidate 的正确使用时机,并给出可复现的失效案例与完整代码,帮你彻底避开 DMA 数据错乱、偶发丢包等深坑。
‹
1
...
17
18
19
...
182
›