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

 
 
> Синтаксис при написании макросов в KEIL
Yaumen
сообщение Aug 6 2010, 07:46
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 187
Регистрация: 22-06-05
Из: Минск, Беларусь
Пользователь №: 6 213



Хочу написать набор макросов, облегчающих работу с пинами LPC на KEIL, типа
#define PIN_STATE(port, bit)

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

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

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

??
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
MALLOY2
сообщение Aug 6 2010, 08:12
Сообщение #2


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



Никак.

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


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

Код
PIN_STATE(1PIN , 0)


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

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

P.S. Я не работаю в KEIL может там и не работает в макросах ##port
Go to the top of the page
 
+Quote Post
Yaumen
сообщение Aug 6 2010, 08:25
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 187
Регистрация: 22-06-05
Из: Минск, Беларусь
Пользователь №: 6 213



Ну, я вроде бы сам разобрался на основании макросов к другим компиляторам. В итоге получилось вот так:

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

Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 17:22
Рейтинг@Mail.ru


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