2115|1

1798

帖子

0

TA的资源

五彩晶圆(初级)

楼主
 

串口收到的帧不对 [复制链接]

刚学430,依靠TI的例程和自己所想,写了以下的程序,
想实现的功能是:通过串口1接收中断,把串口1收到的数据,存入数组里面,然后加上后面几个字符,再从串口0发送出去
调试的时候用的串口助手,发送和接收都没问题,但是接收到的数据和发送的数据不一样,
比如我串口发的是十六进制的12 34 56 78 90五个字节,收到的却是12 90 90 90 90 1a 0d 0a
后来又试了各种数据组合,收到的都是第一个字节再加上4个最后的字节然后还有3字节的尾
自己分析了两天,实在找不出原因所在了,希望高手们指点指点,在此先谢谢了。

代码如下


#pragma vector=UART1RX_VECTOR
__interrupt void UART1_RX_ISR(void)
{
  
for(j=0;j<5;j++)
{
  data[j]=U1RXBUF;
   delay_ms(5);
   //IFG2&=0xef;
}
  data[5]=0x1a;  
  data[6]='\r';
  data[7]='\n';
     
  for(i=0;i<8;i++)
{  
while(!(IFG1&UTXIFG0));
  U0TXBUF=data;
IFG2&=0xef;
}                              
                                       
// Send_Byte0();                    
delay_ms(5);                        
// RS485_CTR0;                        
}
 
点赞 关注

回复
举报

1798

帖子

0

TA的资源

五彩晶圆(初级)

沙发
 

问题得到解决

问题已得到解答,
出错的原因是:不该在中断里执行for循环,每次中断只接受一个字节而已。
改为                  
  data[j]=U1RXBUF;
  j++;
  if(j == 5)
  {
    data[5]=0x1a;  
    data[6]='\r';
    data[7]='\n';
  }  
                           
IFG2&=0XEF;   
这样就好了,然后发送部分放在主函数里面执行。
顺便感慨下:
感觉自己错的都是很基本的低级错误,这也是由于刚学习所导致,以后还得更细心,更认真才行。
不过帖子发了这么久,也有几十个人看过,应该也有人发现我的小错误,为什么就没人愿意指教指教我们这种小菜鸟呢?
也由于没人指错,又重头检查了一次波特率,电平,中断冲突等问题,也算是又学到不少东西,只是耗费的时间有点长。
总的来说,找到错误还是比较高兴的,
在此说这些,是希望以后出现类似问题的看到这个帖子可以少走点弯路。

赞赏

1

查看全部赞赏

 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表