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

Головоломка. Болты и Гайки

Казуальные, Гиперказуальные, Головоломки

Играть

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

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

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

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

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

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

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

Stm32 + Программирование

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

Микроконтроллеры Электроника Arduino Своими руками IT Программист IT юмор Разработка Python Картинка с текстом Юмор Все
25 постов сначала свежее
78
3Dfsd2021
3Dfsd2021
2 года назад
TECHNO BROTHER

Как GhatGPT умеет общаться с микроконтроллерами⁠⁠

И меня не обошло сие новомодное поветрие. Нашел чат в телеграме с доступом к ChatGPT и стал думать: а что бы такое его спросить? Давайте сначала теста ради что-нибудь простенькое:

Как GhatGPT умеет общаться с микроконтроллерами Arduino, Эксперимент, Stm32, Си, Программирование, Микроконтроллеры, ChatGPT, Нейронные сети, Длиннопост

Потрясающе! Но может ли оно объяснить, что там в коде за что отвечает?

Как GhatGPT умеет общаться с микроконтроллерами Arduino, Эксперимент, Stm32, Си, Программирование, Микроконтроллеры, ChatGPT, Нейронные сети, Длиннопост

Обалдеть. Оно почти понимает. А вот интересно, оно умеет только стандартный Си?

Как GhatGPT умеет общаться с микроконтроллерами Arduino, Эксперимент, Stm32, Си, Программирование, Микроконтроллеры, ChatGPT, Нейронные сети, Длиннопост

Однако. Оно умеет под STM32, причем самым пионерским ардуиновским способом - считая такты процессора. Но, тем не менее, под SPL. Умеет ли оно использовать таймер?

Как GhatGPT умеет общаться с микроконтроллерами Arduino, Эксперимент, Stm32, Си, Программирование, Микроконтроллеры, ChatGPT, Нейронные сети, Длиннопост
Как GhatGPT умеет общаться с микроконтроллерами Arduino, Эксперимент, Stm32, Си, Программирование, Микроконтроллеры, ChatGPT, Нейронные сети, Длиннопост

Так, и что мы видим? Мы видим, что инициализировать таймер оно умеет. И с правильными значениями. Но в процедуре прерывания оно не использует! И вместо этого вводит дополнительную процедуру, считающую такты процессора.

Таймер же оно использует, чтобы сделать задержку в 1 секунду в главном цикле! Напоминает известный анекдот: как вскипятить пустой чайник? налить воду и поставить на огонь. а если в чайнике уже есть вода? Вылить и тем самым свести условия задачи к предыдущему :) Возможно, робот неправильно меня понял :)

Как GhatGPT умеет общаться с микроконтроллерами Arduino, Эксперимент, Stm32, Си, Программирование, Микроконтроллеры, ChatGPT, Нейронные сети, Длиннопост
Как GhatGPT умеет общаться с микроконтроллерами Arduino, Эксперимент, Stm32, Си, Программирование, Микроконтроллеры, ChatGPT, Нейронные сети, Длиннопост

Охренеть. Во-первых, используется совсем другой метод - через флаг, устанавливаемый в прерывании. В самом прерывании оно не захотело вставлять команду переключения выхода. Во-вторых, все-таки необходимо было конкретизировать.

Вердикт - человек пока что пишет программы под STM32 лучше этой штуки. Но эта штука пишет уже лучше ардуиновского пионера. Где-то и такой подход сойдет.

Показать полностью 7
[моё] Arduino Эксперимент Stm32 Си Программирование Микроконтроллеры ChatGPT Нейронные сети Длиннопост
14
11
krokodil111
2 года назад
Лига КИПиА

Продолжение поста «Вешайтесь embedded программисты. Мы за вами»⁠⁠1

Всеобщее повешение отменяется. Он начинает ленится как и все мы. Но полезное есть, его можно использовать чтобы план написания программы на типовые вещи не расписывать самому.

напиши программу для stm32f411ceu6. программа должна считывать с периодичностью раз в секунду ADC1 Ch1 и преобразовывать полученные значения в температуру. Шкала для температуры 5-100 градусов. Полученные значения выводить в uart1

