Хочу написать набор макросов, облегчающих работу с пинами LPC на KEIL, типа
#define PIN_STATE(port, bit)
В LPC для получения состояния, скажем 2-го бита порта 1, надо написать (FIO1PIN & (1<<2))
Можно ли написать такой макрос, чтобы в его теле можно было подставлять передаваемые параметры, типа:
#define PIN_STATE(port, bit) (FIO<port>PIN & (1<<bit))
??
MALLOY2
Aug 6 2010, 08:12
Никак.
Можно так
Код
#define PIN_STATE(port, bit) (FIO##port & (1<<bit))
а вызывать так:
Код
PIN_STATE(1PIN , 0)
Можно переписать хедер под вид FIOPIN1 тогда можно будет
Ну или если сильно хочется то сделать через инлайновую функцию при константах на входе он ее оптимизирует до вида макроса.
P.S. Я не работаю в KEIL может там и не работает в макросах ##port
Ну, я вроде бы сам разобрался на основании макросов к другим компиляторам. В итоге получилось вот так:
#define PIN_STATE(port, bit) (FIO##port##PIN & (1UL<<bit))