OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3743|回复: 4

关于串口的数据问题

[复制链接]

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
发表于 2016-5-28 12:26:31 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 zhoujianwen 于 2016-5-28 12:29 编辑

if(data&0x8000)
                {
                          for(i=0;i<=USART2_RX_STA;i++)
                        {
                         //USART_SendData(USART2,framedata);
                                        printf("%c",framedata);
                        }
                        USART2_RX_STA=0;
                                data=0;
        }
为什么USART_SendData(USART2,framedata);      和     printf("%c",framedata);  输出的数据量不同。


比如我数组里面有42个数据,为什么    USART_SendData(USART2,framedata);            输出在串口调试助手上的才两三个数据。


但是 printf("%c",framedata);  能把42个数据全部输出在串口调试助手上???
1.png                   
这个是USART_SendData                 2.png     这个是 printf
                                                  




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
 楼主| 发表于 2016-5-28 12:27:58 | 显示全部楼层
当然  程序是对的,我把数组标号漏了。
回复

使用道具 举报

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
 楼主| 发表于 2016-5-28 12:31:11 | 显示全部楼层
数组标号我重新编辑了,但是保存了又没了。总之程序是对的,就是不知道为什么串口函数发出来的数据怎么是那样
回复

使用道具 举报

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
 楼主| 发表于 2016-5-28 12:32:26 | 显示全部楼层
        if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)  //&#189;&#248;è&#235;&#189;óê&#213;&#214;D&#182;&#207;
        {
                Res =USART_ReceiveData(USART2); //&#182;áè&#161;&#189;óê&#213;μ&#189;μ&#196;êy&#190;Y               
//         //        printf("%c",Res);
//                 USART_SendData(USART2,Res);
               
                if((data&0x8000)==0)    //==0£&#172;&#189;óê&#213;&#195;&#187;íê3é£o&#206;&#187;15′ú±í&#214;&#195;&#206;&#187;ó&#235;·&#241;£&#172;′ú±í&#189;óê&#213;ê&#199;·&#241;íê3é
                {                       
                        if(data&0x4000)     //&#206;&#187;14&#214;&#195;&#206;&#187;′ú±í£&#172;&#189;óê&#213;μ&#189;á&#203;μú41&#184;&#246;êy&#190;Y£&#172;×ü1242&#184;&#246;
                        {
                                if(Res==0x03)           //è&#231;1&#251;μú42&#184;&#246;êy&#190;Yê&#199;0x03£&#172;&#212;ò±£á&#244;
                                {                               
                                        framedata[USART2_RX_STA]=Res; //&#188;&#199;&#194;&#188;&#207;&#194;&#214;&#161;&#206;2êy&#190;Y
                                        //USART2_RX_STA++;                             //&#189;&#199;±ê+1
                                        data=(1<<15);                         //&#206;&#187;15&#214;&#195;&#206;&#187;£&#172;&#189;óê&#213;íê3éá&#203;
                                }
                                else
                                {
                                                USART_SendData(USART2,Res);
                                }
                        }
               
                                else         //è&#231;1&#251;ê&#199;μú41&#206;&#187;êy&#190;Y&#214;&#174;&#199;°μ&#196;êy&#190;Y
                                {
                                        if((USART2_RX_STA==0)&(Res==0x02))//&#197;D&#182;&#207;ê&#199;2&#187;ê&#199;μúò&#187;&#184;&#246;êy&#190;Y&#199;òê&#199;2&#187;ê&#199;μèóú&#214;&#161;í·
                                        {
                                        framedata[USART2_RX_STA]=Res; //è&#231;1&#251;ê&#199;&#190;í±£′&#230;&#214;&#161;í·
                                        USART2_RX_STA++;                             //êy×é&#189;&#199;±ê+1
                                        }
                                       
                                       
                                        else
                                        {
                                                if((USART2_RX_STA==0)&(Res!=0x02))//è&#231;1&#251;ê&#199;μúò&#187;&#184;&#246;êy&#190;Y&#199;ò&#214;&#161;í·2&#187;μèóú0x02&#212;ò·μ&#187;&#216;′í&#206;ó
                                                {       
                                                                                                                USART_SendData(USART2,Res)                        ;
                                                }
                                       
                                                                        else
                                                                        {
                                                                                if(USART2_RX_STA==40) //è&#231;1&#251;μ&#189;á&#203;μú41&#184;&#246;êy&#190;Y
                                                                                        {
                                                                                        data=(1<<14);                  //&#206;&#187;14&#214;&#195;&#206;&#187;′ú±í£&#172;μú41ò&#187;&#184;&#246;êy&#190;Yò&#209;&#190;-&#189;óê&#213;μ&#189;
                                                                                        framedata[USART2_RX_STA]=Res; //±£′&#230;êy&#190;Y
                                                                                        USART2_RX_STA++;                             //êy×é&#189;&#199;±ê+1
                                                                                }
                                                                                        else
                                                                                        {
                                                                                                        framedata[USART2_RX_STA]=Res; //&#188;&#199;&#194;&#188;&#207;&#194;êy&#190;Y
                                                                                                USART2_RX_STA++;                             //êy×é&#189;&#199;±ê+1
                                                                                        }
                                                                                }
                                               
                                        }
                                        }
                }  
        }
回复

使用道具 举报

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
 楼主| 发表于 2016-5-28 12:34:29 | 显示全部楼层
四楼是我对接收的数据进行处理保存在42个元素的数组中
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 09:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表