//串口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发送出去
}
请问原子哥: vsprintf((char*)USART2_TX_BUF,fmt,ap);这个宏的意思:不就是用USTART2发送数据么
为啥还用到DMA在发送一遍数据
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
我也遇见这个问题了,就是遇见0就结束了,0后面的东西都没了,va_start(ap,fmt);的原因。有可能是个bug,不知道说的对不对原子哥
一周热门 更多>