求助!!STC32G12K128 35I-LQFP48串口调试问题求助(已解决)
<p>大家好,在调试 STC32G12K128 35I-LQFP48时用的手册中<strong>串口2使用定时器2波特率发生器</strong> 例程,使用的P4.6,P4.7口,所以增加了一个<strong>P_SW2|=0X01;</strong> 进行串口选择,但是在运行程序时 接收的字符串不是 程序中的 <strong>Uart Test !</strong> 而是一串乱码, 乱码见下图,但是发送 “123”可以正常接收到单片机回复的“123”,请问这是什么问题啊? 怎么解决啊??感觉发送字符串有问题,但是不知道问题在哪,程序如下:</p><pre><code>#include "STC32G.H"
#include "intrins.h"
#define FOSC 11059200UL
#define BRT (65536-(FOSC/115200+2)/4)
bit busy;
char wptr;
char rptr;
char buffer;
void Uart2Isr() interrupt 8
{
if (S2TI)
{
S2TI=0;
busy = 0;
}
if (S2RI)
{
S2RI=0;
buffer = S2BUF;
wptr &= 0x0f;
}
}
void Uart2Init()
{
P_SW2=0X80;
P_SW2|=0X01;
S2CFG=0X01;
S2CON = 0x50;
T2L = BRT;
T2H = BRT >> 8;
T2x12=1;
T2R=1;
wptr = 0x00;
rptr = 0x00;
busy = 0;
}
void Uart2Send(char dat)
{
while (busy);
busy = 1;
S2BUF = dat;
}
void Uart2SendStr(char *p)
{
while (*p)
{
Uart2Send(*p++);
}
}
void main()
{
EAXFR=1;
CKCON=0X00;
WTST=0X00;
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
Uart2Init();
IE2 = 0x01;
EA = 1;
Uart2SendStr("Uart Test !\r\n");
while (1)
{
if (rptr != wptr)
{
Uart2Send(buffer);
rptr &= 0x0f;
}
}
}
</code></pre>
<p><img src="data/attachment/forum/202412/14/142841yomw7bp2br7rbr77.png" alt="image.png" title="image.png" /></p>
<p>没明白你想表达的</p>
wlhet 发表于 2024-12-14 14:41
没明白你想表达的
程序应该是上电自动发送 字符串 “Uart Test !” ,但是我这边自动发送一段乱码 <p>好了 问题已经解决。<img src="data/attachment/forum/202412/14/151407i7p0hzm7dbx5rs22.png" alt="image.png" title="image.png" /></p>
STC316461253 发表于 2024-12-14 15:14
好了 问题已经解决。
额,不错,自己搞定
页:
[1]