TI中文支持网
TI专业的中文技术问题搜集分享网站

DK-TM4C123 UART2配置问题

您好,刚开始在用DK-TM4C123G做原型系统,需要用到UART2,在例子uart_demo中将端口改动为UART2(PD6,PD7)后测试发现U2_TX管脚没有波形输出。请问是不是初始化那里不对。

//
// Enable the peripherals used by this example.
//
//ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
//ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_UART2);

//
// Enable processor interrupts.
//
ROM_IntMasterEnable();

//
// Set GPIO A0 and A1 as UART pins.
//
//ROM_GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);
ROM_GPIOPinTypeUART(GPIO_PORTD_BASE, GPIO_PIN_6 | GPIO_PIN_7);

//

// Configure the UART for 115,200, 8-N-1 operation.
//
// ROM_UARTConfigSetExpClk(UART0_BASE, ROM_SysCtlClockGet(), 115200,
// (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
// UART_CONFIG_PAR_NONE));
ROM_UARTConfigSetExpClk(UART2_BASE, ROM_SysCtlClockGet(), 9600,
(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
UART_CONFIG_PAR_NONE));

//
// Enable the UART interrupt.
//
//ROM_IntEnable(INT_UART0);
ROM_IntEnable(INT_UART2);
//ROM_UARTIntEnable(UART0_BASE, UART_INT_RX | UART_INT_RT);
ROM_UARTIntEnable(UART2_BASE, UART_INT_RX | UART_INT_RT);

//
// Prompt for text to be entered.
//
UARTSend((uint8_t *)"Enter text: ", 12);

//
// Loop forever echoing data through the UART.
//
while(1)
{
UARTSend((uint8_t *)"Enter text: ", 12);
SysCtlDelay(1000);
}

//*****************************************************************************
//
// The UART interrupt handler.
//
//*****************************************************************************
void
UARTIntHandler(void)
{
uint32_t ui32Status;

//
// Get the interrrupt status.
//
//ui32Status = ROM_UARTIntStatus(UART0_BASE, true);
ui32Status = ROM_UARTIntStatus(UART2_BASE, true);

//
// Clear the asserted interrupts.
//
//ROM_UARTIntClear(UART0_BASE, ui32Status);
ROM_UARTIntClear(UART2_BASE, ui32Status);

//
// Loop while there are characters in the receive FIFO.
//
//while(ROM_UARTCharsAvail(UART0_BASE))
while(ROM_UARTCharsAvail(UART2_BASE))
{
//
// Read the next character from the UART and write it back to the UART.
//
// ROM_UARTCharPutNonBlocking(UART0_BASE,
// ROM_UARTCharGetNonBlocking(UART0_BASE));
ROM_UARTCharPutNonBlocking(UART2_BASE,
ROM_UARTCharGetNonBlocking(UART2_BASE));
}
}

//*****************************************************************************
//
// Send a string to the UART.
//
//*****************************************************************************
void
UARTSend(const uint8_t *pui8Buffer, uint32_t ui32Count)
{
//
// Loop while there are more characters to send.
//
while(ui32Count–)
{
//
// Write the next character to the UART.
//
//ROM_UARTCharPutNonBlocking(UART0_BASE, *pui8Buffer++);
ROM_UARTCharPutNonBlocking(UART2_BASE, *pui8Buffer++);
}
}

Kongxl:

回复 Michael Sun:

已解决,谢谢。

解决方法。

换了UART3

增加

ROM_GPIOPinConfigure(GPIO_PC6_U3RX); ROM_GPIOPinConfigure(GPIO_PC7_U3TX);

Kongxl:

回复 Michael Sun:

非常感谢补充说明的解释和提醒。

weiqiu Chen:

回复 Michael Sun:

我是把uart0改为uart3,发送没有问题,但是接受不了数据

GPIOPinConfigure(GPIO_PC6_U3RX); GPIOPinConfigure(GPIO_PC7_U3TX);

这两句有写,按照你说的加这两句

HWREG(GPIO_PORTC_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY; HWREG(GPIO_PORTC_BASE + GPIO_O_CR) = 0xFF;

会报错

xyz549040622:

回复 weiqiu Chen:

报错提示什么信息呢?

Hancheng Zhao:

回复 weiqiu Chen:

我也就收不了数据啊,你的问题解决没

我的倒是没有报错

赞(0)
未经允许不得转载:TI中文支持网 » DK-TM4C123 UART2配置问题
分享到: 更多 (0)