#include "CH57x_common.h"
UINT8 TxBuff[] = "This is a tx examrn";
UINT8 RxBuff;
UINT8 trigB;
int main()
{
UINT8 len;
SetSysClock( CLK_SOURCE_PLL_60MHz );
/* 配置串口1:先配置IO口模式,再配置串口 */
GPIOA_SetBits( GPIO_Pin_9 );
GPIOA_ModeCfg( GPIO_Pin_8, GPIO_ModeIN_PU );// RXD-配置上拉输入
GPIOA_ModeCfg( GPIO_Pin_9, GPIO_ModeOut_PP_5mA ); // TXD-配置推挽输出,注意先让IO口输出高电平
UART1_DefInit();
while( 1 )
{
len = UART1_RecvString( RxBuff );
if ( RxBuff[0]==0xaa&&RxBuff[1]==0xc0)
{
UART1_SendString( RxBuff, len );
}
}
}
刚刚
由于我需要传 BOS Descriptor 的内容,Microsoft OS 2.0 descriptor 长达 178 字节,但是我每次只能发送 64字节
我参考了官方示例的 USB 中断处理函数,其中
else
{
if ( chtype & 0x80 ) // 上传
{
len = ( SetupReqLen > DevEP0SIZE ) ?
DevEP0SIZE : SetupReqLen;
SetupReqLen -= len;
}
else
len = 0; // 下传
R8_UEP0_T_LEN = len;
R8_UEP0_CTRL = RB_UEP_R_TOG | RB_UEP_T_TOG | UEP_R_RES_ACK | UEP_T_RES_ACK; // 默认数据包是DATA1
}
这里会将 len 设置成 64 (DevEp0Size),期望的是 Host 继续发同样的请求,并且 pSetupReqPak->wLength 为 178 - 64,但这并没有发生,我这里是不是做错了,需要怎么分包发送呢?