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:21 编辑
串口分时复用
STC8H/STC8G 的 4组 独立串口程序, 通用
本帖最后由 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]