Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
🔮✨Волшебство, любовь… и шерсть на одежде!
Ищи улики, решай головоломки — и помни: каждый твой шаг меняет ход сюжета.

Мой Любимый Кот

Новеллы, Головоломки, Коты

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

Stm32

С этим тегом используют

Микроконтроллеры Электроника Arduino Программирование Своими руками Все
106 постов сначала свежее
102
azhel
4 года назад

Шаблоны C++ для микроконтроллеров⁠⁠

Писать на хабр я не умею и боюсь, а Пикабу - это развлекательно-познавательный портал, так что начну с него:)


В 2019 году в качестве хобби решил попробовать микроконтроллеры, чтение форумов и тематических ресурсов определили, что за основу возьму STM32. Arduino за единицу ресурсов дороже, и в принципе на нее есть всё, что только можно придумать, конкретных задач и проектов у меня не было, поэтому с Arduino делать мне было, по сути, нечего.


Как и многие, первые программы создавались через CubeMX (ныне CubeIDE), светодиодами моргать научился, по UART с компьютером связался, даже USB-HID из примера сделать получилось. Но снова уперся в тот факт, что нет конкретной задачи, так что начал разбираться в вопросе непосредственно программирования: какие есть фреймворки, почему HAL так не любят и т.д. В процессе чтения статей наткнулся на очень интересный подход, связанный с применением шаблонов языка C++. Вот ссылка на оригинальную статью, очень рекомендую к прочтению http://easyelectronics.ru/rabota-s-portami-vvoda-vyvoda-mikr....


Если вкратце: автор предлагает почти объектно-ориентированный подход, только все зависимости являются не полями класса, а его шаблонными параметрами. Таким образом, нет необходимости расходовать оперативную память, передавать указатель this в методы.


Например, класс-драйвер дисплея LCD1602 требует указания ему шести ножек GPIO + ширину и длину. Тогда соответствующий шаблонный класс определяется следующим образом

Шаблоны C++ для микроконтроллеров Микроконтроллеры, Stm32, Программирование, C++, Длиннопост

Создание "объектов" (в кавычках) заменяется объявлением нового типа данных:

Шаблоны C++ для микроконтроллеров Микроконтроллеры, Stm32, Программирование, C++, Длиннопост

Все методы классов при шаблонном подходе являются статическими, соответственно вызов осуществляется через оператор разрешения контекста:

Шаблоны C++ для микроконтроллеров Микроконтроллеры, Stm32, Программирование, C++, Длиннопост

Итого, основным отличием от классического объектно-ориентированного подхода является замена создания объекта класса объявлением нового типа (путем инстанцирования некоторого шаблона). Недостатком является тот факт, что каждое такое объявление порождает новый тип данных, все методы дублируются. Однако при программировании микроконтроллеров это несущественно, поскольку вся количество таких типов ограничено количеством используемой периферии (и внешних устройств), а большая часть методов - это запись значения в регистр. Поэтому при включенной оптимизации вызов методов класса вообще сворачивается в inline, что повышает быстродействие. Также использование шаблонов дает возможность существенно ускорить инициализацию периферии путем передачи параметров в качестве шаблонных (если она известна заранее, что весьма логично). В таком случае значения регистров становятся известны еще на этапе компиляции, так что в прошивке можно обнаружить просто запись соответствующего значения в регистр.


Автор указанной статьи разработал и поддерживает библиотеку "mcucpp" (github.com/KonstantinChizhov/Mcucpp), однако ее сложно использовать "из коробки". Сам подход мне очень понравился, поэтому я решил попытаться "прибраться" в том, что сделал и делает Константин, применить нововведения стандарта c++ 17 (а их много как раз в части метапрограммирования), написать документацию и примеры, которые снизят порог вхождения. В результате медленно, но развивается проект Zhele (github.com/azhel12/Zhele), где я неторопливо собираю великолепные идеи Константина Чижова (автором перенятого кода указываю его, если вдруг у кого-то появится вопрос), пытаюсь покрыть различные МК (сейчас у меня в арсенале f030f4, f072rbt, f103c8, f401cc), написать Doxy-документацию, написать примеры и проверить их.


