在使用两个STM串口来实现收发数据,为什么在接受数据时,延迟打印后,每当发送4个数据后就会有一个数据被覆盖。

2019-08-14 03:46发布

发送程序
//while(++time%500 != 0);
                                        usart3_send(0xff);
                                delay_ms(30);
                                //while(++time%500 != 0);
                                  usart3_send(0xfe);
                  delay_ms(30);                               
                                //while(++time%500 != 0);
                                  usart3_send(2);
                                  delay_ms(30);
                                //while(++time%500 != 0);
                                  usart3_send(1);
                                delay_ms(30);
                                //while(++time%500 != 0);
                                  usart3_send(72);
                                delay_ms(30);
                                //while(++time%500 != 0);
                                  usart3_send(10);
                                delay_ms(30);
                                //while(++time%500 != 0);
                                  usart3_send(20);
                                delay_ms(30);
                                //while(++time%500 != 0);
                                  usart3_send(30);
                                        delay_ms(30);
                                //while(++time%500 != 0);
                                  usart3_send(40);
                                        delay_ms(30);

发送的函数
void usart3_send(u8 data)
{
        USART3->DR = data;
        while((USART3->SR&0x40)==0);       
}

接受程序
int USART3_IRQHandler(void)
{       
        if(USART3->SR&(1<<5))//接收到数据
        {             
                u8 res;       
                res=USART3->DR;
                delay_ms(20);
                printf( " USART3接收到的数据=%d ",res );
               
   }
return 0;       
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
少爷在哪里
1楼-- · 2019-08-15 16:18
我还是不懂,为什么前面的数据没错,到了第四个就被覆盖了,
少爷在哪里
2楼-- · 2019-08-15 17:31
少爷在哪里 发表于 2017-8-30 19:14
我还是不懂,为什么前面的数据没错,到了第四个就被覆盖了,

我就是知道具体是怎么错的,你能讲的在详细点吗
aiyeba
3楼-- · 2019-08-15 18:03
 精彩回答 2  元偷偷看……
l6931639
4楼-- · 2019-08-15 23:23
在串口中断里使用^-^延时和打印一定要慎重考虑

一周热门 更多>