单片机学习小组
直播中

贾永世

7年用户 1812经验值
私信 关注

CC3200调试串口UART出现乱码问题怎么解决?

CC3200调试串口UART出现乱码问题怎么解决?

回帖(1)

周奕

2022-1-25 11:04:33
在使用超级终端Tera Team软件调试CC3200 UART示例程序时,界面总是输出乱码。

参考了另外一篇博客之后,提出有可能是波特率设置的问题。在设置里面,发现设置的波特率为9600bit/s。



void
UARTConfigSetExpClk(unsigned long ulBase, unsigned long ulUARTClk,
                    unsigned long ulBaud, unsigned long ulConfig)
{
    unsigned long ulDiv;


    //
    // Check the arguments.
    //
    ASSERT(UARTBaseValid(ulBase));
    ASSERT(ulBaud != 0);


    //
    // Stop the UART.
    //
    UARTDisable(ulBase);


    //
    // Is the required baud rate greater than the maximum rate supported
    // without the use of high speed mode?
    //
    if((ulBaud * 16) > ulUARTClk)
    {
        //
        // Enable high speed mode.
        //
        HWREG(ulBase + UART_O_CTL) |= UART_CTL_HSE;


        //
        // Half the supplied baud rate to compensate for enabling high speed
        // mode.  This allows the following code to be common to both cases.
        //
        ulBaud /= 2;
    }
    else
    {
        //
        // Disable high speed mode.
        //
        HWREG(ulBase + UART_O_CTL) &= ~(UART_CTL_HSE);
    }


    //
    // Compute the fractional baud rate divider.
    //
    ulDiv = (((ulUARTClk * 8) / ulBaud) + 1) / 2;


    //
    // Set the baud rate.
    //
    HWREG(ulBase + UART_O_IBRD) = ulDiv / 64;
    HWREG(ulBase + UART_O_FBRD) = ulDiv % 64;


    //
    // Set parity, data length, and number of stop bits.
    //
    HWREG(ulBase + UART_O_LCRH) = ulConfig;


    //
    // Clear the flags register.
    //
    HWREG(ulBase + UART_O_FR) = 0;


    //
    // Start the UART.
    //
    UARTEnable(ulBase);
}


上面是CC3200 SDK提供的API函数,主要是为了配置UART接口,其中函数第三个参数ulBaud就是指波特率。


void
InitTerm()
{
#ifndef NOTERM
  MAP_UARTConfigSetExpClk(CONSOLE,MAP_PRCMPeripheralClockGet(CONSOLE_PERIPH),
                  UART_BAUD_RATE, (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
                   UART_CONFIG_PAR_NONE));
#endif
  __Errorlog = 0;
}


上面是主函数里的初始化终端函数,就是引用了UAET的API函数对UART进行初始化,我们看到第三个参数为UART_BAUD_RATE,这个就是波特率。这是一个宏定义,我们去找找它定义为了多少。


#define UART_BAUD_RATE  115200
#define SYSCLK          80000000
#define CONSOLE         UARTA0_BASE
#define CONSOLE_PERIPH  PRCM_UARTA0


在uart_if.h这个头文件,可以发现波特率被设置为了115200。接下来我们去修改超级终端的波特率,重新运行,发现乱码问题已经解决了。



举报

更多回帖

发帖
×
20
完善资料,
赚取积分