Немного добавлю по отладке. Есть задача, которая в цикле запускает вышеуказанную функцию. Собственно вот:
Код
void vTemp(void const * argument)
{
for(;;)
{
uint16_t leng; //Длина строки до знака \n
uint8_t resp; //Собственно сам ответ 0,1,2,3.....
if(uart3_not_empty) //Обработчик прерывания устанавливает флаг 1\0
{
leng = uart3_readline(); //вычисляем длину строки вместе с \r\n
sprintf(debug_buff, "leng: %d, line: %s", len, Uart3RXBuf); //формировка данных в соседний порт для отладки(длина строки и сама строка)
USART_STR(USART6, debug_buff); //просто отправка данных в соседний порт для отладки
resp = process_response(uart3_fifo_line,len); // тут вызов глючной функции
sprintf(debug_buff, "resp: %d \r\n", resp); //формовка
TM_USART_Puts(USART6, debug_buff); //отправка для отладки
}
}
}
Как видно в начале происходит проверка на новые данные
if(uart3_not_empty), и даже если условие if не выполнено, все равно все висло.
uart3_not_empty инициализируется 0-лем, в прерывании флаг ставится в 1. Зависон просходил даже при условии отсутствия данных на ком порте, но только при условии, что в функции process_response вариантов if(if else) более трех.
Цитата(gazpar @ Feb 18 2016, 12:56)

В этой РТОС есть специальные службы для определения, что где ломается
О, теперь понятно!!! Спасибо!
Еще добавлю, на сайте РТОС есть такое:
Known Issues with the Current Version
Heap_4.c cannot be used on 8-bit devices (FreeRTOS V8.2.1)
A typo in the calculation of xHeapStructSize means heap_4.c cannot be used to provide the heap when FreeRTOS is being built for an 8-bit microcontroller.
Software timers and FreeRTOS-MPU
The software timer API is not yet included in the official distribution of FreeRTOS/source/include/mpu_wrappers.h.
Может как то связано.....