串口发送一次后就不再发送数据
本帖最后由 Inc_brza 于 2018-5-10 12:00 编辑HAL_UART_Transmit_DMA发送一次数据后,huart->gState始终等于HAL_UART_STATE_BUSY_TX,经调试发现串口数据发送完毕后并没有进入UART_EndTransmit_IT函数将huart->gState重置为HAL_UART_STATE_READY,请教下这个问题怎么解决?
在DMA传输的回调函数中,增加UART_EndTransmit_IT 操作。
选择DMA进行原子操作,要完整性封装。 重新开启中断 你在error那一段放个断点,看看?就算没有callback,都会复位的.还是其他改了这个标识位? 一看就是80后,宇宙骑士的粉? 应该是设置了DMA的TC(传输完成)中断,然后没有清除中断标志或者 Flag。所以当第一次发送完毕之后,标志位没有清零导致不能开始第二次传输。 你设置个中断,看看导致第2次传递的错误是不是标志不对 看下串口,DMA相关的寄存器,是没清掉还是干嘛了 多数是因为标志位没有清零导致不能开始第二次传输。 解决了:L
DMA使能放在任务启动之后了,放前面就好了
页:
[1]
2