zhouke58 发表于 2011-4-6 16:26:03

关于STM32串口问题

我在写第一个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);  就可以正确接收,很不解. 

fxw451 发表于 2011-4-6 16:42:05

RE:关于STM32串口问题

数据丢失,多个加个符合,

发表于 2011-4-6 17:34:22

RE:关于STM32串口问题

if(USART_GetITStatus(USART2,USART_IT_RXNE)==SET)
{
   if(LenRx < DataLen)
    {
        DataRX= USART_ReceiveData(USART2);   
    }
    elseLenRx = 0;
    if(USART_GetITStatus(USART2,USART_IT_TXE)==SET)
   {
      if(TxCount

zhouke58 发表于 2011-4-6 18:07:49

RE:关于STM32串口问题

安老师,我看下你程序,是明白什么意思,我是用中断接收,发送是查寻发送。我写的唯一和你不一样的就是我没加溢出处理程序,但是我在测试时就发了一次而已,发一个字节根本收不到,发两个就收到前面那个,是这样的问题

发表于 2011-4-6 21:31:01

RE:关于STM32串口问题

你用下列代码就可以实现,不需要太多的代码。判断标志位只需要判断中断标志位就可以了。
if(USART_GetITStatus(USART2,USART_IT_RXNE)==SET)
{
if(LenRx < DataLen)
{
DataRX= USART_ReceiveData(USART2);
}
else LenRx = 0;
}

fxw451 发表于 2011-4-6 21:51:05

回复:关于STM32串口问题

回复第 5 楼 安 于2011-04-06 13:31:01发表:
你用下列代码就可以实现,不需要太多的代码。判断标志位只需要判断中断标志位就可以了。
if(USART_GetITStatus(USART2,USART_IT_RXNE)==SET)
{
if(LenRx < DataLen)
{
DataRX= USART_ReceiveData(USART2);
}
else LenRx = 0;


高手啊!以后有问题还多多请教!

dbayj2 发表于 2011-4-13 11:52:54

RE:关于STM32串口问题

也是类似问题,晚上回去试下安老师的代码,非常感谢
页: [1]
查看完整版本: 关于STM32串口问题