К сожалению, я могу написать только общий алгоритм программы, поскольку требуется некоторая конкретика, такая как используемый АЦП и настройки UART. В дополнение к этому, необходимо будет настроить тактовый генератор для обеспечения правильной работы периферии.

Алгоритм программы:

1. Настроить порты GPIO для соединения АЦП и UART.

2. Настроить АЦП, установить нужный канал для измерения (Ch1).

3. Подготовить переменную для хранения преобразованного измерения.

4. Запустить бесконечный цикл:

5. Начать преобразование (ADC_StartConversion).

6. Дождаться окончания преобразования (ADC_WaitForConversion).

7. Получить значение измерения (ADC_GetConversionValue).

8. Преобразовать полученное значение с учетом калибровки АЦП и коэффициента преобразования в температуру.

9. Ограничить температуру по шкале 5-100.

10. Отправить температуру в UART (USART_SendData).

11. Задержать выполнение цикла на 1 секунду (например, с помощью функции delay).

5. Завершить программу.

Это общий алгоритм, который может варьироваться в зависимости от используемого АЦП и UART. Для конкретных настроек требуется обратиться к документации и исходному коду библиотек. Надеюсь, это поможет Вам начать разработку Вашей программы.

Показать полностью
[моё] ChatGPT Stm32 Программирование Длиннопост Ответ на пост Текст
11
36
krokodil111
2 года назад
Лига КИПиА

Вешайтесь embedded программисты. Мы за вами⁠⁠1

Прочитал тут про chatgpt.

Надо же блеснуть знаниями.

Все на скрине ниже.

Вешайтесь embedded программисты. Мы за вами ChatGPT, Stm32, Программирование, Длиннопост, Скриншот
Вешайтесь embedded программисты. Мы за вами ChatGPT, Stm32, Программирование, Длиннопост, Скриншот
Показать полностью 2
[моё] ChatGPT Stm32 Программирование Длиннопост Скриншот
65
31
Tirecs
Tirecs
2 года назад
Arduino & Pi

Stm32h735g-dk запуск экрана⁠⁠

Добрый день уважаемые пользователи. В руки попал набор разработки STM32H7 Discovery kit for STM32H735 MCUs. Прошу помощи разобраться как завести дисплей.

Stm32h735g-dk запуск экрана Программирование, Stm32, Электроника

Я относительный новичёк в плане освоения STMок, плавно перехожу на них с ардуино. Дрыгать портами через HAL, обрабатывать кнопку, работать с последовательным портом или SPI уже умею.
Тут же переферии гораздо больше, и хотелось бы всё это освоить. В первую очередь сенсорный экран с параллельным RGB интерфейсом, для которого в МК есть модуль LTDC. У меня есть общее понимание как он должен работать, но завести не получается.
Проект настраиваю в CubeIDE, хочется научиться закрашивать 1 пиксель, дальше я по идее разберусь сам. Если же получится прикрутить проект из TouchGFX designer, то вообще суппер.

Если кто-то готов объяснить и показать на примерах - буду очень благодарен.

Показать полностью
[моё] Программирование Stm32 Электроника
12
5
leshafree
2 года назад

Пасхалка в yandex⁠⁠

Пасхалка в yandex Яндекс, Пасхалка, Программирование, Stm32, C++, Юмор

Сегодня случайно обнаружил, что если в поисковой строке Яндекса (десктопная версия) ввести: stm32 (или C++) и нажать поиск, то внизу страницы ссылки перехода между страницами примут вот такой вид:

Пасхалка в yandex Яндекс, Пасхалка, Программирование, Stm32, C++, Юмор

Раньше сколько ни искал инфы на технические темы такого не замечал. С Atmel не работает. По моему забавно.

Показать полностью 1
Яндекс Пасхалка Программирование Stm32 C++ Юмор
3
72
mastersasha
mastersasha
4 года назад

Продолжение про самолет из потолочной плитки⁠⁠

Всем привет! Решил написать продолжение про самолёт из протолочки. Начало тут: https://pikabu.ru/story/gotovimsya_k_poletam_vo_vremya_covid19_8180292?utm_source=linkshare&utm_medium=sharing

Продолжение про самолет из потолочной плитки Самоделки, Своими руками, Моделизм, Электроника, Программирование, Микроконтроллеры, Радиоуправляемые модели, Из подручных средств, Arduino, Хобби, Stm32, Самолет, Радиоуправление, Схемотехника, Пайка, Конструирование, Хлам, Потолочная плитка, Видео, Длиннопост

Начну со схем.


Схема подключения приемника:

Продолжение про самолет из потолочной плитки Самоделки, Своими руками, Моделизм, Электроника, Программирование, Микроконтроллеры, Радиоуправляемые модели, Из подручных средств, Arduino, Хобби, Stm32, Самолет, Радиоуправление, Схемотехника, Пайка, Конструирование, Хлам, Потолочная плитка, Видео, Длиннопост

Здесь к blue pill подключается радиомодуль, контроллер двигателя и две сервомашинки. Аккумулятор подключается к контроллеру управления двигателя, на нем стоит стабилизатор на 5 вольт, с которого берется питание для управляющей электроники. Сервомашинки также запитываются с этих 5 вольт. Радиомодуль питается от +3,3 вольт со стабилизатора blue pill. Здесь имеется делитель напряжения, который подключен к аккумулятору, для контроля его напряжения. Информация  шлется на пульт управления.


Сам приемник:

Продолжение про самолет из потолочной плитки Самоделки, Своими руками, Моделизм, Электроника, Программирование, Микроконтроллеры, Радиоуправляемые модели, Из подручных средств, Arduino, Хобби, Stm32, Самолет, Радиоуправление, Схемотехника, Пайка, Конструирование, Хлам, Потолочная плитка, Видео, Длиннопост

Программа для приемника: тут

Схема подключения пульта управления:

Продолжение про самолет из потолочной плитки Самоделки, Своими руками, Моделизм, Электроника, Программирование, Микроконтроллеры, Радиоуправляемые модели, Из подручных средств, Arduino, Хобби, Stm32, Самолет, Радиоуправление, Схемотехника, Пайка, Конструирование, Хлам, Потолочная плитка, Видео, Длиннопост

Здесь чуть побольше компонентов. Аккумулятор подключается на порт +5 вольт blue pill. Для зарядки аккумулятора к нему подключен модуль зарядки. С blue pill при помощи 3,3 вольт запитывется экран, радиомодуль, джойстики. Потенциометры джойстиков подключены к каналам АЦП blue pill, их тактовые кнопки и остальные две подключены на остальные порты в режиме вход.


Пульт управления внутри:

Продолжение про самолет из потолочной плитки Самоделки, Своими руками, Моделизм, Электроника, Программирование, Микроконтроллеры, Радиоуправляемые модели, Из подручных средств, Arduino, Хобби, Stm32, Самолет, Радиоуправление, Схемотехника, Пайка, Конструирование, Хлам, Потолочная плитка, Видео, Длиннопост

Программа для пульта управления: тут


Пульт в собранном виде:

Продолжение про самолет из потолочной плитки Самоделки, Своими руками, Моделизм, Электроника, Программирование, Микроконтроллеры, Радиоуправляемые модели, Из подручных средств, Arduino, Хобби, Stm32, Самолет, Радиоуправление, Схемотехника, Пайка, Конструирование, Хлам, Потолочная плитка, Видео, Длиннопост

В меню пульта 4 строки: 1 строка - это режим полета, во 2 строке просто отображаются данные АЦП и т.д. в 3 строке настраиваются чувствительность рулей и субтример (начальное положение элевонов), в 4 строке ничего нет (можно добавить).

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

При отключении пульта во время работы приемника, через 2 секунды отключается двигатель.

Расскомментировав эти строчки в main.c (до надпсиси END OF DEBUG_RC OUT):

Продолжение про самолет из потолочной плитки Самоделки, Своими руками, Моделизм, Электроника, Программирование, Микроконтроллеры, Радиоуправляемые модели, Из подручных средств, Arduino, Хобби, Stm32, Самолет, Радиоуправление, Схемотехника, Пайка, Конструирование, Хлам, Потолочная плитка, Видео, Длиннопост

пульт можно подключить по USB к ПК при помощи любой Terminal программы (я пользовался CoolTerm), в которой нужно выбрать COM порт и присоединится к blue pill:

Продолжение про самолет из потолочной плитки Самоделки, Своими руками, Моделизм, Электроника, Программирование, Микроконтроллеры, Радиоуправляемые модели, Из подручных средств, Arduino, Хобби, Stm32, Самолет, Радиоуправление, Схемотехника, Пайка, Конструирование, Хлам, Потолочная плитка, Видео, Длиннопост

и в окне получить информацию о подключении радиомодуля:

Продолжение про самолет из потолочной плитки Самоделки, Своими руками, Моделизм, Электроника, Программирование, Микроконтроллеры, Радиоуправляемые модели, Из подручных средств, Arduino, Хобби, Stm32, Самолет, Радиоуправление, Схемотехника, Пайка, Конструирование, Хлам, Потолочная плитка, Видео, Длиннопост

Считывая установочные данные, записанные в регистры радиомодуля, можно убедиться, что модуль работает и данные совпадают с установленными. В данном случае я получил статус работы радиомодуля, его мощность передачи (максимальная), номер канала (11), скорость передачи (1 Мбит в секунду), размер передаваемого пакета (32 байта - максимальный) и количество бит контрольной суммы (в моем случае 16 бит). Если модуль не подключен или неисправен в терминал выводит такое сообщение:

Продолжение про самолет из потолочной плитки Самоделки, Своими руками, Моделизм, Электроника, Программирование, Микроконтроллеры, Радиоуправляемые модели, Из подручных средств, Arduino, Хобби, Stm32, Самолет, Радиоуправление, Схемотехника, Пайка, Конструирование, Хлам, Потолочная плитка, Видео, Длиннопост

Зайдя сюда в подменю Settings:

Продолжение про самолет из потолочной плитки Самоделки, Своими руками, Моделизм, Электроника, Программирование, Микроконтроллеры, Радиоуправляемые модели, Из подручных средств, Arduino, Хобби, Stm32, Самолет, Радиоуправление, Схемотехника, Пайка, Конструирование, Хлам, Потолочная плитка, Видео, Длиннопост

в терминал посыпятся такие строчки:

Продолжение про самолет из потолочной плитки Самоделки, Своими руками, Моделизм, Электроника, Программирование, Микроконтроллеры, Радиоуправляемые модели, Из подручных средств, Arduino, Хобби, Stm32, Самолет, Радиоуправление, Схемотехника, Пайка, Конструирование, Хлам, Потолочная плитка, Видео, Длиннопост

Здесь данные в таком порядке: X1: значение c АЦП правого джойстика по вертикали, Y1: значение c АЦП правого джойстика по горизонтали, значение с АЦП левого джойстика, которым управляется двигатель, значения только по вертикали, далее напряжения аккумулятора пульта, напряжения аккумулятора на приемнике, значение кнопки правого джойстика, значение кнопки левого джойстика, значения кнопок что находятся справа на пульте, субтример, чувствительность 1 и 2 (2 не используется), а также статус связи с приемником.


Как видно сигнала нет, так как примник был отключен. Также я зажал кнопку правого джойстика и просто левую кнопку, они выдают "1".


Включаю приемник и перевожу правый джойстик в правый верхний угол:

Продолжение про самолет из потолочной плитки Самоделки, Своими руками, Моделизм, Электроника, Программирование, Микроконтроллеры, Радиоуправляемые модели, Из подручных средств, Arduino, Хобби, Stm32, Самолет, Радиоуправление, Схемотехника, Пайка, Конструирование, Хлам, Потолочная плитка, Видео, Длиннопост

получаю сообщение что сигнал есть, а данные джойстика показывают максимальные значения.

АЦП на Blue Pill имеет разрешение 12 бит, максимальное значение котрого 4095, но в терминале видно, что оно 255, все потому что я 12 бит перевел в 8 бит (1 байт), так как один элемент массива передоваемого пакета равен 1 байту, чтобы одним байтом можно было слать значения одной из осей джойстика.


