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

 
 
> Привязка структур к аппаратуре
Dog Pawlowa
сообщение Feb 19 2008, 16:09
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Обычный С.
В системе есть несколько идентичных узлов (управление температурой, двигатели), описываемых структурами переменных. Стоит задача сокращения текста программы. Вариантов три - макросы, функции и их комбинации.

Вначале сделал вариант с макросами, и он работает

Код
#define MOTOR_SERVICE(OBJ, MOT)                        \
    if (!OBJ##.time)                                 \
        {        PWM##MOT=PWM_TOP+1; HIGH_MODE##MOT;        \
                OBJ##.state=moSTOPPED;                \
        }                                    \
    else     {    if (OBJ##.speed==0)                         \
                    {    PWM##MOT=PWM_TOP+1; HIGH_MODE##MOT;    \
ну и так далее...

В этом макросе параметры - имя структуры и номер, который служит для обращения к нужным портам через другие макросы.

Но у макросов есть недостатки:
- трудность отладки (в отладчике IAR в этом случае нет привязки к строкам кода С)
- трудности привязки ошибки компиляции к месту в макросе
- ну и размер кода, конечно.

Хотелось бы использовать функции с параметром указателя на структуру, причем чтобы и работа с портами легко укладывалась в этот стройный подход.
Вопрос - как это сделать красиво, если там разные входы, выходы, и собственно сами регистры.
Добавить с структуру указатели на функции? Добавить в параметры функции индекс, который использовать для выбора функций работы с портами из массива, как в примере макроса?
Может, что-то еще?


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post



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

 


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


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