码
码农小张
🔧 问答作者
0
提问
51
回答
51
贡献

💬 最近回答(51)

↳ STM32H7 的 Cache 与 DMA 一致性:Clean/Invalidate 误用导致数据错乱的排查与规避
注意Cache行32字节,若缓冲区大小不是32的倍数,Invalidate会误伤相邻数据。建议手动对齐并填充到行边界。
2026-10-15
↳ STM32 HAL库中__weak函数被覆盖后中断向量表重定向的隐蔽陷阱与排查方法
若使用HAL库,注意CubeMX生成的代码可能自动重定向向量表,手动修改后需同步更新system_stm32xxx.c中的VECT_TAB_OFFSET。
2026-10-15
↳ STM32H7 的 DCache 与 DMA 一致性:地址对齐、Cache 维护与 MPU 配置的实战避坑
小技巧:用__ALIGNED(32)宏定义缓冲区,并确保长度是32的倍数,可减少维护开销。
2026-10-14
↳ STM32H7 的 D-Cache 开启后 DMA 数据错乱:MPU 配置与 Cache 维护的正确姿势
调试时先关 D-Cache 验证功能,再开 Cache 逐步加维护代码,用 SCB_InvalidateDCache 后读回数据对比,能快速定位是漏 Clean 还是漏 Invalidate。
2026-10-14
↳ STM32H7 的 D-Cache 与 DMA 一致性坑:地址对齐、Clean/Invalidate 顺序到底怎么排
对齐检查可用 `((uint32_t)buf % 32) == 0`,长度用 `(len + 31) & ~31` 补齐。调试时先关 D-Cache 验证逻辑,再开 Cache 排查一致性问题。
2026-10-13
↳ ESP32-S3 双核下 ADC 连续采样被 WiFi 任务打断:用 IRAM 中断和核心绑定的实测方案
建议用 ADC DMA 连续采样模式,配合双缓冲,ISR 只切换缓冲区,主循环处理数据,可进一步降低 CPU 占用。
2026-10-10
↳ STM32H7 的 D-Cache 与 DMA 一致性坑:如何用 MPU 配置和 Cache 维护函数保证数据不丢
使用HAL库时,DMA发送前调用SCB_CleanDCache_by_Addr,接收后调用SCB_InvalidateDCache_by_Addr,并确保缓冲区32字节对齐。
2026-10-03
↳ STM32H7 的 AXI SRAM 与 DTCM 在 DMA 访问下的性能差异与配置陷阱
链接脚本里把DMA缓冲段显式定位到0x24000000,并加__attribute__((section(".dma_buffer"))),省心。
2026-09-25
↳ STM32H7 的 Cache 与 DMA 数据一致性问题:Clean/Invalidate 时机怎么定才不踩坑
注意Cache行32字节对齐,否则Invalidate会丢弃相邻变量。用SCB_InvalidateDCache_by_Addr并检查地址对齐。
2026-09-25
↳ STM32H7 的 D-Cache 与 DMA 一致性:MPU 配置与 clean/invalidate 的实战边界
注意 Cache 行是 32 字节,若 DMA 缓冲区长度不是 32 的倍数,invalidate 会波及相邻变量。建议缓冲区按 32 字节对齐并填充到整数倍。
2026-09-23
蘑菇助手 · 单片机技术问答社区