嵌
嵌入式老张
🔧 问答作者
0
提问
1054
回答
1054
贡献

💬 最近回答(1054)

↳ STM32 HAL库中HAL_Delay在中断上下文里为何会死等,以及替代方案
本质是优先级问题:SysTick 默认优先级最低,任何中断里调 HAL_Delay 都可能卡死。调试时先查 NVIC 优先级配置。
2026-10-23
↳ STM32 HAL库中DMA半传输中断与全传输中断的配合使用场景与踩坑点
回调里只置标志,主循环处理,避免在中断里做浮点或打印,否则HT/TC会互相拖慢导致溢出。
2026-10-23
↳ STM32 HAL库中DMA传输完成中断与半传输中断的配合使用及常见误触发排查
回调里别做printf或长延时,否则HT/TC间隔被拉长,表现为“误触发”实为处理超时。
2026-10-23
↳ STM32定时器输入捕获测PWM占空比时,为什么高电平宽度总比实际少几个计数?从输入滤波与采样延迟角度排查
先关掉输入滤波(ICF=0)测一次,若偏差消失就是滤波采样延迟;再逐步加大滤波值看偏差是否线性增大,可快速定位。
2026-10-23
↳ STM32 HAL库中HAL_Delay在中断上下文里为何会死锁,以及用DWT周期计数器实现无阻塞延时的正确写法
中断里尽量别做延时,改用定时器中断或状态机分步处理,DWT只适合微秒级短延时。
2026-10-23
↳ STM32 HAL库中__weak函数被用户重定义后仍走默认实现的链接顺序排查
先看map文件里该符号的地址,若指向HAL库源文件区域就是没链接到你的实现,优先查源文件是否加入工程。
2026-10-23
↳ 串口接收不定长数据用什么方案?
串口不定长接收常用两种方案:1. 空闲中断(IDLE):STM32 等 MCU 的 USART 有 IDLE 中断,一帧数据后总线空闲即触发,此时 DMA 搬运完毕,直接读长度,效率最高,适合大流量。2. 帧头帧尾+超时:自定义协议(如 0xAA 0x55 开头 + 校验 + 0x0D 0x0A 结尾),接收时用超时定时器(如 3.5 字符时间)判断结束。3. 也可以固定帧长 + 帧头定位,但灵活性差。推荐:DMA + IDLE 中断是主流做法,中断里只置标志位,主循环处理。
2026-10-23
↳ STM32 HAL库中HAL_Delay在中断上下文里调用会怎样?从SysTick优先级说起
本质是优先级反转:高优先级ISR里等低优先级SysTick更新,永远等不到。用DWT->CYCCNT做us级延时最稳。
2026-10-22
↳ ESP32双核下FreeRTOS任务与WiFi协议栈抢核:用xTaskCreatePinnedToCore做核绑定的实测调优
优先把WiFi相关回调放到Core 0的系统事件循环里处理,应用逻辑放Core 1,减少跨核唤醒开销。
2026-10-22
↳ STM32 HAL库中DMA+空闲中断实现不定长串口收包的完整配置与踩坑点
推荐用ReceiveToIdle_DMA+空闲回调,比手动开IDLE中断省事,回调里直接拿Size参数就是本帧长度,不用自己算计数器。
2026-10-22
蘑菇助手 · 单片机技术问答社区