2750|4

19

帖子

4

TA的资源

一粒金砂(中级)

楼主
 

AT91SAM7S256串口丢数据 [复制链接]

AT91SAM7S256串口接收指令发送多帧数据时,最后一帧总是丢两字节数据!

不用串口指令发送却是正常发送,没有丢数据!

同样的指令却是不同的结果!郁闷的不行!

最新回复

看样子楼主很久不曾来过  详情 回复 发表于 2019-3-27 15:09
点赞 关注(1)
 

回复
举报

19

帖子

4

TA的资源

一粒金砂(中级)

沙发
 
void send(unsigned int add_buf,unsigned int count)
{
        //while(!((*AT91C_US1_CSR)&(1<<4)));//ENDTX=1·¢Ëí ENDTX=0μè′y
         *AT91C_US1_TPR=add_buf;
          *AT91C_US1_TCR=count;
        *AT91C_US1_PTCR = AT91C_PDC_TXTEN;
        while(!((*AT91C_US1_CSR)&(1<<4)));//ENDTX=1·¢Ëí ENDTX=0μè′y
}

void send_sz(unsigned char *dat,unsigned char count)
{
        unsigned char i;
        for(i=0;i         {
                Uart1PutChar(dat[i]);
        }
}

//1|ÄüÖ¸áî½aÎö
                   chech_order();
                        if(ORD.gn==1)
                        {
                                        send_qu_liebiao();
                                delay_ms(10);
                        }
                        else if (ORD.gn==2)
                        {
                                send_dat(ORD.qq ,ORD.kk );
                                        delay_ms(10);
                        }
 
 
 

回复

196

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
看看你的时钟源是哪个?准不准
 
 
 

回复

36

帖子

0

TA的资源

一粒金砂(中级)

4
 
看样子楼主很久不曾来过
 
个人签名毛晓婕 13823541468 ATMEL深圳
 
 

回复

19

帖子

4

TA的资源

一粒金砂(中级)

5
 
好久没来!这个问题已经解决了!可以结贴了!!!

问题是犯了常规概念性错误问题!CPU指令执行速度块,而串口是按波特率来传送数据的!主程序已经来回折腾了,串口还没结束数据传输,主程序又去折腾串口发送缓冲区了!巧不巧的就把发送缓冲区重新赋值了!从而导致丢数据!解决的方法是串口发送数据时检查有没有全部发送完,再进行其他操作!这样会有等待,任务不多就凑合用了!
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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