Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Синтаксис при написании макросов в KEIL
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Yaumen
Хочу написать набор макросов, облегчающих работу с пинами LPC на KEIL, типа
#define PIN_STATE(port, bit)

В LPC для получения состояния, скажем 2-го бита порта 1, надо написать (FIO1PIN & (1<<2))

Можно ли написать такой макрос, чтобы в его теле можно было подставлять передаваемые параметры, типа:

#define PIN_STATE(port, bit) (FIO<port>PIN & (1<<bit))

??
MALLOY2
Никак.

Можно так
Код
#define PIN_STATE(port, bit)   (FIO##port & (1<<bit))


а вызывать так:

Код
PIN_STATE(1PIN , 0)


Можно переписать хедер под вид FIOPIN1 тогда можно будет

Ну или если сильно хочется то сделать через инлайновую функцию при константах на входе он ее оптимизирует до вида макроса.

P.S. Я не работаю в KEIL может там и не работает в макросах ##port
Yaumen
Ну, я вроде бы сам разобрался на основании макросов к другим компиляторам. В итоге получилось вот так:

#define PIN_STATE(port, bit) (FIO##port##PIN & (1UL<<bit))

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.