Если вдруг у кого-то будут силы и желание посмотреть примеры и выразить замечания и предложения, буду рад. Пока энтузиазм, к счастью, не пропал. На работе преподаю помимо прочего C++, так что развитие проекта для меня - это в первую очередь упражнения в новых фишках языка.


В планах дописать классы основных интерфейсов (хотя бы i2c, который меня пока пугает), начать реализовывать драйверы популярных устройств (возможно, некоторым студентам будет интересно попробовать). Также очень хочу разобраться в языке шаблонов CubeMX (CubeIDE), чтобы из куба генерировался проект сразу на разрабатываемой библиотеке.


UPD: нашел результаты эксперимента годичной давности (с тех пор я что-то все-таки улучшил + новые версии компиляторов, возможно, еще сильнее оптимизируют). На разных фреймворках сделал одну и ту же задачу для Stm32F103: сконфигурировать тактивание (на частоту 72 Мгц), настроить выход GPIO для управления светодиодом, настроить таймер на ежесекундное прерывание, в обработчике прерывания от таймера переключить светодиод. Допускаю, что написал не идеальные решения, но задача простая, что позволяет предполагать небольшое влияние этого факта.

Шаблоны C++ для микроконтроллеров Микроконтроллеры, Stm32, Программирование, C++, Длиннопост
Показать полностью 4
[моё] Микроконтроллеры Stm32 Программирование C++ Длиннопост
60
109
as91
as91
4 года назад

Простой лайфхак, если сломался сенсор на телефоне, а посидеть на любимом сайте очень хочется⁠⁠

Помниться раньше была на пикабу традиция, выкладывать пятничное "Моё", а так же мне тут сказали что везде хорошо заходят лайфхаки. Вот держите, простой пятничный лайфхак от меня!

Сначала в формате видео, а для тех, кому больше нравится текст, текстовая версия ниже.

Теперь текстовая версия.


Если у вас телефон перестал реагировать на касания к нему, но посидеть на любимом сайте ну очень хочется, то не стоит унывать, есть простой лайфхак!

Возьмите джойстик iDrive от BMW, в моем случае от F-серии. Наверняка и у вас такой завалялся.

Простой лайфхак, если сломался сенсор на телефоне, а посидеть на любимом сайте очень хочется Лайфхак, BMW, Пятница, Stm32, Программирование, Паяльник, Видео, Длиннопост, Рукоделие с процессом, Юмор

Дальше нужно подружить этот джойстик с нашим телефоном. Для этого берем микроконтроллер Stm32f105 или аналогичный, разводим под него печатную плату и пишем прошивку. Данный микроконтроллер имеет всего 64 ножки и припаять его на плату не вызывает ни каких проблем. Допаиваем Can модуль, стабилизатор напряжения и USB разъем. О программировании STM32 есть много уроков, код является интуитивно понятным и не требует дополнительных пояснений.

Простой лайфхак, если сломался сенсор на телефоне, а посидеть на любимом сайте очень хочется Лайфхак, BMW, Пятница, Stm32, Программирование, Паяльник, Видео, Длиннопост, Рукоделие с процессом, Юмор

В результате получаем плату, которая слушает джойстик iDrive и передает команды на телефон по USB. Подключается она к телефону через OTG провод.

Простой лайфхак, если сломался сенсор на телефоне, а посидеть на любимом сайте очень хочется Лайфхак, BMW, Пятница, Stm32, Программирование, Паяльник, Видео, Длиннопост, Рукоделие с процессом, Юмор

После подключения на экране планшета появляется курсор, как будто к нему подключена мышка. Джойстик распознает касания 1 или 2 пальцами, поэтому доступно как управление мышкой, так и прокрутка 2мя пальцами.

Простой лайфхак, если сломался сенсор на телефоне, а посидеть на любимом сайте очень хочется Лайфхак, BMW, Пятница, Stm32, Программирование, Паяльник, Видео, Длиннопост, Рукоделие с процессом, Юмор

Вот и все, наслаждаемся любимым сайтом! Единственный недостаток - джойстику iDrive нужно дополнительное питание 12 вольт. У меня он питается от дополнительного блока питания.  Это досадное недоразумение можно решить повышающим конвертором с 5 вольт до 12, и тогда данный лайфхак станет мобильным!

