在发送特定格式的串口数据时,遇到最后一个字节在移位寄存器里出不去,要下一次发送才能出去的问题。
数据原型:uint8_t 类型的数组
TX_16_Data2[0]=0x7E;
TX_16_Data2[1]=0x03;
TX_16_Data2[2]=0x12;
TX_16_Data2[3]=0x11;
TX_16_Data2[4]=0xEF;
Usart_SendString(USART1,TX_16_Data2);
发送函数:
/***************** 发送一个字符 **********************/
void Usart_SendByte( USART_TypeDef * pUSARTx, uint8_t ch)
{
/* 发送一个字节数据到USART */
USART_SendData(pUSARTx,ch);
/* 等待发送数据寄存器为空 */
while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET);
}
/***************** 发送字符串 **********************/
void Usart_SendString( USART_TypeDef * pUSARTx, char *str)
{
unsigned int k=0;
do
{
Usart_SendByte( pUSARTx, *(str + k) );
k++;
while(USART_GetFlagStatus(pUSARTx,USART_FLAG_TC)==RESET)
{}
} while(*(str + k)!='\0');
/* 等待发送完成 */
}
虽然第一次多发送一个空字节,就能满足一次的要求。但是没有找到问