波波哥 发表于 2024-6-10 08:45:05

USB转UART波特率问题,请大神指点

用官方USB转单串口例程做修改,使用串口助手
给STC的UART串口发送0x59时点亮STC的LED灯。
使用例程原波特率115200时可以正常点亮,
当把波特率改为9600时无法点亮LED。
查看虚拟串口收到的数据是0x59,
红色是修改部分。


void uart_init()
{
    P_SW2 &= ~0x01;   //UART2 switch to: 0: P1.0 P1.1

    P1M0 &= ~0x03;      //P1.0,P1.1设置为准双向模式
    P1M1 &= ~0x03;

    S2CON = 0x50;
    T2L = BR(9600);
    T2H = BR(9600) >> 8;
    AUXR |= 0x14;            //定时器2时钟1T模式,开始计时
    IE2|= 1;            //允许中断

    LineCoding.dwDTERate = REV4(9600);
    LineCoding.bCharFormat = 0;
    LineCoding.bParityType = 0;
    LineCoding.bDataBits = 8;
}



void uart_polling()
{
    BYTE dat;
    BYTE cnt;

    if (DeviceState != DEVSTATE_CONFIGURED)
      return;

    if (!UsbInBusy && (TxRptr != TxWptr))
    {

                        if(TxBuffer==0x59)
                              { LED = 0; }
                        
      IE2 &= ~0x80;   //EUSB = 0;
      UsbInBusy = 1;
      usb_write_reg(INDEX, 1);
      cnt = 0;
      while (TxRptr != TxWptr)
      {
            usb_write_reg(FIFO1, TxBuffer);
            cnt++;
            if (cnt == EP1IN_SIZE) break;
      }
      usb_write_reg(INCSR1, INIPRDY);
      IE2 |= 0x80;    //EUSB = 1;
    }



soma 发表于 2024-6-10 18:14:48

tx是发送,接收应该是rx吧
页: [1]
查看完整版本: USB转UART波特率问题,请大神指点