13918210822 发表于 2024-2-4 16:38:48

STC32F12的串口2总是配置不好,请问是否有成功的例子? | 已解决

要用分时用多个串口,所以4个都用了

void UART2_config(void)   //P1.0/RxD2 P1.1/TxD2
{
P1NCS = 0x00; P1IE = 0xff;
P1M0 = 0x00; P1M1 = 0x00;
P1PU |= 0x02;
P_SW2 &= ~0x01;   //UART2/USART2: RxD2(P1.0), TxD2(P1.1)
S2CFG = 0x01;   //W1 = 1;
S2CON = 0x50;                //8位数据,可变波特率
AUXR |= 0x04;                //定时器时钟1T模式
T2L = 0xD0;                        //设置定时初始值
T2H = 0xFF;                        //设置定时初始值
AUXR |= 0x10;                //定时器2开始计时
//
ES2= 1;
B_TX2_Busy = 0;
TX2_Cnt = 0;
RX2_Cnt = 0;   
}
初始化后, 发送总是误码,
请问STC32F12的UART2是否有可以用的例子?


国学芯用 发表于 2024-2-4 17:00:35

本帖最后由 国学芯用 于 2024-2-4 17:21 编辑

串口分时复用





STC8H/STC8G 的 4组 独立串口程序, 通用

13918210822 发表于 2024-2-4 17:10:15

本帖最后由 13918210822 于 2024-2-4 18:01 编辑

谢谢!
修改后可用的STC32F12的UART2复用初始化函数:


//========================================================================
// 函数: UART2_config(u8 s2_sw)
// 描述: UART2初始化函数, 参数对应为S2_S选项
// 版本: VER1.0
// 日期: 2024-2-4
// 备注:
//========================================================================
#define S2_SW_P10_P11 0
#define S2_SW_P46_P47 1
void UART2_config(u8 s2_sw)
{
if (0 == s2_sw) {
    P1NCS = 0x00; P1IE = 0xff;
    P1M0 = 0x00; P1M1 = 0x00;
    P1PU = 0x02;
    S2_S = 0;         //UART2/USART2: RxD2(P1.0), TxD2(P1.1)
} else {// treat as (1 == s2_sw)
    P4NCS = 0x00; P4IE = 0xff;
    P4M0 = 0x00; P4M1 = 0x00;
    P4PU = 0x80;
    S2_S = 1;   //UART2/USART2: RxD2_2(P4.6), TxD2_2(P4.7)
}
NOP(32);
S2CFG = 0x01;   //W1 = 1;
      S2CON = 0x50;                  //8位数据,可变波特率
      AUXR |= 0x04;                  //定时器时钟1T模式
      T2L = 0xD0;                        //设置定时初始值
      T2H = 0xFF;                        //设置定时初始值
      AUXR |= 0x10;                  //定时器2开始计时
ES2= 1;
B_TX2_Busy = 0;
TX2_Cnt = 0;
RX2_Cnt = 0;   
}

页: [1]
查看完整版本: STC32F12的串口2总是配置不好,请问是否有成功的例子? | 已解决