关于u2_printf函数的问题

2019-07-25 11:22发布

//串口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在发送一遍数据
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
正点原子
1楼-- · 2019-07-25 13:28
vsprintf,只是将数据打印到USART2_TX_BUF,并没有输出到串口,你别搞错对象了,vsprintf不是printf!!
niyongc
2楼-- · 2019-07-25 16:35
知道了,非常感谢!
追破风的小石头
3楼-- · 2019-07-25 21:03
 精彩回答 2  元偷偷看……
majy
4楼-- · 2019-07-26 00:04
您好,请问那个va_start(ap,fmt);函数是怎么样的?
usb123
5楼-- · 2019-07-26 00:35
为什么这个函数在使用sim800a的时候丢失最后一个字节数据啊
usb123
6楼-- · 2019-07-26 05:39
就是在sim800a发短信的时候会丢失一个字节的unicode编码

一周热门 更多>