我这么写有什么问题吗 为什么我的串口能接受的到电脑发的数据 却不能发数据给电脑啊
#include <STC32G.H>
#include "UART2.h"
#define BRT (65536-(MAIN_FOSC/115200+2)/4)
bit busy;//忙碌标志位 忙碌为1 空闲为0
char wptr;//接受到的数据格式
char rptr;
char buffer[16];
void Usart2_Init(void)
{
P_SW2=0x80;
P_SW2 |=0x01;//将串口2的引脚切换到p46
S2CFG=0x01;
S2CON=0x50;
T2L=BRT;
T2H=BRT>>8;
T2x12=1;
T2R=1;
wptr=0x00;
rptr=0x00;
busy=0;
}
void Uart2Isr() interrupt 8
{
if(S2TI)
{
S2TI=0;
busy=0;
}
if(S2RI)
{
S2RI=0;
buffer[wptr++]=S2BUF;
wptr &= 0x0f;
}
}
void Uart2Send(char dat)
{
while(busy);
busy=1;
S2BUF=dat;
}
void Uart2SendStr(char*p)
{
while(*p)
{
Uart2Send(*p++);
}
}
Uart2SendStr("Uart Test!\r\n");
while(1)
{
if(rptr!=wptr)
{
Uart2Send(buffer[rptr++]);
rptr &= 0x0f;
}
}
}
【相关推荐】
在线调试下代码,估计是代码停到send函数的while循环中了