金牌会员
 
- 积分
- 2248
- 金钱
- 2248
- 注册时间
- 2019-8-7
- 在线时间
- 364 小时
|
发现发送函数内没有做置位操作,也就是如果不发送出去的话会一直保留直到发送出去,应该在usb_printf内对APP_Rx_ptr_in 置位,不知道但是做的时候是故意这样的还是没发现@正点原子
//usb 虚拟串口 ,printf 函数
//确保一次发送数据不超 USB_USART_REC_LEN 字节
void usb_printf(char* fmt,...)
{
u16 i,j;
va_list ap;
va_start(ap,fmt);
vsprintf((char*)USART_PRINTF_Buffer,fmt,ap);
va_end(ap);
i=strlen((const char*)USART_PRINTF_Buffer);//此次发送数据的长度
for(j=0;j<i;j++)//循环发送数据
{
VCP_DataTx(USART_PRINTF_Buffer[j]);
}
}
//发送一个字节给虚拟串口 (发给电脑)
//data:要发送的数据
//返回值:USBD_OK
uint16_t VCP_DataTx (uint8_t data)
{
APP_Rx_Buffer[APP_Rx_ptr_in]=data; //写入发送 buf
APP_Rx_ptr_in++; //写位置加 1
if(APP_Rx_ptr_in==APP_RX_DATA_SIZE) //超过 buf 大小了,归零.
{
APP_Rx_ptr_in = 0;
}
return USBD_OK;
}
|
|