Перейти к содержанию
    

Разные стили .h файлов описания аппаратуры в STM32 и GigaDevice.

С чем связана эта разница?

Например если я хочу выставить единицу в порт PA0, в GigaDevice нужно писать:

    GPIO_BOP(GPIOA) = GPIO_BOP_BOP0;

А в STM совсем по другому:

   GPIOA->BSRR = BIT0;

Кто сталкивался с этой проблемой и как её решали?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А вы посмотрите вовнутрь этих файлов.   
"
GPIOA->BSRR" - есть ни что иное, как обращение к элементу структуры по указателю. После раскрытия всех скобок и разыменования указателей получим обращение по числовому адресу типа *0x40002020 = 10; (точные адреса не помню)

А у GigaDevice решено в виде макроса (я туда не заглядывал, точно не скажу).

Как решать? Да никак, просто привыкнуть к другому стилю. Или если хотите, приведите к общему знаменателю, переписав заголовочники в одном выбранном стиле.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хоть конкретную ссылку на конкретный .h привели бы.

Стиль описания .h-файлов тех GD32F, с которыми я ознакомлен, точь-в-точь совпадает с STM32.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

19 минут назад, Arlleex сказал:

Хоть конкретную ссылку на конкретный .h привели бы.

Стиль описания .h-файлов тех GD32F, с которыми я ознакомлен, точь-в-точь совпадает с STM32.

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

Сам впервые столкнулся. очень удивлён.

Вот один из них:

gd32f4xx_gpio.h

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, dOb said:

Кто сталкивался с этой проблемой и как её решали?

Проблемы здесь нет. Поэтому, решать нечего) Но мне понравилось управление пинами в этой статье. Примерно так у меня сделано для STM32 и GD32.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 минут назад, Arlleex сказал:

Тогда проще взять файл от ST-шного компаньона и писать якобы под ST.

А вы уверенны, что все модули совпадают?

Я выборочно сравнил некоторые модули совпадают, но некоторые программно не совместимы. Да и у самого STM  между семействами нет полной совместимости.

 

З.Ы. Находил ошибки в .h файлах CHW. Приходилось приводить их в соответствии с документацией. Не хотелось бы повторения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 минут назад, haker_fox сказал:

Но мне понравилось управление пинами в этой статье. Примерно так у меня сделано для STM32 и GD32.

У меня лучше :yes: - установка/сброс/toggle пина: Pset(PIN_LED1) / Pclr(PIN_LED1) / Ptog(PIN_LED1) - всё сделано с помощью макросов, без всяких си++. А следовательно - будет иметь минимальный код независимо от уровня оптимизации (не требует максимальной оптимизации для inline-инга, как в той статье).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

45 минут назад, dOb сказал:

Ну так и читайте в нем. GPIOx объявлены как GPIO_BASE + смещение до бозоаого адреса конкретного GPIO. Затем макросы, в которых к базовым адресам GPIOx добавляется смещение до указанного регистра. Получается в конечном счёте адрес регистра. Ну и всё. С битами примерно так же. 

Ну решили этот вопрос немного иначе, не так, как предлагает CMSIS

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 минут назад, dOb сказал:

Приходилось приводить их в соответствии с документацией

Просто читайте документацию самостоятельно. Без всяких мурзилок/кубов и прочего. И пишите описания регистров периферии как вам нравится, в едином стиле, тоже  - самостоятельно.

Так как разных производителей никогда не заставите делать всё в едином стиле - у всех он свой. А одними STM32 мир МК не ограничивается. Если когда-нибудь попробуете вылезти из песочницы (STM32), то это сильно поможет. Поможет умение ходить своими ногами, самостоятельно.  :mosking:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

34 минуты назад, haker_fox сказал:

Проблемы здесь нет. Поэтому, решать нечего) Но мне понравилось управление пинами в этой статье. Примерно так у меня сделано для STM32 и GD32.

Просто кошмар, а не статья... ИМХО, конечно.

10-15 лет назад Си-кодеры мерялись чем-то типа u32 *(*p[5]....)...

А щас моргание 4 диодами выглядит ну совершенно не читаемо. Т.е. надо реально вглядываться в код и разворачивать все эти плюсовые прибамбасы. Каждый раз как первый раз.

А через 2 дня вся эта красота забывается и приходится снова глазами просматривать исходник, чтобы понять, что там делается. Ужос. Что хотел продемонстрировать автор?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Просто одну и ту же задачу можно решить десятом способов, и у каждого способа - свои достоинства и недостатки. 

Погодите, вот когда Piton доберётся до микроконтроллеров, там начнётся...  Чем высокоуровневее язык, тем сложнее на нем работать с низкоуровневыми задачами - больше приходится писать подготовительных операций, прежде чем мигнуть светиком как положено в стиле языка. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 минут назад, EdgeAligned сказал:

Погодите, вот когда Piton доберётся до микроконтроллеров, там начнётся... 

Уже. Но пока не сильно прижился.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

45 минут назад, dOb сказал:

А вы уверенны, что все модули совпадают?

Глазами смотрю, насколько совместимы регистры, где не совместимы - в исходнике (не в .h) дописываю установку/снятие нужных битов. Делов на полминуты.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...