-
Постов
1 217 -
Зарегистрирован
-
Посещение
-
Победитель дней
8
EdgeAligned стал победителем дня 26 июня
EdgeAligned имел наиболее популярный контент!
Репутация
74 Очень хорошийИнформация о EdgeAligned
- Сейчас Просмотр форума: STM
-
Звание
Профессионал
Посетители профиля
Блок последних пользователей отключён и не показывается другим пользователям.
-
c stm32 перевод команд HAL на cmsis или на LL
EdgeAligned ответил dimir тема в STM
Просто открыть её и прочитать, что написано внутри. И взять из нее то, что относится непосредственно к регистрам. -
С экранной клавиатуры смартфона это не нажимается И лично я пользуюсь только одним типом смайлика - 🙂 с клавиатуры : и )
-
Плавный переход C -> C++ под МК
EdgeAligned ответил Arlleex тема в Программирование
Начнем издалека: namespace N { void Foo() { } } namespace M { void FooM() { using namespace N; Foo(); } } Однако, если Foo() определена в глобальной области видимости ::, то нужно конкретно указывать, какую из Foo() вы вызываете - N::Foo(); или ::Foo(); А теперь с энумераторами: enum En { RESET = 0, SET = 1 }; namespace N { enum En { RESET = 1, SET = 0 }; } void Foo() { En st1 = SET; N::En st2 = N::SET; } Собственно, о чем и сообщает строчка ambigous: RESET из enum в <stm32f4xx.h> или из Hardware::Pin? в которой так и написано - "откуда вы вызываете RESET, из энумератора или из Hardware::Pin?" То есть, когда появляется неоднозначность вызова, нужно указывать полное имя, включая неймспейсы. Глобальную область видимости отключить нельзя (насколько мне известно). -
Плавный переход C -> C++ под МК
EdgeAligned ответил Arlleex тема в Программирование
Про макросы - да, я тоже так делал, и это работает. Однако, коль уж начал жить по-новому, но и мыслить тоже желательно по-новому 🙂 В том плане, что появилась возможность сделать вот так: template<typename SPI, typename CS, typename DC> class XXXX { public: static void Xxxxx() { CS::Low(); DC::Low(); SPI::Write(xxx); ... } } На мой взгляд, это работает неплохо. К тому же, можно, используя одно описание (шаблон) класса для нескольких физических устройств, сидящих на разной периферии. А без оптимизации даже базовый Си работает значительно медленнее. Оптимизация ведь заставляет компилятор использовать более широкий набор инструкций и иначе строить код. -
Пишу строку со смайликом 🙂 Новая строка начинается. Или нужен какой-то особый смайлик? 🤧 Все равно начинается новая строка. Однако, быти проблемы, когда писал со смартфона с цитатами. Там да, блок цитаты мешает вообще что-либо написать.
-
Управление электромагнитом
EdgeAligned ответил Shushik220 тема в Схемотехника
А, ну коль хотите, можете помучаться, он вам тут про эфир-создатель Вселенной еще расскажет, про эфироны и про всякие катушки с магнитными полями Вселенной в Эфире. Только не говорите, что вас не предупреждали. 🙂 Начинается вроде бы вполне логично, но чем дальше, тем сильнее входит в разнос. Заряда хватает примерно на полтора месяца в среднем, после этого обычно забанивают его. За последующий месяц-два он немного приходит в себя, остывает, и начинает искать новую площадку для дури. И повторяется всё снова, по тому же сценарию и с одним и тем же содержанием. И всё это - на протяжении уже десятка лет. Вопсчем, мы с Точкой Опоры вас предупредили, дальше пеняйте на себя. 🙂 -
Плавный переход C -> C++ под МК
EdgeAligned ответил Arlleex тема в Программирование
По поводу пинов, я, почитав и перебрав разные варианты, пришел к такому: Pin<GpioA, 4>::High();, который через using CS = Pin<GpioA, 4>; преобразуется в CS::High(); Основная причина выбора такого варианта - получение максимально быстрого кода (при включенной оптимизации). То есть, не удобство для себя, а скорость работы кода. Основа - класс GpioA со статическими шаблонными методами template<uint16_t Value> static void SetPins() {} и тд, и наложенный поверх шаблонный класс template<typename TPort, int PinPos> class Pin со статическими методами static void High() { TPort::template SetPins<1 << PinPos>(); и т.д. } Протестировал - работает компактно и быстро, сворачиваясь в пределе до одной ассемблерной инструкции. -
Управление электромагнитом
EdgeAligned ответил Shushik220 тема в Схемотехника
Да просто этот Стогов активно проявился в инете еще лет 10 назад, бегая по многим форумам и пихая одни и те же картинки каких-то там магнитных суперполей и рассказывая как он через электронный микроскоп сфоткал их на сверхпроводниках. Ну, впрочем, он сейчас вам сам всё расскажет, это бурление говн будет надолго тут, так что готовьтесь 🙂 А мне сия срамота уже надоела до чертиков, я это видел на самых разных форумах за всё это время. ЗЫ. Для справки. 2015 год. Научно-технический форум SciTecLibrary - Опыты с магнитной жидкостью И так - постоянно, на протяжении всех этих лет. Странно, что здесь его еще не знают 🙂 -
Управление электромагнитом
EdgeAligned ответил Shushik220 тема в Схемотехника
Да, этого Стогова надо бы сразу заблочить а то он щас начнет спамить картинкакми нанопоровых магнитных полей. Он по всем форумам скитается уже много лет, везде одну и туже чушь сует. Ну, больной человек, с психикой что-то не то у него, и давно уже. -
По реле
EdgeAligned ответил whale тема в В помощь начинающему
Скупой платит дважды. Тупой - трижды -
По реле
EdgeAligned ответил whale тема в В помощь начинающему
Можно ли включить в 220 В лампочку, на которой написано 12 В и почему? Реле с низким допустимым напряжением контактной группы может иметь небольшие зазоры и расстояния в контактной группе, которые для высокого напряжения будут недостаточны. -
Плавный переход C -> C++ под МК
EdgeAligned ответил Arlleex тема в Программирование
Тонкости с упаковкой битовых полей - это еще с базового Си наследие. Там есть тоже особенности - если битовое поле в несколько бит шириной пересекает границу объявленного типа, то плотная упаковка не будет выполняться. -
Плавный переход C -> C++ под МК
EdgeAligned ответил Arlleex тема в Программирование
При виртуальном наследовании: class A { int x; }; class B: virtual A { }; class C: virtual A { }; class D: B, C { }; классы B и C будут больше, чем класс A, из-за добавления таблицы виртуальных методов vtable. Виртуальное наследование позволяет в показанном случае включать класс A только один раз в класс D. Если бы этого виртуального наследования не было, то в класс D было бы включено два разных класса A - через класс B и через класс C. Это пример так называемого "ромбовидного" наследования. -
Плавный переход C -> C++ под МК
EdgeAligned ответил Arlleex тема в Программирование
нет, я ж показал выше на картинке: у переменных a и b нет адреса локации. Вот еще раз. Вот куда помещается constexpr: вовнутрь ассемблерной инструкции. -
Плавный переход C -> C++ под МК
EdgeAligned ответил Arlleex тема в Программирование
С другой стороны, в этом контексте auto не имеет большого смысла. auto хорошо, когда выводится возвращаемое значение функции или принимаемый в функицю параметр, или же присваивается небазовый тип, такой как итератор вектора, например auto it = vector.begin(); Хотя, сейчас попробовал - всё выводится, вот: