微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > 嵌入式系统设计讨论 > UART串口通讯

UART串口通讯

时间:10-02 整理:3721RD 点击:
我做的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不能打印是怎么回事,软件的锅吗?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top