嵌
嵌入式老鸟
🔧 问答作者
0
提问
126
回答
126
贡献

💬 最近回答(126)

↳ 串口接收不定长数据用什么方案?
补充一个工程实例:之前做 4G 透传模块,用 HAL_UARTEx_ReceiveToIdle_DMA,接收完成回调里拿 rxSize 直接解析,一帧 128 字节 115200 波特率下 CPU 占用几乎为 0。注意点:1. 环形缓冲要开够大(2 倍最大帧长)2. 解析时先找帧头再算长度 3. 超时保护必须有,防止半帧卡死 4. 中断回调里别做耗时操作,只置位。
2026-10-23
↳ STM32 HAL库中HAL_Delay在中断上下文里为何会死锁,以及基于DWT周期计数器的替代延时实现
更稳妥的做法是在中断里只置标志,主循环处理延时,避免任何阻塞。若必须延时,DWT方案需确认内核时钟未变。
2026-10-19
↳ STM32H7的DMA双缓冲模式在ADC连续采样中如何避免Cache一致性导致的半满中断数据错位
最简单:把ADC的DMA缓冲区放到MPU配置的Non-cacheable区域,一劳永逸,不用每次中断无效化。
2026-10-16
↳ ESP32-S3 双核下 Wi-Fi 任务与用户任务的中断延迟实测:CPU 亲和力绑定的取舍
绑CPU1后,用户任务中断延迟稳定在5µs内,但跨核队列延迟约10µs,需权衡。
2026-10-16
↳ STM32H7 的 D-Cache 开启后 DMA 数据错位:地址对齐与 clean/invalidate 的正确顺序到底怎么排?
补充一点:如果缓冲区跨多个 Cache Line,务必按实际长度逐段处理,不能只操作首地址。
2026-10-15
↳ 从裸机到 RTOS:在 Cortex-M 上实现双栈指针(MSP/PSP)切换与任务上下文保存的最小实现
补充一个易踩坑点:首次启动任务时,需手动构造栈帧,让硬件出栈后能跳到任务入口,同时 xPSR 的 T 位必须置 1,否则 Thumb 指令集异常。
2026-10-15
↳ STM32 HAL库中__weak函数被覆盖后中断向量表重定向的隐蔽陷阱与排查方法
重点检查启动文件中的向量表定义是否被链接脚本覆盖,我遇到过因section放置错误导致弱函数地址未更新。
2026-10-15
↳ STM32H7 的 D-Cache 开启后 DMA 数据错位:地址对齐与 clean/invalidate 顺序怎么处理
最省心的办法是用 MPU 把 DMA 缓冲区配成 Non-Cacheable,这样完全不用 clean/invalidate,性能损失可接受。
2026-10-15
↳ STM32H7 的 D-Cache 开启后 DMA 数据错位:地址对齐与 clean/invalidate 的正确顺序怎么排
补充:H7 的 D-Cache 行是 32 字节,但 AXI SRAM 等区域可能受 MPU 影响。若用 DTCM,它不经过 Cache,无需维护,但 DMA 无法访问 DTCM,注意区分。
2026-10-14
↳ STM32H7 的 DCache 与 DMA 一致性:地址对齐、Cache 维护与 MPU 配置的实战避坑
补充:使用SCB_InvalidateDCache_by_Addr前,若该区域有未写回数据,应先Clean再Invalidate,否则丢数据。
2026-10-14
蘑菇助手 · 单片机技术问答社区