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

 
 
> Склеивание 2-х имен макросов
Rash
сообщение Sep 5 2013, 08:02
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 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


так естественно не работает.

А как сделать правильно?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Rash
сообщение Sep 5 2013, 16:21
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 639
Регистрация: 5-09-05
Пользователь №: 8 231



вложил файл, но на выходе я так и не нашёл ничего
Прикрепленные файлы
Прикрепленный файл  cmx618.zip ( 17.37 килобайт ) Кол-во скачиваний: 17
 
Go to the top of the page
 
+Quote Post
Палыч
сообщение Sep 5 2013, 16:42
Сообщение #3


Гуру
******

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



Цитата(Rash @ Sep 5 2013, 20:21) *
я так и не нашёл ничего

А вот и результат
Цитата
NVIC_InitStructure.NVIC_IRQChannel = ((EXTI_TypeDef *) ((((uint32_t)0x40000000) + 0x00010000) + 0x3C00))3_IRQn;

Всё до банальности просто - EXTI определено в #define.
Выход из создавшегося положения: добавить "буквочек" к этой части идентификатора для уникальности...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Rash   Склеивание 2-х имен макросов   Sep 5 2013, 08:02
- - Палыч   Цитата(Rash @ Sep 5 2013, 12:02) А как сд...   Sep 5 2013, 08:23
- - Rash   не получается так вот такие ошибки выдаёт КодRemar...   Sep 5 2013, 08:53
|- - Палыч   Цитата(Rash @ Sep 5 2013, 12:53) не получ...   Sep 5 2013, 09:21
- - Rash   с SYNC_EXTI_Line - прокатило, а вот с SYNC_Channel...   Sep 5 2013, 09:38
|- - Палыч   Цитата(Rash @ Sep 5 2013, 13:38) с SYNC_E...   Sep 5 2013, 10:34
- - Rash   результат должен быть EXTI1_IRQ. 2-ой вариант тоже...   Sep 5 2013, 11:20
|- - Палыч   Цитата(Rash @ Sep 5 2013, 15:20) 2-ой вар...   Sep 5 2013, 11:58
- - Rash   у меня в IAR ARM 6.50 не проходит. EXTI1_IRQn тоже...   Sep 5 2013, 12:19
|- - Палыч   Цитата(Rash @ Sep 5 2013, 16:19) EXTI1_IR...   Sep 5 2013, 12:40
- - Rash   ошибся, не дефайн, а энум Код#define EXTI_Line1 ...   Sep 5 2013, 12:48
|- - scifi   Цитата(Rash @ Sep 5 2013, 16:48) ошибся, ...   Sep 5 2013, 13:17
|- - Палыч   Цитата(Rash @ Sep 5 2013, 16:48) ошибся, ...   Sep 5 2013, 15:30
- - Rash   да препроцессору и не нужно знать энум это или нет...   Sep 5 2013, 13:50
- - Rash   Кодtypedef struct { uint8_t NVIC_IRQChannel .....   Sep 5 2013, 15:54
|- - Палыч   Цитата(Rash @ Sep 5 2013, 19:54) не в одн...   Sep 5 2013, 16:09
- - Rash   да абсолютно верно, есть в дефайнах EXTI. Но вот к...   Sep 6 2013, 07:06
|- - Палыч   Цитата(Rash @ Sep 6 2013, 11:06) Но вот к...   Sep 6 2013, 07:11
- - Rash   о, так работает. Я пробовал разбить EXTI, по друг...   Sep 6 2013, 07:28


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

 


RSS Текстовая версия Сейчас: 3rd August 2025 - 00:06
Рейтинг@Mail.ru


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