Емельянов Эдуард Владимирович (eddy_em) wrote,
Емельянов Эдуард Владимирович
eddy_em

Category:

Рукожоплю

Чтобы не сильно преобразовывать код при переходе от платформы к платформе, оформил кое-что в виде макросов. И ладно бы с USART, который просто: -DUSARTNUM=1 (или 2) в Makefile. I2C я решил обозвать именем пинов, то бишь -DI2CPINS=B6B7 или -DI2CPINS=A9A10.
Понятно, что B6B7 и A9A10 не определены как макросы, поэтому gcc считает их пустой строкой. Вот и при проверке
#if I2CPINS == A9A10
...
#elif I2CPINS == B6B7
...
#else // undefined
#error "Not implemented"
#endif

вызывается первый случай, что бы мы там не наопределяли! А т.к. I2C инициализируется в main() после USART, то отладочная консоль работать перестает, т.к. USART1 у меня заведен на PA9/PA10 (см. гитхаб, исходники в STM32src/TSYS_controller).
Просто определил числом (т.е. 910 или 67) и все ОК.

Интересно, что при компиляции #pragma message("I2CPINS=" STR(I2CPINS)) писал все правильно. Видимо, недостаточно глубоко я макросы раскрываю в макросе STR()!
Tags: #pragma, c, stm32, рукожопие
Subscribe

  • Дочка сейчас выдала: а зачем вообще людям "домашние" телескопы, если с компьютера можно намного удобней с телескопа данные получать? Да уж, вся в…

  • Рамп шаговика

    Сижу уже второй вечер, обдумываю алгоритм. Сначала хотел было без делений попробовать. Но не получается нормального трапецеидального рампа. В итоге…

  • О, in100грамм повеселел!

    Теперь не нужно, чтобы туда фотографию воткнуть, жамкать F12, переходить в режим "отображение со смартфона" и перезагружать страницу! Они таки…

promo eddy_em september 3, 12:13 8
Buy for 10 tokens
Уже больше полугода занимаюсь разработкой, вот, наконец-то в мастерских взялись за меня и начали выдавать первые детали. Сегодня сделал тестовую сборку (как обычно, местами пришлось "доработать напильником"): Пока прибор без названия (да и как-то не лезет в голову ничего, у меня нет…
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic
  • 3 comments