完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
单片机发送部分:
ADV1=123; ADV2=456; ADV3=789; printf("@%05un",ADV1); while(ti0==0); delay(100); printf("#%05un",ADV2); while(TI0==0); delay(100); printf("$%05un",ADV3); ARM接收部分: if((U1IIR & 0x0F) == 0x04) // 接收数据可用 RDA { RxSign=U1RBR; if(RxSign=='@') { for(i=0; i<13; i++) { RxBuf1 = U1RBR; // "读取FIFO的数据,并清除中断 " } } else if(RxSign=='#') { for(i=0;i<13;i++) { RxBuf2 = U1RBR; } } else if(RxSign=='$') { for(i=0;i<13;i++) { RxBuf3 = U1RBR; } } } else if((U1IIR & 0x0F) == 0x0C) //字符超时CTI 无中断挂起 { while((U1LSR&0x01)==1) //U1RBR包含有效数据 { if(i==0) RxSign=U1RBR; if(RxSign=='@') RxBuf1[i-1] = U1RBR; // 读取FIFO的数据,并清除中断 else if(RxSign=='#') RxBuf2[i-1] = U1RBR; else if(RxSign=='$') RxBuf3[i-1] = U1RBR; i++; } 其中ARM 初始化U1FCR = 0xc1; 触发点位14个字符 为什么RxBuf1接受的是123 RxBuf2和RxBuf3接收到的不是456,789而是56496,7855 刚接触串行通讯 网大神求解 怎么才能使RxBuf2和RxBuf3能接收到正确数字? 先行谢谢各位 |
|
相关推荐
2个回答
|
|
这样看也看不出什么,不过你可以试试把 一组一组单独试试接收的情况在分析,
还有就是你每次接受的数据都是56496,7855? 你这里只用了一个帧头判定,不一定很准确,你可以参考下面的链接看看。 http://blog.csdn.net/gszhy/article/details/8594433 这里面对串口接收部分的处理方式还是很不错的,我之前就用过这种方法成功接收到我要的数据 |
|
|
|
用串口调试分别测试单片机与ARM看问题出在那一个上面。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-20 11:45 , Processed in 0.579583 second(s), Total 65, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号