Показать полностью 4
[моё] Лайфхак BMW Пятница Stm32 Программирование Паяльник Видео Длиннопост Рукоделие с процессом Юмор
77
71
53rGO
4 года назад
Arduino & Pi

DIY Цифровое спортивное табло⁠⁠

Всем привет.

Сегодня будет собирать своими руками цифровое спортивное табло.

DIY Цифровое спортивное табло Дартс, Своими руками, Stm32, Arduino, Чип, Мат, Видео, Длиннопост

Поступила как-то мне задача изготовить информационное табло для отображеня результатов игры Дартс.

Естественно первым делом, я пошел в Гугл посмотреть что имеется на рынке. И если в общем случае спортивные табло имеются, к примеру для футбола/хоккея...

DIY Цифровое спортивное табло Дартс, Своими руками, Stm32, Arduino, Чип, Мат, Видео, Длиннопост

то для дартс ничго нет. Ну как нет, какая-то контора предлагает изготовление, но ни фоток готового результата, ни цен - нет.

DIY Цифровое спортивное табло Дартс, Своими руками, Stm32, Arduino, Чип, Мат, Видео, Длиннопост

При игре в 501 игроки используют мобильное приложение для подсчета результата игрока. Коих большое количество. Ну конечно, это же по сути просто калькулятор - его только ленивый не напишет на том же Андроиде. Однако некоторые приложения помимо счета игры имеют на своем борту и ведение статистики по игрокам. Соответственно задача сводилась к тому, чтобы счет игроков отображаемый в приложении продублировать этом спортивном табло.

DIY Цифровое спортивное табло Дартс, Своими руками, Stm32, Arduino, Чип, Мат, Видео, Длиннопост

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

Ну что делать, придется делать самом.. Всё сам, своими руками (с)

К слову сказать, к программированию на Андроиде я ни разу не приступал.

В голове нарисовалась такая схема.

Имеется телефон/планшет с приложением, имеется табло с микроконтроллером, модулем Блютус, и светодиодными индикаторами.

Первый же вопрос - какие индикаторы использовать? Однозначно высокие (высотой 15 20 см), однозначно светодоидные.

Классисчкие семисегментые?

Нет

Недостатки:

- высокая цена

- неремонтопригодный

- необходима схема управления и питания

- не нашел нужного размера (максимум 5 см)

DIY Цифровое спортивное табло Дартс, Своими руками, Stm32, Arduino, Чип, Мат, Видео, Длиннопост

Наборные из сегментов?

Тоже нет, по тем же причинам кроме второй и последней.

DIY Цифровое спортивное табло Дартс, Своими руками, Stm32, Arduino, Чип, Мат, Видео, Длиннопост

И тут в результате мозгового штурма прилетает идея сделать цифры из светодиодной ленты на ws2812b - "умных" управляемых светодиодах. "Бляяя, точно же!!!", - крикнул я, "Спасибо, Костя." Гениальнее решения и быть не может.

Преимущества данного выбора:

- дешево (на моем варианте вышло 250 руб за цифру высотой 20 сантиметов),

- можно легко заменить вышедший из строя светодиод (это важно при использовании ws2812b),

- управляется всего по одному проводу от микроконтроллера. Не надо городить схему динамический индикации, сдвиговых регисторв, драйвер питания. Лента питается от 5 вольт.

- можно создать цифру любой формы и любого размера.

DIY Цифровое спортивное табло Дартс, Своими руками, Stm32, Arduino, Чип, Мат, Видео, Длиннопост

Ну все, схему утвердил: 1.приложение -> 2.блютус модуль HC-05 -> 3.микроконтроллер (ардуйня, или stm32) -> 4.лента ws2812b

Из этой схемы самым сложным(почти невыполнимым) для меня был первый пункт. Со всем остальным я работаю.

Для создания приложений используется среда Android Studiо, которая на моем старом компе очень тяжело работала. (2 ядра, 2 гига, включается запускается минут 5). Я нашел вариант создания простых приложений в онлайн среде Thunkable, которое позволяет программировать в графической среде "блоками". Там накидал простое приложение, настроил блютус. И отобразил на табло нужную информацию.

В какой то момент времени я понял, что использовать эту онлайн среду - это не правильно, надо всё-таки освоить Android Studio. Купил новый комп, установил запустил Studiо. Начал конечно же с HelloWorld. Пришлось разбираться с разметками, лэйаутами, классами, явами и прочей хернй. Параллельно купил учетку в Гугль Плей заплатив за это 25 долларов.

Ну а дальше дело времени, осваивать Android и писать код.

Вот как это выглядит в среде разработки Android Studio:

DIY Цифровое спортивное табло Дартс, Своими руками, Stm32, Arduino, Чип, Мат, Видео, Длиннопост

Так выглядит процесс разработки для микроконтроллера stm32:

DIY Цифровое спортивное табло Дартс, Своими руками, Stm32, Arduino, Чип, Мат, Видео, Длиннопост

Само табло изготовили из куска ламината, на который наклеил собранные цифры, ардуину и блютус модуль. Спереди закрыли оргстеклом. И отдали в тестовую эксплуатацию.

DIY Цифровое спортивное табло Дартс, Своими руками, Stm32, Arduino, Чип, Мат, Видео, Длиннопост

Сразу же посыпались замечания и новые хотелки (ну это нормально, так как опытный образец). Нужно было добавить счет легов и указатель на текущего игрока, и по возможности, добавить поле для отображения имен игроков. Счет легов и стрелки были добавлены почти сразу же.

DIY Цифровое спортивное табло Дартс, Своими руками, Stm32, Arduino, Чип, Мат, Видео, Длиннопост

А вот для имен игроков пришлось повозиться и параллельно создать сразу второй опытный экземпляр.

DIY Цифровое спортивное табло Дартс, Своими руками, Stm32, Arduino, Чип, Мат, Видео, Длиннопост

Который сейчас вовсю трудится в дартс-клубе маленького закрытого города N (смотри первое фото)


Бюджет поделки:

лента ws2812b 1300 руб : http://али.pub/44gn4r

контроллер stm32 150 руб: http://али.pub/5biyxc

блютус HC-05 200 руб: http://али.pub/5cy1wf

блок питания 5В 250 руб.

ламинат, оргстекло, крепежи, тонировка - из всяких остатков.


ПС. Главный вдохновитель, Заказчик и член Дартс-клуба через пару недель будет защищать честь России на Чемпионате мира по Дартс в Лондоне. Пожелаем ему удачи.

Показать полностью 11 2
[моё] Дартс Своими руками Stm32 Arduino Чип Мат Видео Длиннопост
26
52
RamzessII
4 года назад

Одна голова хорошо, две лучше. Программирование микроконтроллеров⁠⁠

Всем привет. Вот уже чуть больше года я занимаюсь программированием микроконтроллеров. Начинал как и все школьники с ардуино а потом уже перешёл на чистые АВР. Скажу вам следующие придумывать и реализовывать свои проекты то ещё занятие. Так как времени этому уделяешь крайне мало.
Бывает прийдешь вечером с работы с мыслью что нибудь покодить а пока поел, залип в Ютубе уже и спать пора. Вообщем нужна была какая нибудь мотивация.
И вот я пишу этот пост. Тут хочу найти человека который тоже хочет более серьезно углубить свои познания в микроконтроллерах. Предлагаю изучать вместе. Как я себе это вижу: сидят два три чувака в дискорде и курят даташит на микросхему, паралельно пишут код и просто приятно общаются. Если среди читающих есть такие люди, прошу отписаться в комментах.
В идеале начать изучать стм32.
Спасибо за внимание)

Одна голова хорошо, две лучше. Программирование микроконтроллеров Микроконтроллеры, Программирование, Atmega, Stm32
Показать полностью 1
Микроконтроллеры Программирование Atmega Stm32
76
17
DeDLINe
DeDLINe
4 года назад

Моё первое знакомство с stm32⁠⁠

Доброго времени суток всем!
Решил начать освоение микроконтроллеров семейства stm32, да не с отладочных плат типо ардуины, а с "голого" камня.
Выбор пал на STM32F030* т.к. этот камень достаточно производительный для моих нужд, да и цена довольно приятная...
Первым делом сделал небольшую плату, чтобы удобнее было работать с МК. Подвёл питание через 1117, сделал отдельные выводы для прошивки и т.п.
Для написания прошивки (как же громко сказано ;) ) использовал фирменную среду разработки CubeMX.
В общем спустя пару часов лежит на столе платка, моргает светодиодом, на осциллографе красивый "сердечный" ритм, а у меня улыбка от уха до уха. Как будто узнал, что стал папой =)

