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

DM6437 UART发射端ready的问题

在UART通信的一个例程中,使用UART向外部发送若干字节数据。对其中判断UART发射端是否准备好的函数:

EVMDM6437_UART_xmtReady()这个函数,直接使用没有问题。但是我跟踪找到源代码后,自己包装一个函数后就一直不能返回正确的值:

Int16 UART_xmtReady( UART_Handle uart_handle )
{
Uint8 iir_status = ( uart_handle->regs->IIR >> 1 ) & 0x0E;

if ( iir_status == 0 ) // Check for No Interrupts
return 0;
else if ( iir_status == 1 ) // Check for Current TX emptying
return 1;
else // Everything else
return 2;
}

这是为什么呢?是不是程序运行时实际跑的并不是这个源代码呢?

Shine:

程序跑到哪里了?死循环还是跑飞了。

Weiliang Cheng:

回复 Shine:

谢谢回复,没有跑飞,也不是死循环。

通过对照data sheet,发现这个函数代码确实是错误的,自己选择相应的寄存器来实现就可以啦(应该读取LSR寄存器而不是IIR寄存器)

赞(0)
未经允许不得转载:TI中文支持网 » DM6437 UART发射端ready的问题
分享到: 更多 (0)