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

 
 
> Использование макросов с аргументами в Си
MaxiMuz
сообщение Nov 28 2013, 07:32
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 253
Регистрация: 15-04-10
Из: Волгоград
Пользователь №: 56 658



Для удобства работы с портами ввода/вывода (на STM32 в Keil) написал небольшой хидер, приведу его часть :
Код
#define SbitP(Port,Nbit)    GPIO##Port->BSRR=GPIO_BSRR_BS##Nbit
#define RbitP(Port,Nbit)    GPIO##Port->BSRR=GPIO_BSRR_BR##Nbit
#define SmbitP(Port,mask)    GPIO##Port->BSRR=(mask)
#define RmbitP(Port,mask)    GPIO##Port->BSRR=(mask)<<16

в программе использую следующие варианты включения макросов:
Код
#define  LCD_dataShift 1


void LCD_wrAdr (u8 Adr)
{
    SmbitP(A,((Adr&0x0f)<<LCD_dataShift)); // выставляем на шину адрес
    RbitP(A,7); // вкл. на запись адреса A0=0
    SbitP(A,5); // вкл.строба записи
    delay(2000);// Задержка ~ 100нс
    RbitP(A,5); // снимаем строб записи
    RmbitP(A,(0x0f<<LCD_dataShift)); // Сброс битов шины DBх
    delay(5000);// Задержка ~ 200нс
}

У меня вопрос: на сколько корректно такое применение макросов ? т.к. в случае с RbitP(A,7) в макрос подставляется символ , который при обединение с остальным текстом сам является библиотечным макросом. Т.е. до каких пор происходит раскрытие макроса ?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- MaxiMuz   Использование макросов с аргументами в Си   Nov 28 2013, 07:32
- - Tarbal   Бегло посмотрел. Вроде все нормально. Макросы тупо...   Nov 28 2013, 13:15
- - SSerge   Цитата(MaxiMuz @ Nov 28 2013, 14:32) Т.е....   Nov 29 2013, 06:54
- - MrYuran   Не совсем понятен смысл таких макросов. Если абстр...   Nov 29 2013, 11:48
|- - demiurg_spb   Цитата(MrYuran @ Nov 29 2013, 15:48) +1   Nov 29 2013, 12:12
|- - MaxiMuz   Цитата(MrYuran @ Nov 29 2013, 14:48) Не с...   Nov 29 2013, 12:29
|- - demiurg_spb   Цитата(MaxiMuz @ Nov 29 2013, 16:29) Вы ...   Nov 29 2013, 12:52
- - _Pasha   Я обычно так делаю Код#define LCD_WR1_pin 4 static...   Nov 29 2013, 18:19
|- - winipuh   Цитата(_Pasha @ Nov 29 2013, 22:19) Код#d...   Dec 1 2013, 15:37
||- - demiurg_spb   Цитата(winipuh @ Dec 1 2013, 19:37) Ну и ...   Dec 2 2013, 05:39
||- - _Pasha   Скобочки - запросто мог потерять. Цитата(demiurg_...   Dec 2 2013, 06:29
||- - winipuh   Я не придраться Просто уже и раньше кое-где встре...   Dec 2 2013, 08:24
|||- - ViKo   Цитата(winipuh @ Dec 2 2013, 11:24) Вот я...   Dec 2 2013, 08:36
|||- - winipuh   Цитата(ViKo @ Dec 2 2013, 12:36) Ну, вдру...   Dec 2 2013, 09:50
|||- - ViKo   Цитата(winipuh @ Dec 2 2013, 12:50) Шутит...   Dec 2 2013, 10:13
||- - demiurg_spb   Цитата(_Pasha @ Dec 2 2013, 10:29) Это не...   Dec 2 2013, 11:53
|- - MaxiMuz   Цитата(_Pasha @ Nov 29 2013, 21:19) Я обы...   Dec 2 2013, 12:14
|- - winipuh   Цитата(MaxiMuz @ Dec 2 2013, 16:14) по по...   Dec 2 2013, 12:34
|- - MaxiMuz   Цитата(winipuh @ Dec 2 2013, 15:34) Да? ...   Dec 2 2013, 19:09
|- - winipuh   Цитата(MaxiMuz @ Dec 2 2013, 23:09) но ко...   Dec 2 2013, 20:00
|- - MaxiMuz   Цитата(winipuh @ Dec 2 2013, 23:00) А так...   Dec 3 2013, 04:30
|- - winipuh   Цитата(MaxiMuz @ Dec 3 2013, 08:30) Код#d...   Dec 3 2013, 12:23
|- - MaxiMuz   Цитата(winipuh @ Dec 3 2013, 15:23) Имеем...   Dec 11 2013, 07:36
|- - Сергей Борщ   Цитата(MaxiMuz @ Dec 11 2013, 09:36) Един...   Dec 11 2013, 08:02
- - dxp   QUOTE (winipuh @ Dec 1 2013, 22:37) А зач...   Dec 3 2013, 04:24
- - ViKo   Не понимаю, зачем такие "муки творчества...   Dec 11 2013, 08:23
- - Сергей Борщ   Цитата(ViKo @ Dec 11 2013, 10:23) Не пони...   Dec 11 2013, 09:12


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

 


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


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