[моё] Stm32 Микроконтроллеры Своими руками Без рейтинга Текст
43
4
DeDLINe
DeDLINe
4 года назад

Ищу помощи со схемой на микроконтроллере⁠⁠

Доброго времени суток!
Ищу кого-нибудь, кто поможет разобраться с микроконтроллерами семейства stm32.
Хочу реализовать небольшой проект, но т.к. ни разу не работал с микроконтроллерами (готовые схемы не в счёт), ищу того, кто поможет разобраться. Хотя бы в азах...
Желательно для связи ВК. (ID как ник тут)

[моё] Микроконтроллеры Stm32 Текст Без рейтинга
35
4125
ily2023
ily2023
4 года назад
Мото

Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео⁠⁠

Всем привет! Я давно увлекаюсь восстановлением старой техники, в основном мотоциклов и мопедов.

В 2019 году мною был куплен старый мотоцикл Днепр МТ-16 в состоянии "еду в чермет", но ещё на ходу и с документами.

Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мото, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Советская техника
Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мото, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Советская техника

Очень быстро в моей воспаленной голове родилась безумная идея сделать из этого мотоцикла проект, стоящий на стыке эпох и технологий, восстановить и оснастить мотоцикл инжектором, современной приборной панелью и светодиодной светотехникой. Так как я сам инженер-разработчик электроники для меня это не составило труда. Мотоцикл был полностью разобран, восстановлены все узлы и агрегаты, отпескоструены, а затем покрашены все детали. В перерывах между сборкой мотоцикла и работой я проектировал и воплощал в железе электронику и электрику мотоцикла.

Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мото, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Советская техника

Вся электроника разрабатывалась с учетом работы в жестких условиях (вибрации, влажность, перепады температур), выполнялся контроль качества пайки на микроскопе. Массивные компоненты приклеивались к плате, использовался силиконовый компаунд для изоляции от влаги и прочие решения, предупреждающие отказ. Все каналы связи, выходящие за рамки приборов развязывались оптически.


Электронный спидометр разместил в оригинальном корпусе спидометра СП102. Для индикации пробега удалось разместить OLED дисплей напротив "окошка" под оригинальный механический одометр. Спидометр на базе микроконтроллера STM32.

Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мото, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Советская техника
Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мото, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Советская техника
Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мото, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Советская техника
Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мото, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Советская техника

Бортовой компьютер, оснащенный CAN, считывателем RFID метки, фотодатчиком (для функций автоматического включения света/габаритов и подстройки яркости индикаторов на панели приборов) и управляющий всей электроникой мотоцикла, а также собирающий все данные с датчиков и переключателей, получающий по CAN всю телеметрию от ЭБУ инжектора. Прибор также создан на основе микроконтроллера STM. Для индикации - большой графический OLED дисплей.

Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мото, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Советская техника
Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мото, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Советская техника
Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мото, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Советская техника
Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мото, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Советская техника
Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мото, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Советская техника
Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мото, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Советская техника
Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мото, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Советская техника

Силовой блок (вместо реле) для управления всей силовой нагрузкой, такой как инжектор, ближний/дальний, гудок и т.д. Отсутствие механических частей и безупречная работа. Тут решил сэкономить, и плату вытравил в домашних условиях. Разумеется, после сборки все платы, включая эту были защищены от влаги специальным компаундом.

Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мото, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Советская техника
Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мото, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Советская техника
Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мото, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Советская техника

Тем временем, помимо разработки электроники, я собирал мотоцикл и изготавливал на него обвес. Вот, например, крепление канистры с топливом на коляску:

Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мото, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Советская техника
Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мото, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Советская техника

Приборная панель в сборе.

Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мото, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Советская техника
Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мото, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Советская техника

Также было решено разработать светодиодные платы (габариты, поворотники, стоп-сигналы) для установки их в стандартные плафоны мотоцикла. Просто вкрутить китайские светодиодные лампочки с алиэкспресс - не для меня. Мотоцикл получил полноценную светодиодную светотехнику с защитами от перегрева, стабилизацией тока, защитами от замыкания. Вся светотехника управляется от приборной панели с помощью цифрового сигнала. Головной свет - стандартная галогенная лампа H4, светодиоды ставить не стал, чтобы не слепить водителей.

Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мото, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Советская техника
Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мото, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Советская техника
Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мото, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Советская техника

