TI LM3S同时使用两个以上的串口正确的方法
自己编写函数:
//*****************************************************************************
//
//! Changes UART printf output port.
//!
//! \param ulPortNum is the number of UART port to use for the serial console
//! (0-2)
//!
//! \return None.
//
//*****************************************************************************
void
UARTPrintfPortChange(unsigned long ulPortNum)
{
//
// Select the base address of the UART.
//
g_ulBase = g_ulUARTBase[ulPortNum];
}
把该函数放在需要修改的地方即可。
下面简单说明原理
g_ulBase为全局变量,用于选择UART。
TI固有函数
void UARTStdioInitExpClk(unsigned long ulPortNum, unsigned long ulBaud)
初始化串口时,有定义g_ulBase
//
// Select the base address of the UART.
//
g_ulBase = g_ulUARTBase[ulPortNum];
初始化之后,所有有关串口操作的函数都要根据g_ulBase来选定串口。
因此,修改g_ulBase即可修改串口。:rose:
其他不可取的方法有:初始化一个串口,使用后除能,然后再初始化另一个串口。这样效率低下,速度也打不到应用需求,也容易出现初始化错误。