F407串口DMA发送卡死在HAL_DMA_GetState
使用五路串口DMA收发数据,但是在发送的时候,到了while(HAL_DMA_GetState(&hdma_usart3_tx) != HAL_DMA_STATE_READY);的时候就一直无法跳出了。这个是发送函数
!(data/attachment/forum/202403/04/110839kvgw6q9v969dt9ww.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")
卡死在了打断点的那个发送处
!(data/attachment/forum/202403/04/110938wh7iw07j7csea7mb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")
有没有大佬来帮一下忙呀
库函数里有些地方设置状态机变量,正常来讲可能需要在相应回调函数里释放相关外设运行状态,但我们有时往往没
按他们流程来。 你可以在调用发送函数是直接将状态改为Ready,类似下面:
huartx.gState= HAL_UART_STATE_READY;
HAL_UART_Transmit_DMA(...........); !(data/attachment/forum/202403/05/111540tcnnfflrajlf3bl3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "fa6519f71fe0b3a2f1052263b7831f3.png")接收到的数据也对,可以看到串口四接收到的消息数量是正确的,而串口三接收数据大小是红框里的,像随机数一样的
北海道咸鱼 发表于 2024-3-5 11:16
!(data/attachment/forum/202403/05/111540tcnnfflrajlf3bl3.pn ...
这个结果可以看到有数据收到,但不确定是否总线上就是这个数据还是软件等其他原因。
因此可以尝试用示波器或逻辑分析直接线上究竟是不是正确的数据。
页:
[1]