帮忙看一下这个自己改编的串口实验 数据收发失败

2019-07-20 23:38发布

int main(void)
{               
        u8  i;
        u16 t;  
        u16 len;       
        u16 times=0;
        u16 Temprature;
        u16 StressX;
        u16 StressY;
        u8 SettingData[6];
         
        //u16 times=0;
        delay_init();                   
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        uart_init(115200);       
        LED_Init();                          
        KEY_Init();         
        while(1)
        {
                if(USART_RX_STA&0x8000)
                {       
                       
                        len=USART_RX_STA&0x3fff;
                        if (len==6)
                        {
                                for(t=0;t<6;t++)
                          {
                                        SettingData[i]=USART_RX_BUF[t];
                                }
                        }
                }
                USART_RX_STA=0;
                if(times%100==0)
                {
                        USART_SendData(USART1,SettingData[0] );
                        USART_SendData(USART1,SettingData[1] );
                        USART_SendData(USART1,SettingData[2] );
                        USART_SendData(USART1,SettingData[3] );
                        USART_SendData(USART1,SettingData[4] );
                        USART_SendData(USART1,SettingData[5] );
                        USART_SendData(USART1,'a' );
                       
                }
                times++;
                if(times%30==0)LED0=!LED0;//Blink LED, check the system is operating or not...
                delay_ms(10);  
        }
}



这是主函数的,目的是想把3个参数的数据按顺序放在setting data中发送出去


void USART1_IRQHandler(void)               
        {
        u8 Res;

        if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
                {
                        Res =USART_ReceiveData(USART1);
               
                        if((USART_RX_STA&0x8000)==0)
                        {
                                if(USART_RX_STA&0x4000)
                                {
                                        if(Res!=0xfe)USART_RX_STA=0;
                                        else USART_RX_STA|=0x8000;       
                                }
                                else
                                {       
                                        if(Res==0xff)USART_RX_STA|=0x4000;
                                        else
                                        {
                                                USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ;
                                                USART_RX_STA++;
                                                if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;          
                                        }                 
                                }
                        }                    
     }
#if SYSTEM_SUPPORT_OS
        OSIntExit();                                                                                           
#endif
}
/*void USART1_IRQHandler(void)                       
        u8 Res;
#if SYSTEM_SUPPORT_OS                
        OSIntEnter();   
#endif
        if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
                {
                Res =USART_ReceiveData(USART1);       
               
                if((USART_RX_STA&0x8000)==0)
                        {
                        if(USART_RX_STA&0x4000)
                                {
                                if(Res!=0x0a)USART_RX_STA=0;
                                else USART_RX_STA|=0x8000;       
                                }
                        else
                                {       
                                if(Res==0x0d)USART_RX_STA|=0x4000;
                                else
                                        {
                                        USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ;
                                        USART_RX_STA++;
                                        if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;
                                        }                 
                                }
                        }                    
     }
这是中断服务函数 是在串口实验4基础上改的 把标志位0x0d 0x0a 改成了0xff  0xfe    然后发送数组01 02 03 04 05 06 ff fe 01 02 03 04 05 06 ff fe  现在是接受不到    请大佬看看那个地方有问题 谢谢啦

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。