找回密码
 立即注册
查看: 33|回复: 4

AI8G单片机串口一直在接收数据时,出现接收不到数据现象

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-05-09 13:43:26
已绑定手机

1

主题

2

回帖

11

积分

新手上路

积分
11
发表于 7 小时前 | 显示全部楼层 |阅读模式
MCU端串口一直接收数据,上一次接收的数据还没接收完,就又收到新的数据,然后单片机端一直不执行反馈信息给串口助手端,这个问题是啥情况呀?正常代码是mcu端每接收完一次数据先返回一个数给PC串口助手端,现在就mcu还没返回信息给串口助手端,MCU就又接到新的数据。导致后面都不在返回数据了,而且也MCU也收不到数据了。代码串口是中断方式。下面是串口的中断函数和main函数部分代码
main()
{
.........
....

   while(1) {
                unsigned char *p = ReadUart();        //½ÓÊÕ»º³åÇøµÄÊý¾Ý
                #if 1
               
                lock_buf[0] = p[0];                //Ö¡Í·
                lock_buf[1] = p[1];                //½âÎö»º³åÇøÊý¾Ý,µÚ¼¸¸ö°å¿¨
                lock_buf[2] = p[2];                //½âÎö»º³åÇøÊý¾Ý£¬µÚ¼¸¸öËø
                delay_ms(50);

                if(lock_buf[0] == 0xAA){
                        if(lock_buf[1] == 1)                //
                        {
                                lock_buf_test[0] = 0xbb;                //Ö¡Í·
                                lock_buf_test[1] = lock_buf[1];                //½âÎö»º³åÇøÊý¾Ý,µÚ¼¸¸ö°å¿¨
                                lock_buf_test[2] = lock_buf[2];                //½âÎö»º³åÇøÊý¾Ý£¬µÚ¼¸¸öËø
                                WriteUart(lock_buf_test,3);
                                Lock_open_conctrl(lock_buf[2],1);
                                delay_ms(50);
                                Lock_open_conctrl(lock_buf[2],0);                                                        
                        }else{
                                                COMD485[0]=0xee;
                                                WriteUart(COMD485,3);
                        }
                        memset(lock_buf,0,3);
                        memset(p,0,3);
                        delay_ms(50);
                }
                #endif
    }

.....
.....
}



//========================================================================
// 函数: void UART1_int (void) interrupt UART1_VECTOR
// 描述: UART1中断函数
// 参数: none
// 返回: none
// 备注:
//========================================================================
void UART1_int (void) interrupt 4
{
        /*
        在模式0,当串口接收数据第8位结束时,由硬件自动将RI置1,并向主机请求中断,响应中断后,需要主动将RI清零
        在其他模式,串行接收到停止为的中间时刻由硬件自动将RI置1,向CPU发中断申请,响应中断后RI必须由软件清零。
        */
        //if(RI)
        if((SCON & 1) != 0)
    {
        SCON &= ~1;    //Clear Rx flag
                          //RI = 0;//Clear Rx flag
        RX1_Buffer[RX1_Cnt] = SBUF;
        if(++RX1_Cnt >= 3)  {
                                        RX1_Cnt = 0;
                                        //RI = 0;//Clear Rx flag
                                        RS485_TX();
                                }
    }
                /*
                在模式0,当串口发送数据第8位结束时,由硬件自动将TI置1,并向主机请求中断,响应中断后,需要主动将TI清零
                在其他模式,则在停止位开始发送时由硬件自动将TI置1,向CPU发中断申请,响应中断后TI必须由软件清零。
                */
    //if(TI)
                if((SCON & 2) != 0)        
    {
                         SCON &= ~2;    //Clear Tx flag
                         //TI = 0;//Clear Rx flag
                         if(++TX1_Cnt >= SendLength)  {
                                        B_TX1_Busy = 0;
                                 RS485_RX();
                                  return;
                         }else{
                                        SBUF = *(pSendData + TX1_Cnt);
                                }
    }
}


回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:170
  • 最近打卡:2025-05-09 07:56:57
已绑定手机

58

主题

1369

回帖

3056

积分

荣誉版主

无情的代码机器

积分
3056
发表于 7 小时前 | 显示全部楼层
建议打包上传工程,缺失关键代码
ReadUart
RS485_TX
RS485_RX
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:431
  • 最近打卡:2025-05-09 09:00:33
已绑定手机

77

主题

4879

回帖

8510

积分

超级版主

DebugLab

积分
8510
发表于 6 小时前 | 显示全部楼层
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-05-09 13:43:26
已绑定手机

1

主题

2

回帖

11

积分

新手上路

积分
11
发表于 4 小时前 | 显示全部楼层
你好,工程上傳了,在附件,請下載分析,謝謝

ygf_lock.zip

153.42 KB, 下载次数: 0

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-05-09 13:43:26
已绑定手机

1

主题

2

回帖

11

积分

新手上路

积分
11
发表于 4 小时前 | 显示全部楼层
你好,已经上传工程文件,请下载分析,谢谢

ygf_lock.zip

153.42 KB, 下载次数: 0

工程文件

回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-9 21:39 , Processed in 0.112020 second(s), 78 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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