查看: 2820|回复: 6

[求助] KL05 串口 急求帮助 !!!

[复制链接]

该用户从未签到

3

主题

14

帖子

0

注册会员

Rank: 2

积分
69
最后登录
2015-9-10
发表于 2015-9-8 12:00:20 | 显示全部楼层 |阅读模式
版主们,遇到一个串口问题  求支持,非常感谢。串口接收,为何连续接收几次字符之后就不再接收? 是UART0_S1的OR、IDLE被置位了吗?如果是需要怎么把OR、IDLE清0 ? 代码如下,

if( 0U != (UART0_S1 & UART0_S1_RDRF_MASK) )
    {
                                        tempbuf = UART0_D;
                                        if(tempbuf=='A')
                                                {
                                                K_TEMP++;
                                                if(K_TEMP>2) K_TEMP=1;
                                                tempbuf=0x00;
                                                }
                                        else
                                                {
                                                tempbuf=0x00;
                                                }
                                        if(K_TEMP==1)
                                                WeiLiang_LED1=1;
                                        else if (K_TEMP==2)
                                                WeiLiang_LED1=0;
while ((UART0_S1_REG(UART0_BASE_PTR) & UART0_S1_RDRF_MASK) &&
(UART0_D_REG(UART0_BASE_PTR)));                                            /* 清接收缓冲区                 */
     }


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

使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    16715
    最后登录
    1970-1-1
    发表于 2015-9-8 13:10:42 | 显示全部楼层
    你单步试下,卡在什么地方?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3

    主题

    14

    帖子

    0

    注册会员

    Rank: 2

    积分
    69
    最后登录
    2015-9-10
     楼主| 发表于 2015-9-8 13:42:14 | 显示全部楼层
    lkl0305 发表于 2015-9-8 13:10
    你单步试下,卡在什么地方?

    你好  我是用J-Flash来烧写的,不知道J-Flash是否可以单步调试?   另外版主 你知道OR和IDLE怎么清0吗?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    124

    主题

    3600

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5781
    最后登录
    1970-1-1
    发表于 2015-9-8 15:15:51 | 显示全部楼层
    Smile乀 发表于 2015-9-8 13:42
    你好  我是用J-Flash来烧写的,不知道J-Flash是否可以单步调试?   另外版主 你知道OR和IDLE怎么清0吗? ...

    你说开始是可以正常接收数据的,但是接收部分数据后,却无法接收后续的数据啊,我觉得是不是有可能是数据传输太快,你的代码处理不过来,建议楼主通过debug的方式,观察一下,在程序无法正常接收数据后,寄存器的值为怎样?而清除OR、IDLE位的方法,都是对其写1,详细细节请参考手册里的描述
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3

    主题

    14

    帖子

    0

    注册会员

    Rank: 2

    积分
    69
    最后登录
    2015-9-10
     楼主| 发表于 2015-9-8 15:40:07 | 显示全部楼层
    FSL_TICS_ZP 发表于 2015-9-8 15:15
    你说开始是可以正常接收数据的,但是接收部分数据后,却无法接收后续的数据啊,我觉得是不是有可能是数据 ...

    嗯,有可能是数据传输太快,我发快了才会出现这个问题,当出现该问题之后,串口不接收,串口的发依然是正常的。  之前是用J-flash直接烧hex文件,我现在用debug看下  具体卡在哪里    对OR写1 这个代码要咋实现呀? 刚接触这个 很多不懂唉
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    124

    主题

    3600

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5781
    最后登录
    1970-1-1
    发表于 2015-9-8 16:41:02 | 显示全部楼层
    Smile乀 发表于 2015-9-8 15:40
    嗯,有可能是数据传输太快,我发快了才会出现这个问题,当出现该问题之后,串口不接收,串口的发依然是正 ...

    2015-09-08_16-40-27.jpg
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3

    主题

    14

    帖子

    0

    注册会员

    Rank: 2

    积分
    69
    最后登录
    2015-9-10
     楼主| 发表于 2015-9-9 11:23:23 | 显示全部楼层

    版主 你好   我大概找到问题出在哪里了   在我接收的过程中 有加了个0.5s的延时 myDelayms(500);  现在把这个去掉就好了,没明白为何这个延时在速度发快的时候  会导致串口不在接收
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-28 16:49 , Processed in 0.097816 second(s), 27 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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