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

C6747 uart1不能发送数据

我使用的是uart1例程程序,在发送函数里向THR寄存器写值,发现THR寄存器的值并没有变化,感觉就是THR不可使用,希望专家帮我看下,谢谢。

这是初始化函数:

UART_Handle C6747_UART_open( Uint16 id, Uint32 baudrate )
{
UART_Handle uart_handle;
Uint32 divisor;
volatile Uint16 dummy;

/*
* UART clk / baudrate
* = 150,000,000 / (900 * 16)
*/
divisor = 150000000 / ( baudrate * 16);

switch ( id )
{
case 0:
uart_handle = ( UART_Handle )&UART_MODULE_0;
break;
case 1:
uart_handle = ( UART_Handle )&UART_MODULE_1;
break;
case 2:
uart_handle = ( UART_Handle )&UART_MODULE_2;
break;
default:
return ( UART_Handle )-1;
}

uart_handle->regs->PWREMU_MGMT = 0; // Reset UART TX & RX components

C6747_wait( 100 );

uart_handle->regs->DLL = (divisor & 0xff); // Set baud rate
uart_handle->regs->DLH = (divisor >> 8);
uart_handle->regs->FCR = 0x0007; // Clear UART TX & RX FIFOs
uart_handle->regs->FCR = 0x0000; // Non-FIFO mode
uart_handle->regs->IER = 0x0007; // Enable interrupts
uart_handle->regs->LCR = 0x0003; // 8-bit words,
// 1 STOP bit generated,
// No Parity, No Stick paritiy,
// No Break control
uart_handle->regs->MCR = 0x0000; // RTS & CTS disabled,
// Loopback mode disabled,
// Autoflow disabled

uart_handle->regs->PWREMU_MGMT = 0xE001; // Enable TX & RX componenets

// Clear any pre-existing characters
dummy = uart_handle->regs->THR;
return uart_handle;
}

发送函数:

Int16 C6747_UART_putChar( UART_Handle uart_handle, Uint8 data )
{
uart_handle->regs->THR = data;

return 0;
}   data的值无法写入THR。

这是什么原因呢,为什么THR不可写入。

ju huang:

其他跟uart1相关的寄存器都可以写入。只有THR寄存器赋值没有变化。

ju huang:

回复 ju huang:

LCR寄存器DLAB位显示DISABLE这个正常吗?为什么会出现这种情况。

赞(0)
未经允许不得转载:TI中文支持网 » C6747 uart1不能发送数据
分享到: 更多 (0)