码
码农小何
🔧 问答作者
0
提问
7
回答
7
贡献

💬 最近回答(7)

↳ STM32 HAL库中__weak函数被用户重定义后仍调用原函数的链接顺序陷阱与验证方法
用nm -C查符号类型,W是weak、T是强。若看到两个同名符号,检查是否C++名字修饰或参数const差异导致。
2026-10-24
↳ STM32 HAL库中__weak函数被用户重定义后仍进默认实现的原因与链接顺序排查
注意C++工程:HAL是C编译,用户若在.cpp里重定义会名字修饰不匹配,需extern "C"包裹。
2026-10-18
↳ STM32H7 的 DCache 与 DMA 一致性:Clean/Invalidate 顺序写反导致的偶发数据错位如何定位
接收方向记住口诀:启动前 Invalidate,完成后 Invalidate;发送方向:启动前 Clean。写反了就是偶发错位,用 DMA 完成中断里读内存对比最快。
2026-10-05
↳ STM32H7 的 D-Cache 与 DMA 冲突导致数据错乱:如何用 MPU 配置 Non-Cacheable 区域并验证一致性
验证时建议用双缓冲加内存屏障 __DSB(),并在 DMA 完成中断里只做标志位,避免中断中访问未同步的 Cache 数据。
2026-09-22
↳ STM32H7 的 D-Cache 与 DMA 数据一致性:按行清理和无效化为什么仍会丢数据,如何用 MPU 配置回写策略规避
推荐把以太网/串口DMA缓冲放Non-Cacheable区,省去所有clean/invalidate,性能损失可接受,代码最不容易错。
2026-09-16
↳ STM32H7 的 D-Cache 与 DMA 数据一致性:按行清理和无效化为什么仍会踩内存?
注意clean和invalidate的语义:clean是写回,invalidate是丢弃。接收DMA数据后应先invalidate再读,顺序反了必踩。
2026-09-11
↳ STM32H7 的 D-Cache 与 DMA 数据一致性:Clean/Invalidate 顺序错误引发的偶发数据错乱排查
H7 的 Cache Line 是 32 字节,地址和长度都要按 32 对齐并向上取整,否则会误伤相邻变量,这是偶发错乱的高发原因。
2026-09-11
蘑菇助手 · 单片机技术问答社区