这和TXE/TC标志位有关:
USART_SendData(USART1, Byte);
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
写一个数组:sendbuffer[5]={0x11,0x22,0x33,0x44,0x55};
如果发送时使用TC作为发送完成判断标志 ,
USART_SendData(USART1, Byte);
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
就会出现:数组第一个字符消失
如果使用TXE作为发送完成判断标志 ,
USART_SendData(USART1, Byte);
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
就会出现:数组最后一个字符消失
所以,为了保证数组能完整发送,两个标志位都判定一下;
USART_SendData(USART1, Byte);
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
发现了另一个问题,每次复位后发送都会多出个FF,找一下原因