上位機 PC USB2.0 的 任何通訊軟體多可以連,
收到上位機的資料, STM32 再把資料全部回傳回去
while(1)
{
// ****** Receive ***********
if (USB_ReceiveFlg == TRUE) //收到后上位机的数据后,将发送一次数据给PC
{
USB_ReceiveCount++;
LCD_ShowNum(20 ,100 ,USB_ReceiveCount ,4 ,16); //CD_ShowNum(u16 x,u16 y,u32 num,u8 len,u8 size); //显示一个数字
LCD_ShowString(20,120,200,16,16," "); //Clear 显示
LCD_ShowString(20,120,200,16,16,Receive_Buffer); // Receive Data 显示 //LCD_ShowString(u16 x,u16 y,u16 width,u16 height,u8 size,u8 *p); //显示一个字符串,12/16字体
USB_ReceiveFlg = FALSE;
USB_SendCom = TRUE;
}
// ****** Sending ***********
if (USB_SendCom && USB_SendFlg == TRUE)
{
USB_SendString( "ALIENTEK STM32 Receive Respond ; Sending Data:");
delay_ms(100);
USB_SendString(Receive_Buffer);
USB_SendCount++;
LCD_ShowNum(20 ,200 ,USB_SendCount ,4,16);
LCD_ShowString(20,260,200,16,16," "); //Clear Sending Timeout 显示
USB_SendCom = FALSE;
}
// ****** Sending Timerout Check ***********
if (USB_SendFlg == FALSE)
{
USB_SendTimeout++;
if (USB_SendTimeout > 20)
{
LCD_ShowString(20,260,200,16,16,"USB Sending Timeout"); //USB Sending Timeout 显示
USB_SendTimeout =0 ;
USB_SendFlg = TRUE; // Auto Reset Sending Timeout Error
}
}
delay_ms(100);
i++;
if(i==20)
{
i=0;
LED0=!LED0;
}
}
}
void USB_SendString(u8 *str) //
{
u8 ii=0;
while(*str)
{
Transi_Buffer[ii++]=*(str++);
if (ii ==nReportCnt) break;
}
LCD_ShowString(20,220,200,16,16," ");
LCD_ShowString(20,220,200,16,16,Transi_Buffer); //Transi_Buffer 显示
UserToPMABufferCopy(Transi_Buffer, ENDP2_TXADDR, nReportCnt );
_SetEPTxStatus(ENDP2, EP_TX_VALID);
USB_SendFlg = FALSE;
}
|