Программа должна работать в двух режимах: Режим1 или Режим2. Режим задаётся с ПК по USB. При этом для меня встала новая, мной не освоенная задача, связанная с памятью. Дело в том, что для каждого режима используется свой набор массивов в том числе и двумерных, размер которых желательно иметь максимальным по отношению к оставшейся от собственно программы памяти. (В дебри определения размера оставшейся памяти лезть не надо, это должно решаться на этапе проектирования). Для первого режима значения массивов могут меняться по ходу дела с ПК по USB, во втором - массивы статические, задаются один раз при переходе в этот режим и не меняются до его конца. По сегодняшнему состоянию моего понимания вопроса вижу такой вариант: Сразу определять массивы и первого и второго вариантов. Но в зависимости от варианта одни массивы делать с нулевым размером, а другие с требуемым. Вот как это делать я не представляю и, ели это возможно, то подскажите, пожалуйста, как. Ещё такой вариан крутится в голове: иметь вообще две программы и загружать их из с ПК по необходтимости. Что скажете? Но для этого надо как-то USB порт переопределять для использования его в качестве загрузчика. Этот вопрос надо ещё изучать, но есть надежда, что для моего МК (STM32h723) это возможно.
Добавлю пару вариантов навскидку:
- объявить один (или сколько требуется) массивов и переиспользовать их в разных режимах, то есть объявить массив(ы) максимально возможного/требуемого размера и одни и те же массивы использовать в разных режимах
- значения, которые не меняются во время работы разместить во flash-памяти
Добавлю пару вариантов навскидку:
- объявить один (или сколько требуется) массивов и переиспользовать их в разных режимах, то есть объявить массив(ы) максимально возможного/требуемого размера и одни и те же массивы использовать в разных режимах
Изначально так и думалось. Но массивы в одном случае двумерные, а в другом одномерные. Кроме того тип данных у них разный - вещественный и целый.