Перейти к содержанию
    

DmitryTDF

Новичок
  • Постов

    4
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный
  1. IAR 7.5 STM32

    Комментарий отделен от определения табуляциями, в первом посте табуляции не скопировались, дело точно не в этом. Пока промежуточным решением использую короткие имена констант, но это, безусловно, не лучший вариант. Господа АНТОХА и Эдди, большое спасибо вам за наводки. Все заработало, причина была действительно в комментариях, расположенных в одной строке с именами и значениями констант. Препроцессор немного глючный, писать строки с комментариями нужно всегда перед строкой с константой, но в любом случае, не на одной строке, даже после точки с запятой. UPD: Проверил: также объявления корректно работают с комментариями, оформленными в C-style. Будьте внимательны: #define constX Y<Y..> //Комментарий - будет работать корректно, #define constX Y<Y..>;Комментарий - не будет работать корректно.
  2. IAR 7.5 STM32

    Спасибо вам, сейчас попробую и напишу результат! UPD: Поместил значения в скобки: ... #define OBJECT_CLASS_PIPE (1 << 16) ;Класс объекта - канал сообщений ... Результат не изменился. Подозреваю, что все же что-то с ограничениями, накладываемыми на имена констант (подчеркивания, "длинные" имена и пр.)
  3. IAR 7.5 STM32

    Прошу прощения, получилось так, что убрал табуляции, расположенные перед точкой с запятой. На самом деле там есть отступ (в виде табуляций) ... #define OBJECT_CLASS_PIPE 1 << 16 ;Класс объекта - канал сообщений ...
  4. IAR 7.5 STM32

    Здравствуйте! Пишу для STM32F4xx некоторые фрагменты кода на ассемблере. При объявлении в подключаемом файле констант, заметил, что маски по ИЛИ не всегда работают. Например: ... #define OBJECT_CLASS_PIPE 1 << 16;Класс объекта - канал сообщений ... #define OBJECT_SUBCLASS_PIPE_BYTE 1 << 24;Субкласс объекта - канал, работающий с байтами ... #define RE 1;Флаг, символизирующий о том, что буфер пуст ... Использую в коде: ... LDR R0,=OBJECT_CLASS_PIPE|OBJECT_SUBCLASS_PIPE_BYTE|RE ... В отладчике, в результате выполнения инструкции, в R0 оказывается 0x00010000, а должно быть 0x01010001 При перестановке некоторых масок местами: ... LDR R0,=RE|OBJECT_CLASS_PIPE|OBJECT_SUBCLASS_PIPE_BYTE ... R0 становится равным 0x00010001, что уже немного лучше, нежели первый результат. Также заметил, что в случае присвоения этим же константам имен "const1", "const2", "const3" - в регистре R0 оказывается значение 0x01010001, то есть, правильное. Если кто-то сталкивался с подобным - как боролись?
×
×
  • Создать...