dOb 8 21 апреля, 2023 Опубликовано 21 апреля, 2023 · Жалоба С чем связана эта разница? Например если я хочу выставить единицу в порт PA0, в GigaDevice нужно писать: GPIO_BOP(GPIOA) = GPIO_BOP_BOP0; А в STM совсем по другому: GPIOA->BSRR = BIT0; Кто сталкивался с этой проблемой и как её решали? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 85 21 апреля, 2023 Опубликовано 21 апреля, 2023 · Жалоба А вы посмотрите вовнутрь этих файлов. "GPIOA->BSRR" - есть ни что иное, как обращение к элементу структуры по указателю. После раскрытия всех скобок и разыменования указателей получим обращение по числовому адресу типа *0x40002020 = 10; (точные адреса не помню) А у GigaDevice решено в виде макроса (я туда не заглядывал, точно не скажу). Как решать? Да никак, просто привыкнуть к другому стилю. Или если хотите, приведите к общему знаменателю, переписав заголовочники в одном выбранном стиле. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 188 21 апреля, 2023 Опубликовано 21 апреля, 2023 · Жалоба Хоть конкретную ссылку на конкретный .h привели бы. Стиль описания .h-файлов тех GD32F, с которыми я ознакомлен, точь-в-точь совпадает с STM32. Или речь о других МК? В любом случае, это либо переписывать, либо забить и смириться. Код работы с периферией зачастую - какие-то проценты от общего объема. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dOb 8 21 апреля, 2023 Опубликовано 21 апреля, 2023 · Жалоба 19 минут назад, Arlleex сказал: Хоть конкретную ссылку на конкретный .h привели бы. Стиль описания .h-файлов тех GD32F, с которыми я ознакомлен, точь-в-точь совпадает с STM32. Или речь о других МК? В любом случае, это либо переписывать, либо забить и смириться. Код работы с периферией зачастую - какие-то проценты от общего объема. Сам впервые столкнулся. очень удивлён. Вот один из них: gd32f4xx_gpio.h Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 188 21 апреля, 2023 Опубликовано 21 апреля, 2023 · Жалоба Тогда проще взять файл от ST-шного компаньона и писать якобы под ST. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 21 апреля, 2023 Опубликовано 21 апреля, 2023 · Жалоба 1 hour ago, dOb said: Кто сталкивался с этой проблемой и как её решали? Проблемы здесь нет. Поэтому, решать нечего) Но мне понравилось управление пинами в этой статье. Примерно так у меня сделано для STM32 и GD32. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dOb 8 21 апреля, 2023 Опубликовано 21 апреля, 2023 · Жалоба 5 минут назад, Arlleex сказал: Тогда проще взять файл от ST-шного компаньона и писать якобы под ST. А вы уверенны, что все модули совпадают? Я выборочно сравнил некоторые модули совпадают, но некоторые программно не совместимы. Да и у самого STM между семействами нет полной совместимости. З.Ы. Находил ошибки в .h файлах CHW. Приходилось приводить их в соответствии с документацией. Не хотелось бы повторения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 242 21 апреля, 2023 Опубликовано 21 апреля, 2023 · Жалоба 11 минут назад, haker_fox сказал: Но мне понравилось управление пинами в этой статье. Примерно так у меня сделано для STM32 и GD32. У меня лучше - установка/сброс/toggle пина: Pset(PIN_LED1) / Pclr(PIN_LED1) / Ptog(PIN_LED1) - всё сделано с помощью макросов, без всяких си++. А следовательно - будет иметь минимальный код независимо от уровня оптимизации (не требует максимальной оптимизации для inline-инга, как в той статье). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 85 21 апреля, 2023 Опубликовано 21 апреля, 2023 · Жалоба 45 минут назад, dOb сказал: Вот один из них gd32f4xx_gpio.h 28.64 кБ · 7 загрузок Ну так и читайте в нем. GPIOx объявлены как GPIO_BASE + смещение до бозоаого адреса конкретного GPIO. Затем макросы, в которых к базовым адресам GPIOx добавляется смещение до указанного регистра. Получается в конечном счёте адрес регистра. Ну и всё. С битами примерно так же. Ну решили этот вопрос немного иначе, не так, как предлагает CMSIS Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 242 21 апреля, 2023 Опубликовано 21 апреля, 2023 · Жалоба 6 минут назад, dOb сказал: Приходилось приводить их в соответствии с документацией Просто читайте документацию самостоятельно. Без всяких мурзилок/кубов и прочего. И пишите описания регистров периферии как вам нравится, в едином стиле, тоже - самостоятельно. Так как разных производителей никогда не заставите делать всё в едином стиле - у всех он свой. А одними STM32 мир МК не ограничивается. Если когда-нибудь попробуете вылезти из песочницы (STM32), то это сильно поможет. Поможет умение ходить своими ногами, самостоятельно. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 85 21 апреля, 2023 Опубликовано 21 апреля, 2023 · Жалоба Ага, теперь будем соревноваться, у кого пин короче? 😝 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 188 21 апреля, 2023 Опубликовано 21 апреля, 2023 · Жалоба 34 минуты назад, haker_fox сказал: Проблемы здесь нет. Поэтому, решать нечего) Но мне понравилось управление пинами в этой статье. Примерно так у меня сделано для STM32 и GD32. Просто кошмар, а не статья... ИМХО, конечно. 10-15 лет назад Си-кодеры мерялись чем-то типа u32 *(*p[5]....)... А щас моргание 4 диодами выглядит ну совершенно не читаемо. Т.е. надо реально вглядываться в код и разворачивать все эти плюсовые прибамбасы. Каждый раз как первый раз. А через 2 дня вся эта красота забывается и приходится снова глазами просматривать исходник, чтобы понять, что там делается. Ужос. Что хотел продемонстрировать автор? 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 85 21 апреля, 2023 Опубликовано 21 апреля, 2023 · Жалоба Просто одну и ту же задачу можно решить десятом способов, и у каждого способа - свои достоинства и недостатки. Погодите, вот когда Piton доберётся до микроконтроллеров, там начнётся... Чем высокоуровневее язык, тем сложнее на нем работать с низкоуровневыми задачами - больше приходится писать подготовительных операций, прежде чем мигнуть светиком как положено в стиле языка. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Harbinger 10 21 апреля, 2023 Опубликовано 21 апреля, 2023 · Жалоба 14 минут назад, EdgeAligned сказал: Погодите, вот когда Piton доберётся до микроконтроллеров, там начнётся... Уже. Но пока не сильно прижился. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 188 21 апреля, 2023 Опубликовано 21 апреля, 2023 · Жалоба 45 минут назад, dOb сказал: А вы уверенны, что все модули совпадают? Глазами смотрю, насколько совместимы регистры, где не совместимы - в исходнике (не в .h) дописываю установку/снятие нужных битов. Делов на полминуты. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться