Добрый день, есть 3 Usart +-1UART как сделать инициализацию этого всего с легким переназвачением выводов. Сначала сделал все в SPL, но это все растянулось на 3 странице, и при переназначение выводов, начал путаться, что где, потом добавил define что бы все настройки были в header, но все равно не айс получилось пришлось тактирование туда вытаскивать и тд опять настроек на 3 странице, и где-то включаешь тактирование не на той шине Usart, или ремапинк теряешь.
Можно как нибудь сделать что бы все настройки были перед глазами? И не надо было листать вниз на 3 страницы. Даже применив макросы, стало только, чуть чуть легче http://we.easyelectronics.ru/blog/STM32/3191.html
Да очень просто - написать на базовом CMSIS. Вам все три одновременно? Пишите всё друг за другом. Или нужен выбор одного из трех? Напишите драйвер и условной компиляцией (#define USART1 .... ifdef USART1 .... endif и #define USED_USART UASRT1), в котором в блоках ifdef ... endif будут описаны отдельные аппаратно-зависимые компиляции, определяемые конкретным значением дефайна перед использованием.
_________________ Подпись убрал вместе с автором. aen
Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.
Reflector, можно более полный исходник Вашего примера? Или сслылку на подобный подход.
Можно более полный(но все равно обрезанный) пример касающийся работы с портами. Он под F0/F3 и т.п., у F4 есть еще VeryHighSpeed, на F1 все совсем по-другому... И нужен компилятор С++11, у меня gcc.
template<uint32_t pin, uint32_t af_ = 0> using PinC = ......
Имея такой шаблонный класс можно написать:
Код:
PinA<5> led(PinMode::PushPull_HighSpeed); led.inverse(); // или PinA<5>::inverse();
Класс статический, ничего лишнего не генерится, по сути просто вызывается две функции, одна из которых инлайнится. Но это 1 пин, если хочется инициализировать порт целиком, то нужно написать другой класс, принимающий маску вместо номера пина:
Но поскольку С++ потенциально способен генерить более эффективный код, чем С, у которого нет шаблонов и constexpr, от этого всего останется(в релизе, естественно) только:
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения