原子哥,u2_printf不用DMA传输的话,应该怎么改啊?
[mw_shl_code=c,true]
[/mw_shl_code]
[mw_shl_code=c,true]//串口2,printf 函数
//确保一次发送数据不超过USART2_MAX_SEND_LEN字节
void u2_printf(char* fmt,...)
{
va_list ap;
va_start(ap,fmt);
vsprintf((char*)USART2_TX_BUF,fmt,ap);
va_end(ap);
while(DMA1_Channel7->CNDTR!=0); //等待通道7传输完成
UART_DMA_Enable(DMA1_Channel7,strlen((const char*)USART2_TX_BUF)); //通过dma发送出去
}[/mw_shl_code]
我改的贴在下边了,改好之后,我u2_printf("OK"),结果却发到串口调试助手的却不是OK。
[mw_shl_code=c,true]void u2_printf(char* fmt,...)
{
va_list ap;
va_start(ap,fmt);
vsprintf((char*)myUsart2.TxBuf,fmt,ap);
va_end(ap);
while(USART_GetFlagStatus(USART2,USART_FLAG_TC) == RESET);
// USART_SendData(USART2,(const char*)myUsart2.TxBuf);
USART_SendData(USART2,strlen((const char*)myUsart2.TxBuf));
}[/mw_shl_code]
下边是串口调试助手的截图:
请原子哥指点迷津,谢谢!
|