查看: 2780|回复: 8

[求助] 请问KL25的CSIO的读写数据缓冲区的数据怎么读出来?

[复制链接]

该用户从未签到

32

主题

138

帖子

0

中级会员

Rank: 3Rank: 3

积分
390
最后登录
2017-12-29
发表于 2017-5-11 16:29:26 | 显示全部楼层 |阅读模式
搜狗截图20170511161125.png
任务要求:
PC通过串口猎人发送一个数据包(帧头+数据+校验+帧尾),单片机端要对接收到的数据进行解包讲数据中的不同控制指令解析出来。

我现在遇到的问题:
下面这段是我找到的一段程序,但是我现在使用的是KL25的PE生成CsIO进行数据输出和接收的。如果要用下面这段函数,就需要找到KL25的数据收发buffer。重点:我找不到这个buffer,芯片手册如上图所示,说的也是没有重点。
其次还有个问题是PC端串口猎人如果发送了数据,而单片机程序中没有写接收的语句,那么发出的数据是否存在于单片机UART的Buffer中?如果不存在,那么问题又来了,我该怎么写数据接收的程序?用scanf语句吗?
希望各位大神赐教,现在我脑子里一团浆糊,数据到底是怎么传输,完全乱了思绪。。。急求解答。。万分感谢


unsigned char recstatu;//表示是否处于一个正在接收数据包的状态
unsigned char ccnt;      //计数
unsigned char packerflag;//是否接收到一个完整的数据包标志
unsigned char rxbuf[100];//接收数据的缓冲区

void UartHandler()
{
       unsigned char tmpch;
       tmpch = *buffer;
       if(tmpch == 'M')                          //检测是否是包头
       {  
            recstatu = 1;
            ccnt   = 0 ;
            packerflag = 0;
            return ;
       }
       if(tmpch == 'C')                          //检测是否是包尾
       {
            recstatu = 0;
            packerflag = 1;                      //用于告知系统已经接收到一个完整的数据包
            return ;
       }
      if(recstatu ==1)                           //是否处于接收数据包状态
      {
            rxbuf[ccnt++] = tmpch;
      }
}

我知道答案 目前已有8人回答
回复

使用道具 举报

  • TA的每日心情

    2017-1-4 08:05
  • 签到天数: 11 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    85

    主题

    1629

    帖子

    1

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    2569

    优秀版主

    最后登录
    2019-3-28
    发表于 2017-5-12 07:54:07 | 显示全部楼层
    KL25/26的串口都用过一i点问题没有。如果单个字符接手没问题那串口就是木有问题的,至于怎么解析是你的程序问题,另外建议不要在中断函数中处理这些东西
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    32

    主题

    138

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    390
    最后登录
    2017-12-29
     楼主| 发表于 2017-5-12 08:51:39 | 显示全部楼层
    技术范儿 发表于 2017-5-12 07:54
    KL25/26的串口都用过一i点问题没有。如果单个字符接手没问题那串口就是木有问题的,至于怎么解析是你的程序 ...

    您好,我想问的不是串口有没有问题。而是如何把串口中的数据拿出来处理?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    32

    主题

    138

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    390
    最后登录
    2017-12-29
     楼主| 发表于 2017-5-12 09:47:33 | 显示全部楼层
    自己顶起来
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2017-1-4 08:05
  • 签到天数: 11 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    85

    主题

    1629

    帖子

    1

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    2569

    优秀版主

    最后登录
    2019-3-28
    发表于 2017-5-12 09:50:19 | 显示全部楼层

    中断函数里面读不出来么?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    32

    主题

    138

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    390
    最后登录
    2017-12-29
     楼主| 发表于 2017-5-12 09:51:43 | 显示全部楼层
    技术范儿 发表于 2017-5-12 09:50
    中断函数里面读不出来么?

    我没有用中断,直接用PE生成的CsIO
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2017-1-4 08:05
  • 签到天数: 11 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    85

    主题

    1629

    帖子

    1

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    2569

    优秀版主

    最后登录
    2019-3-28
    发表于 2017-5-12 09:53:29 | 显示全部楼层

    你就告诉我你中断能收到数据么?还有对于你来说还是直接用SDK比较靠谱,不要用PE,用PE生成的东西 你看不懂
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    32

    主题

    138

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    390
    最后登录
    2017-12-29
     楼主| 发表于 2017-5-12 10:02:02 | 显示全部楼层
    技术范儿 发表于 2017-5-12 09:53
    你就告诉我你中断能收到数据么?还有对于你来说还是直接用SDK比较靠谱,不要用PE,用PE生成的东西 你看不 ...

    能收到数据,但是并没用用到中断。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2017-1-4 08:05
  • 签到天数: 11 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    85

    主题

    1629

    帖子

    1

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    2569

    优秀版主

    最后登录
    2019-3-28
    发表于 2017-5-12 14:07:31 | 显示全部楼层
    胡孟龙 发表于 2017-5-12 10:02
    能收到数据,但是并没用用到中断。。

    串口没用中断那种方式肯定是轮询喽,轮询收不到数据正常,你要先弄明白你要干啥
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-19 15:47 , Processed in 0.162566 second(s), 30 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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