查看: 3698|回复: 8

[MQX] MQX 串口轮询模式 丢数据问题

[复制链接]

该用户从未签到

5

主题

17

帖子

0

注册会员

Rank: 2

积分
79
最后登录
2016-5-9
发表于 2016-4-3 22:29:52 | 显示全部楼层 |阅读模式
MQX 串口任务测试,使用轮询模式(中断模式 获取数据正常),串口任务是不断read 串口数据,却还是丢数据,115200 的波特率,求原因,谢谢



       
        while(1)
        {
                unsigned int ret = 0;
                ret = read(fd_usart0, &uart0_rev->SOF, 1);
                if(ret)
                    printf(“%x”, uart0_rev->SOF);
        }

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

使用道具 举报

该用户从未签到

3

主题

83

帖子

0

中级会员

Rank: 3Rank: 3

积分
257
最后登录
1970-1-1
发表于 2016-4-4 12:57:03 | 显示全部楼层
565543565563555 发表于 2016-4-4 11:03
一直read 怎么会丢呢?

不好意思,百度去吧,这个没法讲下去了。
回复 支持 0 反对 1

使用道具 举报

该用户从未签到

3

主题

83

帖子

0

中级会员

Rank: 3Rank: 3

积分
257
最后登录
1970-1-1
发表于 2016-4-4 03:42:07 | 显示全部楼层
来不及处理数据,必定丢
回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

17

帖子

0

注册会员

Rank: 2

积分
79
最后登录
2016-5-9
 楼主| 发表于 2016-4-4 11:03:13 | 显示全部楼层
ri1982 发表于 2016-4-4 03:42
来不及处理数据,必定丢

一直read 怎么会丢呢?
回复 支持 反对

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24903
最后登录
2025-7-22
发表于 2016-4-5 12:25:32 | 显示全部楼层
565543565563555 发表于 2016-4-4 11:03
一直read 怎么会丢呢?

MQX     默认的调度策略是根据优先级来调度的。 建议楼主提高该任务的优先级再试试看
回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

17

帖子

0

注册会员

Rank: 2

积分
79
最后登录
2016-5-9
 楼主| 发表于 2016-4-5 12:42:46 | 显示全部楼层
小恩GG 发表于 2016-4-5 12:25
MQX     默认的调度策略是根据优先级来调度的。 建议楼主提高该任务的优先级再试试看  ...

试过,任务优先级已经最高了,调试发现,中断模式可以正常接收。轮询模式下以阻塞模式打开接收也正常,就是非阻塞模式不正常。
回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

17

帖子

0

注册会员

Rank: 2

积分
79
最后登录
2016-5-9
 楼主| 发表于 2016-4-7 17:00:39 | 显示全部楼层
问题发现了,共大家参考:_io_serial_polled_read()          问题在这个函数里,非阻塞模式时,如果数据能连续读取可能不会丢失,如果被打断就会直接出来,部分数据就丢失了,建议用阻塞或者 中断模式回去数据。
while ((! _CHARQ_FULL(polled_dev_ptr->CHARQ)) &&
                (*polled_dev_ptr->DEV_STATUS)(info_ptr))//ZZ 获取 接收状态寄存器
         {
            character = (uchar)(*polled_dev_ptr->DEV_GETC)(info_ptr);
            _CHARQ_ENQUEUE(polled_dev_ptr->CHARQ, character);
         } /* Endwhile */
回复 支持 反对

使用道具 举报

  • TA的每日心情
    无聊
    2018-9-20 10:55
  • 签到天数: 13 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    24

    主题

    1189

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1642
    最后登录
    2022-3-21
    发表于 2016-4-14 13:37:22 | 显示全部楼层
    丢数据和以上的函数没关系,应该是打断read后数据超过FIFO了吧
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2018-11-15 16:18
  • 签到天数: 39 天

    连续签到: 1 天

    [LV.5]常住居民I

    16

    主题

    259

    帖子

    3

    高级会员

    Rank: 4

    积分
    993
    最后登录
    2023-1-6
    发表于 2016-4-14 14:19:09 | 显示全部楼层
    要想实时性高,还得用中断,而且中断程序要精简
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-22 19:51 , Processed in 0.101438 second(s), 30 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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