我在写第一个USAT程序时,发现一个问题:在连续发送和接收两个字节数据以上时老是最后一个字节没发出去或者最后一个字节没收到,其他收到都正确,就比如说发01 02 03,那最后的03就没进中断.但是我发送时在while(USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET);之前加USART_GetFlagStatus(USART2, USART_FLAG_TXE);的话就可以正确发送,接收时在中断里面的 if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET前面加USART_GetITStatus(USART2, USART_IT_RXNE); 就可以正确接收,很不解. |
RE:关于STM32串口问题
RE:关于STM32串口问题
{
if(LenRx < DataLen)
{
DataRX[LenRx++;]= USART_ReceiveData(USART2);
}
else LenRx = 0;
if(USART_GetITStatus(USART2,USART_IT_TXE)==SET)
{
if(TxCount
RE:关于STM32串口问题
RE:关于STM32串口问题
if(USART_GetITStatus(USART2,USART_IT_RXNE)==SET)
{
if(LenRx < DataLen)
{
DataRX[LenRx++;]= USART_ReceiveData(USART2);
}
else LenRx = 0;
}
回复:关于STM32串口问题
你用下列代码就可以实现,不需要太多的代码。判断标志位只需要判断中断标志位就可以了。
if(USART_GetITStatus(USART2,USART_IT_RXNE)==SET)
{
if(LenRx < DataLen)
{
DataRX[LenRx++;]= USART_ReceiveData(USART2);
}
else LenRx = 0;
}
高手啊!以后有问题还多多请教!
RE:关于STM32串口问题