程序使用DMA发送,开发送中断, 中断里关485发送. 结果发现发送出去的字节少了并且最后一个字节不对.
以为DMA中断已经发生,代表数据已发送完成,马上关485发送, 但数据还要经过UART外设, 不要忽略这个.
解决问题的办法就是在中断里检测UART发送完成标志. 然后再关485发送. 数据就能通讯正常.
while(!USART_GetFlagStatus(USART3, USART_FLAG_TC))
{
}
USART_ClearFlag(USART3,USART_FLAG_TC);
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
原来的程序是做的延时 , 能用, 但总觉得不对头, 找到了问题的根源
一周热门 更多>