UART串口通讯
是软件问题吗?还是硬件没配置好?
什么开发板,详细说一下
松翰SN32F107,好像是软件问题诶,见了鬼了,我拿示例程序就这样,完整代码就是对的。
示例程序main函数是这样的uint32_t i;
//User can configure System Clock with Configuration Wizard in system_SN32F100.c
SystemInit();
//--------------------------------------------------------------------------
//User Code starts HERE!
GulNum = 0;
for (i=0; i<16; i++) //clear Rx FIFO
bUART0_RecvFIFO[i] = 0;
UART0_Init();
UART1_Init();
//===UART0 TX===
for (i=0; i<26; i++)
{
UART0_SendByte('a'+i);
}
UART0_SendByte('\n');
UART0_SendByte('\r');
for (i=0; i<26; i++)
{
UART0_SendByte('A'+i);
}
UART0_SendByte('\n');
UART0_SendByte('\r');
while (1)
{
//===UART0 RX===
if (bUART0_RecvNew == 1)
{
bUART0_RecvNew = 0;
}
}
我自己改的一个打印函数,现在就是打印乱码
void UART0_SendByte (uint8_t ucDat) //uint8_t是unsigned char
{
SN_UART0->TH = ucDat; //发送保持寄存器
while ((SN_UART0->LS & 0x40) == 0);
}
void UARTPrintfString(char *pcStr)
{
while(pcStr && *pcStr)
{
UART0_SendByte(*pcStr++);
}
}
void uprintf(char *fmt, ...)
{
va_list ap;
char string[256];
va_start(ap,fmt);
vsprintf(string,fmt,ap);
UARTPrintfString(string);
va_end(ap);
}
int16_t a; //int16_t是signed short int
uprintf("%d",a);
求个解答,或者修改意见
我现在又遇到一个鬼问题,uart不能打印是怎么回事,软件的锅吗?