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