微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > stm32串口通信如何实现二次发送仍显示上次的内容

stm32串口通信如何实现二次发送仍显示上次的内容

时间:10-02 整理:3721RD 点击:
我想实现串口中断接收上位机发过来的字符串,判断后,显示其相关信息。第一次发送后,显示的内容正确,但第二次发送其他的字符串时,显示的仍然是第一次的内容,不知道为什么,还请各位大神多多帮助?这是中断程序:
void USART1_IRQHandler(void)   
{   
                                if(USART_GetITStatus(USART1,USART_IT_RXNE) != RESET) //中断产生
                                {   
                                        USART_ClearITPendingBit(USART1,USART_IT_RXNE); //清除中断标志
                                        Uart1_Buffer[Uart1_Rx_Num] = USART_ReceiveData(USART1);
                                        Uart1_Rx_Num++;  
                                }   
                                if((Uart1_Buffer[0] == 0x5A)&&(Uart1_Buffer[Uart1_Rx_Num-1] == 0xA5))  //判断最后接收的数据是否为设定值,确定数据正确性  
                                        Uart1_Sta=1;  
                                if(USART_GetFlagStatus(USART1,USART_FLAG_ORE) == SET) //溢出
                                {
                                                USART_ClearFlag(USART1,USART_FLAG_ORE);  //读SR
                                                USART_ReceiveData(USART1); //读DR   
                                }      
}注:数组长度固定位3

发送的中断缓冲区Uart1_Buffer要清零 Uart1_Rx_Num也要归零

在主程序中有啥地方将 Uart1_Rx_Num 和 Uart1_Sta 归零没?
接收缓冲区 Uart1_Buffer 可以不用清零;

学习学习 顶下

学习学习 顶下

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top