|
Склеивание 2-х имен макросов |
|
|
|
Sep 5 2013, 08:02
|
Знающий
   
Группа: Свой
Сообщений: 639
Регистрация: 5-09-05
Пользователь №: 8 231

|
Приветсвую. Кто подскажет возможно склеить 2 имени макросов. Поясню на примере. Код #define SYNC_EXTI_Line EXTI_Line3 #define SYNC_Channel EXTI3_IRQn #define SYNC_GPIO_PinSource GPIO_PinSource3 #define SYNC_EXTI_IRQHandler EXTI3_IRQHandler Данные определения преобразовать в Код #define pin_number 1
#define SYNC_EXTI_Line EXTI_Line#[b]#pin_number[/b] #define SYNC_Channel EXTI[b]##pin_number[/b]_IRQn #define SYNC_GPIO_PinSource GPIO_PinSource[b]##pin_number[/b] #define SYNC_EXTI_IRQHandler EXTI[b]##pin_number[/b]_IRQHandler так естественно не работает. А как сделать правильно?
|
|
|
|
|
Sep 5 2013, 08:53
|
Знающий
   
Группа: Свой
Сообщений: 639
Регистрация: 5-09-05
Пользователь №: 8 231

|
не получается так вот такие ошибки выдаёт Код Remark[Pe010]: "#" not expected here D:\... Error[Pe010]: "#" not expected here D:\... Error[Pe020]: identifier "EXTI_Line" is undefined D:\... Error[Pe065]: expected a ";" D:\...
|
|
|
|
|
Sep 5 2013, 10:34
|

Гуру
     
Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954

|
Цитата(Rash @ Sep 5 2013, 13:38)  с SYNC_EXTI_Line - прокатило, а вот с SYNC_Channel - нет А, результатом что должно быть? EXTI1_IRQn ? В Keil'е так и получается... Какой у Вас транслятор используется? Можно попробовать Код #define SYNC_Channel _Glue(EXTI, pin_number) ## _IRQn
|
|
|
|
|
Sep 5 2013, 12:48
|
Знающий
   
Группа: Свой
Сообщений: 639
Регистрация: 5-09-05
Пользователь №: 8 231

|
ошибся, не дефайн, а энум Код #define EXTI_Line1 ((uint32_t)0x00002) /*!< External interrupt line 1 */
typedef enum IRQn { ... EXTI1_IRQn = 7, /*!< EXTI Line1 Interrupt */ ... } IRQn_Type;
|
|
|
|
|
Sep 5 2013, 15:54
|
Знающий
   
Группа: Свой
Сообщений: 639
Регистрация: 5-09-05
Пользователь №: 8 231

|
Код typedef struct { uint8_t NVIC_IRQChannel .... } NVIC_InitTypeDef;
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = SYNC_Channel; [b]// тут ошибка[/b] Цитата Error[Pe513]: a value of type "EXTI_TypeDef *" cannot be assigned to an entity of type "uint8_t" D:\... Error[Pe065]: expected a ";" D:\... в настройках вроде установил все галочки касательно трансляции дефайнов, но не в одном из out файлов не нашёл как преобразуются дефайны
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|