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]