STM32F103
void Uart1_PutString(u8* buf , u8 len)
{
for(u8 i=0;i<len;i++)
{
Uart1_PutChar(*buf++);
}
}
u8 Uart1_PutChar(u8 ch)
{
//USART_ITConfig(USART1, USART_IT_TXE, ENABLE);
/* Write a character to the USART */
Delay_Ms(15);
USART_SendData(USART1, (u8) ch);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);
return ch;
}
在这个例程中,如果没有Delay_Ms(15);这个延时,调用void Uart1_PutString(u8* buf , u8 len),数据就发送不出去,延时短,发送数据不全。
按说while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);
这句就是判断是否发送完成,完成了再发送,应该不会丢数据阿!可是却丢了,
为什么? |