Собственно сама функция выглядит так:
Код
uint8_t modemresponse(char * data, uint16_t leng)
{
if(iblanks(Uart3RXBuf, leng))
{
return 0;
}
else if(memchr(data, '+', leng) && memchr(data, ':', leng))
{
return 1;
}
else if(strstr(data,"ERROR") != NULL)
{
return 2;
}
else
{
return 3;
}
}
{
if(iblanks(Uart3RXBuf, leng))
{
return 0;
}
else if(memchr(data, '+', leng) && memchr(data, ':', leng))
{
return 1;
}
else if(strstr(data,"ERROR") != NULL)
{
return 2;
}
else
{
return 3;
}
}
Если сделать как ниже, то все работает. Тоесть достаточно закоментировать любой из else if или даже else. Если закоментировать один вариант выбора и вместо него в конец функции подставить хотя бы
Код
HAL_UART_Transmit(&huart6,(uint8_t *)"Zavislo\r",8,100);
или все что угодно - опять висяк.Код
uint8_t modemresponse(char * data, uint16_t leng)
{
if(iblanks(Uart3RXBuf, leng))
{
return 0;
}
else if(memchr(data, '+', leng) && memchr(data, ':', leng))
{
return 1;
}
//else if(strstr(data,"ERROR") != NULL)
//{
// return 2;
//}
else
{
return 3;
}
}
{
if(iblanks(Uart3RXBuf, leng))
{
return 0;
}
else if(memchr(data, '+', leng) && memchr(data, ':', leng))
{
return 1;
}
//else if(strstr(data,"ERROR") != NULL)
//{
// return 2;
//}
else
{
return 3;
}
}
Когда то с таким сталкивался и проблема была в размере СТОК\ХЕАП. В данном случае пробовал менять их размер и в FreeRTOS и в Стартап файле, но как узнать какой размер куда прописывать?
Похоже разобрался. Поставил во FreeRTOS вместо heap4 тип heap1.