智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 11150|回复: 0
打印 上一主题 下一主题

请教C语言ARM7与51单片机串行通讯编程问题

[复制链接]

3

主题

17

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
291
威望
161
贡献
86
兑换币
88
注册时间
2012-11-5
在线时间
22 小时
跳转到指定楼层
1#
发表于 2015-5-25 14:37:33 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
单片机发送部分:

                        ADV1=123;
                        ADV2=456;
                        ADV3=789;
                        printf("@%05u\n",ADV1);        
                        while(TI0==0);
                        delay(100);        
                        printf("#%05u\n",ADV2);
                        while(TI0==0);
                        delay(100);
                        printf("$%05u\n",ADV3);


ARM接收部分:

if((U1IIR & 0x0F) == 0x04)                // 接收数据可用 RDA
        {
                RxSign=U1RBR;
                if(RxSign=='@')
                {
                        for(i=0; i<13; i++)
                        {
                                RxBuf1[i] = U1RBR;                // "读取FIFO的数据,并清除中断        "
                        }
                }
                else if(RxSign=='#')
                {
                        for(i=0;i<13;i++)
                        {
                                RxBuf2[i] = U1RBR;        
                        }
                }
                else if(RxSign=='$')
                {
                        for(i=0;i<13;i++)
                        {
                                RxBuf3[i] = 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能接收到正确数字?
回复

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-26 04:24 , Processed in 0.036164 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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