串口接收中断发生了很诡异的事情

2019-08-14 17:29发布

我用STM32F103C8T6写串口接收中断,将接收的数据,再通过串口发送出来。但是出了一个很奇怪的问题,不知道具体什么原因,请问有没有大神能给个答复呢?怎么都想不到为什么会这样。我用串口调试助手发送55 04 58 22,点一次发送,串口助手收到单片机回应只有一个55,再点一次发送,收到回应04 58 22,再点一次又是55 就是这样,每次都是分两次才接受得完,不知道这个是什么原因呢。
[mw_shl_code=c,true]        while(1)
        {
                if(ReceiveState==1)
                {
                        ReceiveState=0;
                        for(i=0;i<4;i++)
                        {
                                USART_SendData(USART1,Rec);
                                while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);
                        }
                Rx_Counter=0;

                }
        }
void USART1_IRQHandler(void)
{
        u8 Clear=Clear;
        if (USART_GetITStatus(USART1,USART_IT_RXNE))
        {
                USART_ClearITPendingBit(USART1,USART_IT_RXNE);
               
                Rec[Rx_Counter++]=USART_ReceiveData(USART1);
                if(Rx_Counter==4)
                {
                        ReceiveState=1;       
                }
               
        }
}[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
Anthony_brave
1楼-- · 2019-08-15 22:18
 精彩回答 2  元偷偷看……
oywjex
2楼-- · 2019-08-15 23:56
Theone 发表于 2017-8-8 13:54
楼主单步调试一下问题在哪吧。

您好,这个串口怎么单步调试呀?我发送了4个字节,但是单步只执行接收一个字节的过程。接收了55然后就进while(1)了。
Theone
3楼-- · 2019-08-16 03:39
oywjex 发表于 2017-8-8 14:18
您好,这个串口怎么单步调试呀?我发送了4个字节,但是单步只执行接收一个字节的过程。接收了55然后就进w ...

你可以一个字节一个字节的发,然后再分析你的逻辑哪里出问题了。
oywjex
4楼-- · 2019-08-16 04:31
Theone 发表于 2017-8-8 15:22
你可以一个字节一个字节的发,然后再分析你的逻辑哪里出问题了。

一字节一个字节 就没问题。。。这个就是我最想不通的地方
1269784324
5楼-- · 2019-08-16 08:55
最好弄个定时器把一帧帧数据区分开来
tuowai
6楼-- · 2019-08-16 10:03
 精彩回答 2  元偷偷看……

一周热门 更多>