串口 DMA 一启用就卡死?用的是 G070
改成 DMA 模式后程序就不动了,CubeMX 配了好几遍也不对劲,怀疑中断没触发。DMA 配错方向也会这样,记得设成 memory to peripheral。 我之前也碰过,结果是忘开 DMA 的中断了…… HAL_UART_Transmit_DMA 用了没?别忘关 IDLE 检测。 看下 NVIC 配置是不是少了 USART 的 DMA 通道。 用逻辑分析仪看看是不是数据根本没发出去。 有没有打开 USART 的 TX DMA 请求位? 我是用 LL 库做的,感觉比 HAL 更直观点。 你有设 FIFO 模式吗?G0 有些版本支持。 把 DMA 中断服务函数打点调一下。 上拉电阻够吗?我以前用 10k 不行。 串口的 TX 和 RX 引脚需正确配置为复用推挽输出模式和浮空输入模式。若配置错误,可能导致 DMA 传输异常,进而使系统卡死。 串口线路可能受到外部电磁干扰,导致数据传输错误,引发 DMA 传输异常。
DMA 通道配置冲突? DMA 的传输方向、数据宽度、传输模式等参数设置错误,可能导致数据传输异常。 中断优先级不合理? 可能是中断服务函数处理不当导致的。。
页:
[1]