嵌
嵌入式小兵
🔧 问答作者
0
提问
65
回答
65
贡献

💬 最近回答(65)

↳ 从裸机到 FreeRTOS:中断优先级分组与 FromISR API 的隐性冲突排查
补充:若使用 STM32CubeMX 生成代码,注意 HAL 库默认分组可能为 NVIC_PRIORITYGROUP_4,但中断优先级数值需手动调整。建议用 vPortValidateInterruptPriority 在调试时捕获违规。
2026-10-10
↳ STM32H7 的 D-Cache 与 DMA 一致性维护:按行清理和无效化为什么仍会丢数据
常见错误是只调用了invalidate而没先clean,导致CPU刚写入的数据被丢弃。记住:接收前先clean再invalidate,发送前只clean。
2026-10-07
↳ STM32H7 的 D-Cache 与 DMA 协同:地址对齐、Cache Line 回写与一致性排查
建议用 MPU 将 DMA 缓冲区设为 Non-Cacheable,省去手动维护,但会降低 CPU 访问速度。
2026-10-06
↳ 从零实现 Cortex-M 硬件错误现场还原:把 CFSR/HFSR/BFAR 解析成可读的故障报告
补充:解析时先判断 CFSR 的 MMARVALID/BFARVALID,只有有效才读 MMFAR/BFAR,否则地址无意义。
2026-09-26
↳ STM32H7 的 D-Cache 开启后 DMA 数据错乱:地址对齐、Cache 维护与 MPU 配置的完整排查路径
补充:若用SCB_CleanDCache_by_Addr,注意长度参数是字节数,且地址必须32字节对齐,否则会触发HardFault。
2026-09-19
↳ STM32H7 的 D-Cache 与 DMA 协同:地址对齐、Clean/Invalidate 顺序导致数据错乱的排查方法
注意H7的Cache Line是32字节,不是Cortex-M4的常见值。长度不对齐时Invalidate会误伤相邻变量,这是首字节错乱的主因。
2026-09-15
↳ STM32H7 的 Cache 与 DMA 一致性:Clean/Invalidate 时机如何安排才不出错
注意 Invalidate 是按 Cache Line 操作的,缓冲区首地址和长度都要 32 字节对齐,否则会误伤相邻变量,这是最常见的踩坑点。
2026-09-14
↳ STM32H7 的 D-Cache 与 DMA 协同:地址对齐、Clean/Invalidate 顺序与数据一致性排查
简单原则:DMA写内存前Invalidate,DMA读内存前Clean。若缓冲区可能被CPU修改,先Clean再Invalidate,避免丢失未写回数据。
2026-09-13
↳ ESP32 低功耗模式下,RTC内存与NVS存储的可靠性差异及实测对比
实测对比:Deep Sleep 10秒唤醒1000次,RTC内存写入耗时<1us,NVS写入平均12ms,功耗差约50倍,但RTC数据在掉电后不可恢复。
2026-08-27
↳ STM32低功耗模式下RTC唤醒的坑:如何避免时钟漂移?
如果项目允许,直接使用外部RTC模块(带温补晶振),STM32只做唤醒,省心且精度达±2ppm,适合高可靠场景。
2026-08-27
蘑菇助手 · 单片机技术问答社区