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