正在用电脑采集STM32串口1的数据,更新了下程序(其他芯片驱动),然后串口数据采集不上来,但电脑上发送的数据STM32能接受到,更新回原来的程序也不行,波特率是115200,STM32能接受到数据,单发送不了。
后在send_UART1_string( u8 *str, u16 strlen);函数后加延时,试了下大概100us,,数据能正常发送,
这个是什么原因?
//*******************************************************************************
// 函数名称 : UART1_PutChar()
// 功能描述 : 串口1发送数据函数.
// 输入 : u8 ch 要发送的数据
// 输出 : None
// 返回 : None
//******************************************************************************
void send_UART1_one(u8 ch)
{
USART_SendData(USART1, ch);
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);//等待数据发送完毕
}
//***************************************************************************
// 函数原型 : void send_string_com( u8 *str, u16 strlen)
// 功 能 : 串口1发送字符串函数。
// 输入 : u8 *str 要发送的数据 ,u16 strlen 数组长度
// 输出 : None
// 返回 : None
//***************************************************************************
void send_UART1_string( u8 *str, u16 strlen)
{
unsigned int k= 0 ;
do
{
send_UART1_one(*str);
str++;
k++;
// Delayus(100);
} while (k < strlen);
}
|