Arduino 串口打印问题求解

我的程序中串口打印调用过多会导致开发板程序卡死,卡在初始化,所有的程序单个调用正常运行,但综合之后,就串口打印部分出现严重问题,将我的一个串口调用函数屏蔽后,其他程序正常运行,但重新调用后程序卡死,这个串口打印子函数单独调用正常运行,有哪位好友能帮我解决一下吗,我翻遍资料,查过网站,都没找到相关解决办法。

//设计组程序
void function_group()
{
  KEY_check();    //按键检测
  switch (MODE)
  {
    case 1:PM_WARN_SET_SHOW();display.clearDisplay();break; //oled显示PM2.5预定值数据
    case 2:CO_WARN_SET_SHOW();display.clearDisplay();break; //oled显示CO预定值数据
    case 3:CH4_WARN_SET_SHOW();display.clearDisplay();break; //oled显示CH4预定值数据
    case 4:H2_WARN_SET_SHOW();display.clearDisplay();break; //oled显示H2预定值数据
    case 5:ALKY_WARN_SET_SHOW();display.clearDisplay();break; //oled显示ALKY预定值数据
//    case 6:PM_CO_CH4_TENSE_CHECK_SHOW();display.clearDisplay();break;//oled显示PM2.5检测的实际数据
  }
  if(MODE==6)
  {
    PM_check();      //PM2.5检测
    CO_check();      //CO检测
    CH4_check();     //CH4检测
    ALKY_check();     //酒精检测
    H2_check();        //H2检测
    ds18b20();         //温度检测
    BLUTOOTH_FLAG++;   //检测次数
    OLED_TIMES++;      //检测次数
    switch(BLUTOOTH_FLAG)
    {
      
      case 100:BLUTOOTH_FLAG=0;                            //1s左右刷新一次
             Serial.print("  CO浓度:");Serial.print(CO_PPM);   
             Serial.print("  CH4浓度:");Serial.print(CH4_PPM);
             Serial.print("  P.M2.5浓度:");Serial.print(PM_PPM);
             Serial.print("  ALKY浓度:");Serial.print(ALKY_PPM);
             Serial.print("  H2浓度:");Serial.println(H2_PPM);
             if((tem>0)&&(tem<100)){Serial.print("  温度为:");Serial.println(tem);}
             else{Serial.println("  温度检测异常:");}
             break;
    }
    switch(OLED_TIMES)                                      //OLED两个页面显示数据1S左右刷新
    {
      case 99: 
               display.clearDisplay();PM_CO_CH4_TENSE_CHECK_SHOW();
               break;
      case 199:OLED_TIMES=0;
               display.clearDisplay();ALKY_H2_TENSE_CHECK_SHOW();
               break;
     }
    //*************************************************************//
   if((PM_PPM>=PM_WARN_SET)||(CO_PPM>=CO_WARN_SET)||(CH4_PPM>=CH4_WARN_SET))//PM2.5/CO/CH4浓度达到预定值时进行短信报警和启动风扇排风系统
   {
     MESSAGE_TIMES++;
     if(MESSAGE_TIMES==1)
     {
        //SEND_MESSAGE_ENGLISH();//发送短信报警(这个函数调用前后有问题)
        MESSAGE_TIMES++;
     }
//     digitalWrite(WARN,0);              //开启蜂鸣器,蓝灯灭,红灯亮,继电器连接(风扇转动)//启动风扇排风
   }
   if((PM_PPM<PM_WARN_SET)&(CO_PPM<CO_WARN_SET)&(CH4_PPM<CH4_WARN_SET))//判断PM2.5浓度是否小于预定值
   {
     MESSAGE_TIMES=0;
     digitalWrite(WARN,1);              //关闭蜂鸣器,蓝灯亮,红灯灭,继电器断开(风扇停转)
   }
 //*****************************************************//
 }
}

//SIM800a发送英文短消息函数
void SEND_MESSAGE_ENGLISH(void)
{
  Serial.println("AT+CMGF=1");
  SIM800C.println("AT+CMGF=1");
  DELAY(1000);//延时
  Serial.println("AT+CSCS=\"GSM\"");
  SIM800C.println("AT+CSCS=\"GSM\"");
  DELAY(1000);//延时
  Serial.println("AT+CSCA?");
  SIM800C.println("AT+CSCA?");
  DELAY(1000);//延时
  Serial.println("AT+CSMP=17,167,0,241");
  SIM800C.println("AT+CSMP=17,167,0,241");
  DELAY(1000);//延时
  Serial.println("AT+CMGS=\"19396354219\"");//电话号码
  SIM800C.println("AT+CMGS=\"19396354219\"");//电话号码
  DELAY(1000);//延时
  Serial.println("PM2.5:");//发送的内容(英文类型)
  SIM800C.println("PM2.5:");//发送的内容(英文类型)
  DELAY(1000);//延时
  Serial.println(PM_PPM);//发送的内容(英文类型)
  SIM800C.println(PM_PPM);//发送的内容(英文类型)
  DELAY(1000);//延时
  Serial.println("CO:");//发送的内容(英文类型)
  SIM800C.println("CO:");//发送的内容(英文类型)
  DELAY(1000);//延时
  Serial.println(CO_PPM);//发送的内容(英文类型)
  SIM800C.println(CO_PPM);//发送的内容(英文类型)
  DELAY(1000);//延时
  Serial.println("CH4:");//发送的内容(英文类型)
  SIM800C.println("CH4:");//发送的内容(英文类型)
  DELAY(1000);//延时
  Serial.println(CH4_PPM);//发送的内容(英文类型)
  SIM800C.println(CH4_PPM);//发送的内容(英文类型)
  DELAY(1000);//延时
  Serial.println("warning!\r\n");//发送的内容(英文类型)
  SIM800C.println("warning!\r\n");//发送的内容(英文类型)
  DELAY(1000);//延时
  SIM800C.write(0x1A);//发送的时contrl+z的十六进制
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值