在线时间6 小时
UID3588702
注册时间2020-9-29
NXP金币0
TA的每日心情 | 开心 2021-1-25 11:21 |
---|
签到天数: 3 天 连续签到: 1 天 [LV.2]偶尔看看I
注册会员

- 积分
- 53
- 最后登录
- 2021-8-27
|
发表于 2021-1-4 10:55:24
|
显示全部楼层
本帖最后由 helloomryang 于 2021-1-4 11:47 编辑
参考手册以下章节
14.4.8 UARTn Line Status Register
这个寄存器的 bit 6,可以用它来判断一个字节是否发送完成
Transmitter Empty(TEMT)
TEMT is set when both UnTHR and UnTSR are empty; TEMT is cleared when
either the UnTSR or the UnTHR contain valid data.
0 UnTHR and/or the UnTSR contains valid data.
1 UnTHR and the UnTSR are empty.
我就是这样用的,前提是fifo设置为1个字节
/*********************************************************************//**
* Macro defines for Macro defines for UART line status register
**********************************************************************/
/** Line status register: Receive data ready*/
#define UART_LSR_RDR ((uint8_t)(1<<0))
/** Line status register: Overrun error*/
#define UART_LSR_OE ((uint8_t)(1<<1))
/** Line status register: Parity error*/
#define UART_LSR_PE ((uint8_t)(1<<2))
/** Line status register: Framing error*/
#define UART_LSR_FE ((uint8_t)(1<<3))
/** Line status register: Break interrupt*/
#define UART_LSR_BI ((uint8_t)(1<<4))
/** Line status register: Transmit holding register empty*/
#define UART_LSR_THRE ((uint8_t)(1<<5))
/** Line status register: Transmitter empty*/
#define UART_LSR_TEMT ((uint8_t)(1<<6))
/** Error in RX FIFO*/
#define UART_LSR_RXFE ((uint8_t)(1<<7))
/** UART Line status bit mask */
#define UART_LSR_BITMASK ((uint8_t)(0xFF))
/*********************************************************************//**
* @brief Check whether if UART is busy or not
* @param[in] UARTx UART peripheral selected, should be:
* - LPC_UART0: UART0 peripheral
* - LPC_UART1: UART1 peripheral
* - LPC_UART2: UART2 peripheral
* - LPC_UART3: UART3 peripheral
* @return RESET if UART is not busy, otherwise return SET.
**********************************************************************/
FlagStatus UART_CheckBusy(LPC_UART_TypeDef *UARTx)
{
if (UARTx->LSR & UART_LSR_TEMT)
{
return RESET;
}
else
{
return SET;
}
}
以上两个是库里面的东西
下面这个是自己写的
void sys_uart2_send_byte(uint8_t tmep_data)
{
UART_SendByte(LPC_UART2,tmep_data);
while(SET == UART_CheckBusy(LPC_UART2));//wait busy
}
|
|