
void sndMsg(const char *buf , int count) { int iLoop; for(iLoop = 0 ; iLoop < count ; iLoop++) { while(RESET == USART_GetFlagStatus(USART1 , USART_FLAG_TXE)); USART_SendData(USART1 , buf[iLoop]); while(RESET == USART_GetFlagStatus(USART1 , USART_FLAG_TC)); //程序在这里死循环 } } FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG) { FlagStatus bitstatus = RESET; /* Check the parameters */ assert_param(IS_USART_ALL_PERIPH(USARTx)); assert_param(IS_USART_FLAG(USART_FLAG)); /* The CTS flag is not available for UART4 and UART5 */ if (USART_FLAG == USART_FLAG_CTS) { assert_param(IS_USART_1236_PERIPH(USARTx)); } if ((USARTx->SR & USART_FLAG) != (uint16_t)RESET) //原因:SR寄存器值为0x80,TXE置位,但此时TC没有置位,移位寄存器数据没有发送完成 { bitstatus = SET; } else { bitstatus = RESET; } return bitstatus; } |
USART_SendData(USART1, ch);
while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET )
{
}
评分
查看全部评分
评分
查看全部评分