奇怪的串口位置问题

2019-10-15 17:29发布

我写了一个关于串口接收上位机数据并加上一些单词在发送回去的函数,有一个疑惑
void USART2_IRQHandler(void)
{
       
        while(1)
        {
                while(USART_GetFlagStatus(USART2,USART_FLAG_RXNE)!=SET);
                *(table2+i)=USART_ReceiveData(USART2);
                i++;
                if(i!=0&&*(table2+i-1)==' ')
                {
                        *(table2+i-1)='';
                        break;
                }
                        USART_ClearITPendingBit(USART2,USART_IT_RXNE);
       
        }
        strcat(table2,"thank");
        while(*table2!='')
        {
                        USART_ClearFlag(USART2,USART_FLAG_TC);
                        USART_SendData(USART2,(uint16_t)*table2);
                        table2++;
                        while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=1);
        }
        i=0;
         table2=table2_my;
}



USART_ClearITPendingBit(USART2,USART_IT_RXNE);这个函数的位置,最开始我是放到中断函数进来第一行(不在while里面),这时候我上位机发送abcd,返回来的数字却是bcd....,然后我把它移动到现在的位置,数据才正常,请问这是为什么啊,请大家指点一下
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。