新手入门
- 积分
- 5
- 金钱
- 5
- 注册时间
- 2018-11-15
- 在线时间
- 0 小时
|
1金钱
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;
}
|
|