wangfq
ee3ade6f00
fix(vd960DBN): PRINT 宏临界区保护 — printf 重入修复 (乱码+HardFault 根因)
现场: LUP 帧后乱码+复位。JSON: sensor 打印被二进制污染、
LUP Rx hex 残留重复 → printf 交叉输出的典型症状。
根因: BLE 协议栈回调(peripheral.c, BB 中断上下文)与主循环
都有 PRINT, 交叉调用 printf → 输出乱码 + newlib 堆/状态破坏
→ HardFault (RST=0x10000000 为 HardFault_Handler 内 NVIC_SystemReset)。
修复:
- debug.h PRINT 宏: 保存/恢复 MSTATUS 临界区 (__get_MSTATUS/
__disable_irq/printf/__set_MSTATUS), 中断里调用也能正确恢复,
不会嵌套误开中断
- loop_uart_proto: LUP Rx 逐字节打印改缓冲一次性输出 —
逐字节 PRINT 关中断 ~350us/字节屏蔽 UART2 ISR 丢帧
2026-08-13 16:06:35 +08:00
..
2026-08-13 15:44:07 +08:00
2026-08-13 11:27:08 +08:00
2026-08-13 15:44:07 +08:00
2026-08-12 18:31:56 +08:00
2026-08-13 15:44:07 +08:00
2026-08-13 16:06:35 +08:00
2026-08-04 15:04:12 +08:00
2026-08-12 18:31:56 +08:00
2026-08-13 15:44:07 +08:00
2026-08-12 14:08:34 +08:00
2026-07-01 08:55:22 +08:00
2026-08-12 18:31:56 +08:00
2026-08-12 19:34:55 +08:00
2026-06-25 16:21:57 +08:00
2026-08-05 08:53:18 +08:00
2026-08-12 18:31:56 +08:00