Iar 6.21 используется. При отладке STM32 + freertos иногда внутри функции все значения переменных заведомо неправильные. Оптимизация выключена вся.
Выглядит это так, реальные значения привожу:
В одном из модулей описан глобальный массив track, его location: 0x20004438
Внутри этого модуля описана функция получения указателя на одну из точек трека
Код
TGPSPoint * TASK_GetCurPoint(){
return &(track[0]);
}
В другом модуле вызываем эту функцию:
Код
{
TGPSPoint *curPoint;
curPoint = TASK_GetCurPoint(); //точка остановки 1
следующая строка; // точка остановки 2
...
}
На первой точке видим
curPoint значение 0xE9CDFD07
Что разумно, она может быть любая
На второй точке значение не меняется, хотя я ожидал увидеть там 0x20004438, ну или по крайней мере другое значение.
Внутри этой функции Watch показывает явную чушь по всем переменным, но после выхода результат верный. Вроде как без freertos таких проблем небыло, или я не замечал. В чем тут подвох и как исправить? Очень напрягает невозможность увидеть значение...
Сообщение отредактировал IgorKossak - Mar 1 2012, 14:10
Причина редактирования: [code]