реклама на сайте
подробности

 
 
> IAR C/ASM Preproc, Переменная-макрос (авто)инкримент значения
k155la3
сообщение Oct 29 2015, 15:06
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



IAR C++ MSP430
IAR ASM MSP430

Есть необходимость средствами компилятора или препроцессора (C/ASM)
выполнить "автонумерацию" (инкримент) значения поля структуры в массиве структур, определенных как const в памяти флеш.
Причем в одном и томже поле структуры должно быть обеспечено несколько "счетчиков" (в разных строках массива)


M_VAR_TY_1() - предполагаемый автонумератор.

Код
// ======== массив во флеш-памяти =============
// определен на этапе компиляции
const TyRefRec RefTbl[] =
{     
//      Код          тип    адрес в массиве, соотв-ем eTy_x
    { eID_Test,     eTy_1, M_VAR_TY_1() },
    { eID_Go5,     eTy_1, M_VAR_TY_1() },
    { eID_Go2,     eTy_1, M_VAR_TY_1() },
    { eID_Zond1,     eTy_2, M_VAR_TY_2() },
    { eID_Go4,     eTy_1, M_VAR_TY_1() },
    { eID_Go0,     eTy_2, M_VAR_TY_2() },

};

main()
{
    // массивы данных, на которые ссылается RefTbl[]
    int Arr_type_1[100]; // соотв-ет коду eTy_1
    int Arr_type_2[100]; // eTy_2
    int Arr_type_3[100]; // eTy_3
        . . . . . .

}


Мои исследования по C показали, что это сделать можно, но через жуткий и громоздкий изворот.
Поэтому эту тему с С++ я закрыл.

---------------- ???? ------------------------
А вот с ASM это должно бы решаться без проблем. Только начал курить это направление,
может кто решал такую задачу на IAR Asm ?
--------------- /???? ------------------------

Сразу отвечу на вопрос, зачем, собственно.
1. таблица может содержать под сотню строк.
2. таблица может изменяться (строки добавляются-удаляются)
3. лень вручную номеровать-переномеровать строки, темболее, что они могут быть "вперемешку".

Есть конечно, легкий и простой путь решения - "влоб" написать утилиту pre-pre-processor sm.gif
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 08:04
Рейтинг@Mail.ru


Страница сгенерированна за 0.0138 секунд с 7
ELECTRONIX ©2004-2016