Все можно сделать, библиотеки как правило так и делаются (есть даже макросы для разных типов компиляторов SDCC и GCC правда вот еонкретно в моем случае пришлось все перелопачивать так как отличия большие между платформами (изначально код был под 8052, а у меня весь проект под ARM Сortex M0+ Проблема многих хороших (я бы даже сказал уникальных решений) в том, что компании их создающие не достаточно времени уделяется документации. Тот же самый трансивер AX5043 он уникален полностью открытой архитектурой но 600 !!! регистров сведут с ума кого угодно тем более, что описание у него очень поверхностное, а Апи изначально заточено под 8052 Как прямая противоположность трансивер от Техасцев (СС1101) образец лаконичности и отлично документирован, на запуск с нуля после установки Радиолаба уходит от силы 1день
Комментарии: 22
Ogurezzz
Вот примерчик бы... Я понимаю как это должно быть в теории. В том же Marlin для 3Д принтеров поддержка плат и под AVR 8-битные и под STM32 и под NXP. И все выбирается заменой только 1 строки. Но там столько дефайнов, что я в них тупо путаюсь :) Да еще и проект под АрдуиноИДЕ, вообще смэрть... Вот у меня пока проблема с либами. 1. Не пойму как сделать "универсальную" и 2. Не понимаю пока как эти либы подключать из одного места ко всем проектам. Сейчас я их просто копирую в проект.
Aleksey
В stm32 в cmsis используются дефайны под конкретный камень, там можно посмотреть
Ogurezzz
Но там же качается драйвер под семейство. Мне интересен синтаксис. Это же препроцессор должен взять откуда-то данные о камне. И оттуда же данные берет потом компилятор?
Aleksey
Качается либа, все в ней. Типа XXX Какой то код YYY Другой код А ты по месту использования в проекте определяешь XXX или YYY
Anonim
А как ты компилируешь код? (inb4 нажимаю F5)
Ogurezzz
Да, это понимаю. А вот где понять как выглядит XXX и YYY для конкретного камня? Штатным методом в Cube IDE. Для AVR использую AVRHelper для VSCode. Там скрипт на питоне, который собирает все добро. Как он работает пока не разобрался, а надо бы.
Anonim
Как я и ожидал. Разберись как и что заправляется твоим же кубом в систему сборки, это несложно. Как минимум для архитектуры есть https://sourceforge.net/p/predef/wiki/Architectures/ Но этто больше ос-релейтед, для либ кто во что горазд херачат просто в доках указывают нужные флаги компилятор их сам не выведет
Aleksey
Для STM32 смотришь в исходник и ищешь grep`ом Типа такого STM32F103xB У меня такие дефайны прописаны в Makefile, пример проекта на HAL, на чистом CMSIS USE_HAL_DRIVER не нужен # C defines C_DEFS = \ -DUSE_HAL_DRIVER \ -DSTM32F103xB
Ogurezzz
Т.е. на основании семейства можно принимать решение?
Alexander
если строить схему питания электромагнитного реле с пониженным током удержания то какие есть схемные решения? можно два ключа поставить, один через резистор есть еще варианты? ШИМ вариант?
Igor
обмотка реле включается через конденсатор+резистор
Aleksey
Для CMSIS под STM32F1 к примеру можно
Igor
А кто говорил про электролит? Можно плёночные ставить впараллель. http://ra3tox.qrz.ru/s4/rk-4o1.html
Alexander
пленочный на 20мкф? громоздко.
Ogurezzz
Оке.. поковыряюсь. И надо понять как всё-таки механика компилятора работает. Вроде читал и смотрел. Что-то даже получалось. Но makefile для меня пока сложно
Igor
Saw
у тебя какая среда программирования? или из командной строки ?
Ogurezzz
https://t.me/easyelectronics_and_mhl/218654
Saw
ну для avr лично мне проще avrstudio. он все сам собирает. а чип определяется в проекте. это сделано упрощенно , один заголовочный файл и он подтягивает нужный для конкретного чипа. В нем банально перечисления чипов через _avr32a_ include avr32a.h и т.д.
Ogurezzz
Вот да. Хочу, чтобы Либа умела при компиляции подтягивать нужные дефайны с регистрами и макросами под выбранный камушек.
Saw
ну вот как раз и можно взять заголовочные файлы от этой ide.
Ogurezzz
Оке. Спасибо.