德高望重的老人 发表于 2026-2-8 10:54:47

32G12K128的UART2工作持续不正常

使用32G12K128-TSSOP20做了个东西,用UART2连接蓝牙模块,计划先将单片机设置为透传模式,直接测试模块功能。但是发送至蓝牙模块的信息无法传至电脑。

经检查,蓝牙模块TX功能正常。
然后我测试UART2直接转发UART1,转发UART1发送的消息至短接TX,同时监听其RX转发回电脑,这样来测试串行通信的功能。短接UART2后,串口助手收到全为0,持续发送某字符,结果不变。
测试代码如下:


#include "STC32G.h"
#include <intrins.h>

#define FOSC 11059200UL
#define BRT(65536 - (FOSC / 115200 + 2) / 4)


void UART1_Isr() interrupt 4
{
    if (RI)                  
    {
      RI = 0;            
      S2BUF = SBUF;   
    }
    if (TI)   
      TI = 0;               
    }
}

void UART2_Isr() interrupt 8
{
    if (S2CON & 0x01)         
    {
      S2CON &= ~0x01;   
      SBUF = S2BUF;      

    if (S2CON & 0x02)         
    {
      S2CON &= ~0x02;      
    }
}

void UART1_Init(void)
{
    SCON = 0x50;            
    AUXR = 0x40;            
    TMOD = 0x00;            
    TL1 = BRT;            
    TH1 = BRT >> 8;
    TR1 = 1;
    ES = 1;                  
}

void UART2_Init(void)
{
    S2CON = 0x10;         
    T2L = BRT;               
    T2H = BRT >> 8;
    AUXR = 0x14;               
    IE2 = 0x01;         
}

void GPIO_Init(void)
{
   
    P3M0 = 0x00;         
    P3M1 = 0x00;
}

void main(void)
{
    WTST = 0;               
    EAXFR = 1;               
    CKCON = 0;   
   
    GPIO_Init();               
    UART1_Init();         
    UART2_Init();         
   
    EA = 1;               

    while (1)
    {
      _nop_();            
    }
}



神农鼎 发表于 2026-2-8 15:01:50

1,用 AiCube-ISP 图形化配置
2,或者参考下面这个
4组串口UART使用DMA收发 @32G系列,易用,高效,稳定 !精品实战代码 - DMA支持: QSPI, SPI, I2S, I2C, 4组串口, i8080/MC6800-TFT 国芯人工智能技术交流网站 - AI32位8051交流社区


3,参考下面这个程序

页: [1]
查看完整版本: 32G12K128的UART2工作持续不正常