Много часов пришлось провести для написания софта, и работы в этой части предстоит много.


Вот такая история одного мотоцикла и моего хобби. Всем спасибо, кто дочитал! Бонусом предлагаю посмотреть краткий обзор этого мотоцикла на моем ютуб-канале:

Показать полностью 24 1
[моё] Мото Днепр КМЗ Электроника Stm32 Самоделки Видео Длиннопост Технопрон Мотосезон Советская техника
338
14
AncientGoo
5 лет назад
Arduino & Pi

Нужен совет по настройке STM32F401 и USART в частности⁠⁠

Пытаюсь разобраться в программировании этого контроллера и при попытке настроить USART для приема/передачи данных возникла проблема:
Пытаюсь принять байт и после нажатия кнопки отправить его обратно, но на выходе получается совсем не то что ожидаю.


При отправке 0 должно вернуть 0, но возвращает вот это. В чем может быть проблема?


ASCII  BIN  DEC  HEX

Нужен совет по настройке STM32F401 и USART в частности Stm32, Си, Микроконтроллеры, Без рейтинга, Длиннопост

Подозрения падают на настройку baud rate, но вроде всё как в мануалах.

Полный код:#include "stm32f4xx.h"

#include "stm32f4xx_hal_gpio.h"

#include "stm32f4xx_hal_rcc.h"

#include "stm32f4xx_hal_cortex.h"

#include "stdint.h"

#include "math.h"


//define Internal RC frequencies

#define XTAL 16000000UL


//define busses prescalers

#define AHB_PRE 1

#define APB1_PRE 2

#define APB2_PRE 1

#define SysTicksClk 10000


//calculate peripheral frequencies

#define SYSCLK 84000000

#define AHB SYSCLK/AHB_PRE

#define APB1 AHB/APB1_PRE

#define APB1_TIM APB1*2

#define APB2 AHB/APB2_PRE

#define APB2_TIM APB2*1

#define SysTicks AHB/SysTicksClk

#define USART_BAUDRATE 19200

#define BUF_LEN 1


struct Data

{

char Msg[BUF_LEN];

} Message;


void USART2_IRQHandler(void)

{

if (!(USART2->SR & USART_SR_TXE))

{

if (Message.Msg[0] == (char)0x00)

GPIOA->ODR |= 1 << 1;

if (Message.Msg[0] == (char)0x01)

GPIOA->ODR |= 0 << 1;

}

if (USART2->SR & USART_SR_RXNE)

{

Message.Msg[0] = USART2->DR;

}}


int main()

{

RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN |

RCC_AHB1ENR_GPIOBEN;

GPIOA->MODER |= 1 << 1*2; //Set GPIOA pins output mode

GPIOB->MODER |= 0 << 0*2;

GPIOA->MODER |= 0xA0;

GPIOA->AFR[0] |= 0x7700;


RCC->APB1ENR |= RCC_APB1ENR_USART2EN;


USART2->CR1 |= USART_CR1_UE; //usart enable

USART2->CR1 |= USART_CR1_TE; //transmitter enable

USART2->CR1 |= USART_CR1_RE; //receiver enable


float div = (float)APB1 /(16*(float)USART_BAUDRATE);

int integer = APB1 / (16*USART_BAUDRATE);

float flo = (div - (float)integer)*16;

int floatt = round(flo);

USART2->BRR = (( integer << 4 ) + floatt);


NVIC_EnableIRQ(USART2_IRQn);

USART2->CR1 |= USART_CR1_TXEIE;

USART2->CR1 |= USART_CR1_RXNEIE;


int i;


while(1)

{

if (!(GPIOB->IDR & GPIO_IDR_ID0))

{

i = 1;

}

else

{

if(i == 1)

{

USART2->DR &= Message.Msg[0];

while(!(USART2->SR & USART_SR_TC));

i = 0;

}}}}


Сама схема:

Нужен совет по настройке STM32F401 и USART в частности Stm32, Си, Микроконтроллеры, Без рейтинга, Длиннопост
Показать полностью 1
[моё] Stm32 Си Микроконтроллеры Без рейтинга Длиннопост
26
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии