这是stm32单片机串口通信中的问题,请会的教教我,谢谢!!

2019-07-15 09:57发布

以下是串口通信主函数中接收数据的一段代码,  len  这个变量是定义为U16类型。我的疑问是:(len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度)这句话中所谓数据长度是什么意思?是指二进制数据的长度吗?其长度又是怎么算出来的呢?视频讲解好像是说长度为2的13次方减1,对吗?可这是为什么呢?

while(1)
        {
                if(USART_RX_STA&0x8000)
                {                                          
                        len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
                        printf(" 您发送的消息为: ");
                        for(t=0;t<len;t++)
                        {
                                USART_SendData(USART1, USART_RX_BUF[t]);//向串口1发送数据
                                while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
                        }
                        printf(" ");//插入换行
                        USART_RX_STA=0;
                }else
                {
                        times++;
                        if(times%5000==0)
                        {
                                printf(" 战舰STM32开发板 串口实验 ");
                                printf("正点原子@ALIENTEK ");
                        }
                        if(times%200==0)printf("请输入数据,以回车键结束 ");  
                        if(times%30==0)LED0=!LED0;//闪烁LED,提示系统正在运行.
                        delay_ms(10);   
                }
        }         

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