xie2101 发表于 2026-7-12 16:44:15

AI8051U 串口2 实验箱使用中的问题 | 已经解决

修改例子 《ai8051\Ai8051U-32Bit\51-USB-CDC转双串口-根据串口波特率选择出厂时校准的几种常用时钟频率做主频》 后,如果 有3.6 和3.7 干扰, 记得拨通断开关
void sys_init()
{
    WTST = 0;//设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
    EAXFR = 1; //扩展寄存器(XFR)访问使能
    CKCON = 0; //提高访问XRAM速度

    P0M1 = 0x00;   P0M0 = 0x00;   //设置为准双向口
    P1M1 = 0x00;   P1M0 = 0x00;   //设置为准双向口
    P2M1 = 0x00;   P2M0 = 0x00;   //设置为准双向口
    P3M1 = 0x00;   P3M0 = 0x00;   //设置为准双向口
    P4M1 = 0x00;   P4M0 = 0x00;   //设置为准双向口
    P5M1 = 0x00;   P5M0 = 0x00;   //设置为准双向口
    P6M1 = 0x00;   P6M0 = 0x00;   //设置为准双向口
    P7M1 = 0x00;   P7M0 = 0x00;   //设置为准双向口
   
    S1_S1 = 0;
    S1_S0 = 1;      //UART1(RxD1_2/P3.6, TxD1_2/P3.7)
    S2_S = 1;       //UART2(RxD2_2/P4.2, TxD2_2/P4.3)
}



void uart_init()
{
    SCON = 0x50;
    TMOD &= ~0xf0;
    TL1 = BR(MAIN_Fosc,115200);
    TH1 = BR(MAIN_Fosc,115200) >> 8;
    T1x12 = 1;
    TR1 = 1;
    PS = 1;   //提高串口1中断优先级,防止数据丢失
    ES = 1;
   
    S2CON = 0x50;
    T2L = BR(MAIN_Fosc,115200);
    T2H = BR(MAIN_Fosc,115200) >> 8;
    T2x12 = 1;
    T2R = 1;
    PS2 = 1;    //提高串口2中断优先级,防止数据丢失
    ES2 = 1;

    LineCoding1.dwDTERate = REV4(115200);
    LineCoding1.bCharFormat = 0;
    LineCoding1.bParityType = 0;
    LineCoding1.bDataBits = 8;

    LineCoding2.dwDTERate = REV4(115200);
    LineCoding2.bCharFormat = 0;
    LineCoding2.bParityType = 0;
    LineCoding2.bDataBits = 8;
   
    Uart1TxBusy = 0;
    Uart2TxBusy = 0;
    Uart1RxRptr = 0;
    Uart2RxRptr = 0;
    Uart1RxWptr = 0;
    Uart2RxWptr = 0;
    Uart1TxRptr = 0;
    Uart2TxRptr = 0;
    Uart1TxWptr = 0;
    Uart2TxWptr = 0;
}







页: [1]
查看完整版本: AI8051U 串口2 实验箱使用中的问题 | 已经解决