Аналогичным образом можно подключить приемник к ПК, узнать статус радиомодуля и получаемые данные с пульта, в main.c расскомментировав эти строчки:

Продолжение про самолет из потолочной плитки Самоделки, Своими руками, Моделизм, Электроника, Программирование, Микроконтроллеры, Радиоуправляемые модели, Из подручных средств, Arduino, Хобби, Stm32, Самолет, Радиоуправление, Схемотехника, Пайка, Конструирование, Хлам, Потолочная плитка, Видео, Длиннопост

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


Крыло сложно в управлении (по-моему мнению) по сравнению с моделями, имеющими хвост со стабилизатором и килем.


И наконец, то, чего мы так долго ждали!!! Видео полетов. К сожалению, видео очень короткое, так как полет был недолгий.

В ВИДЕО ПРИСУТСТВУЕТ ПАРУ ПЛОХИХ СЛОВ!

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

Самолёт полетел вполне уверенно, но что-то пошло не так, если честно, я не понял в чем причина, может это из-за джойстиков или все-таки конструкция крыла. Я думаю, что на этом я не остановлюсь и попробую как-нибудь еще, пересмотрев ошибки.


Всем спасибо!


Ссылки на товары которые я использовал:

Отладочная плата Blue Pill

Радиомодуль

Программатор St-Link

Набор из контроллера, двигателя винта и сервомашинок

Джойстики

Стики от FlySky

Модуль зарядки

Макетная плата

Экран от Nokia 5110

Тактовые кнопки

Аккумулятор

Показать полностью 14 1
[моё] Самоделки Своими руками Моделизм Электроника Программирование Микроконтроллеры Радиоуправляемые модели Из подручных средств Arduino Хобби Stm32 Самолет Радиоуправление Схемотехника Пайка Конструирование Хлам Потолочная плитка Видео Длиннопост
24
7
StormVE
StormVE
4 года назад

Шкатулка с электронным сердцем⁠⁠

Приветствую.
Решил тут немного сувенирку попробовать 🤷‍♂️
В процессе разработки имеется вот такая шкатулка из фанеры порезанная на лазере, и имеющая в себе электронное сердце, которое включается при открытии крышки, причём не просто горит, а делает всякие выкрутасы. Питается оно от акб, который можно зарядить через Micro usb разъём, который имеется на задней стенке шкатулки.
Мог бы рассказать с какими трудностями сталкивался, как их решал, и какие на данный момент имеются. Да и в целом небольшую историю как я к этому пришёл.
Интересны вообще такие вещи тут?

И немного фоток для затравки 🙃

Шкатулка с электронным сердцем Шкатулка, Своими руками, Электроника, Stm32, Программирование, Подарки, Сердце, Длиннопост
Шкатулка с электронным сердцем Шкатулка, Своими руками, Электроника, Stm32, Программирование, Подарки, Сердце, Длиннопост
Шкатулка с электронным сердцем Шкатулка, Своими руками, Электроника, Stm32, Программирование, Подарки, Сердце, Длиннопост
Шкатулка с электронным сердцем Шкатулка, Своими руками, Электроника, Stm32, Программирование, Подарки, Сердце, Длиннопост
Шкатулка с электронным сердцем Шкатулка, Своими руками, Электроника, Stm32, Программирование, Подарки, Сердце, Длиннопост
Шкатулка с электронным сердцем Шкатулка, Своими руками, Электроника, Stm32, Программирование, Подарки, Сердце, Длиннопост
Шкатулка с электронным сердцем Шкатулка, Своими руками, Электроника, Stm32, Программирование, Подарки, Сердце, Длиннопост
Шкатулка с электронным сердцем Шкатулка, Своими руками, Электроника, Stm32, Программирование, Подарки, Сердце, Длиннопост
Показать полностью 8
[моё] Шкатулка Своими руками Электроника Stm32 Программирование Подарки Сердце Длиннопост
8
Партнёрский материал Реклама
specials
specials

Сколько нужно времени, чтобы уложить теплый пол?⁠⁠

Точно не скажем, но в нашем проекте с этим можно справиться буквально за минуту одной левой!

Попробовать

Ремонт Теплый пол Текст
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
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии