Библиотеки для STM32 вопросы абстракции и оптимизации кода. Коллекция STM32Snippets.

Sdílet
Vložit
  • čas přidán 23. 10. 2020
  • Небольшое дополнение к ранее опубликованному видео о библиотеках для микроконтроллеров STM32. В предыдущем видео рассматривались особенности применения библиотек CMSIS, SPL, HAL, LL. В данном видео разбирается коллекция оптимизированных фрагментов кода STM32Snippets.
    CMSIS, SPL, LL, HAL обзор особенностей наиболее популярных библиотек для микроконтроллеров STM32 - • CMSIS, SPL, LL, HAL об...
    Канал в телеграмм - t.me/vladimir_medintsev
    Канал Яндекс.Дзен - zen.yandex.ru/vladimir_medintsev
    Канал на RuTube - rutube.ru/channel/1797552/
    Канал на CZcams - / vladimirmedintsev
    ------------------------------------------
    Если вы хотите поддержать автора канала номер карты Сбер:
    2202-2023-2480-4008
    ------------------------------------------
  • Věda a technologie

Komentáře • 101

  • @astarkmn
    @astarkmn Před 3 lety +6

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

  • @vernnms78
    @vernnms78 Před 3 lety +7

    Вообще, не менее половины всей работы обычно "курение" всякой доккментации. В этом материал крайне полезен. Спасибо!

  • @user-je8oz6lh6w
    @user-je8oz6lh6w Před 3 lety +10

    Спасибо. Действительно бесценно. Ещё бы про микропотребление😊

    • @wirtdonners4212
      @wirtdonners4212 Před 3 lety

      Над ним нужно биться, биться, биться и ещё раз биться... Одним кодом это не решается, к сожалению.

    • @user-je8oz6lh6w
      @user-je8oz6lh6w Před 3 lety

      @@wirtdonners4212 Я это понимаю. С точки зрения оптимизации кода и уменьшения количества операций. Мне бы кто нибудь подсказал бы как его правильно усыпить и вовремя разбудить во FreeRTOS

  • @user-qk1vf9cg9i
    @user-qk1vf9cg9i Před 3 lety

    Владимир, огромное спасибо!! Это невероятно полезный набор кода, чтобы абстрагироваться от закрытой HAL и более досконально понять работу контроллера. Без Вас даже и не мог представить себе, что в недрах ST есть подобное.Спасибо!

  • @cybercube7915
    @cybercube7915 Před 3 lety +5

    Спасибо что радуете действительно полезной информацией

  • @dobroliub1908
    @dobroliub1908 Před 3 lety +2

    Жму Вам руку)) Было весьма занятно !!! Реально не хватало таких вот примеров именно на регистрах для лучшего понимания, да еще и с коментариями!

  • @TruVi-13
    @TruVi-13 Před 3 lety +4

    В первую очередь огромное спасибо за материал! Работаем с STM32 с 2011 года, из-за текущих дел не заметили, точнее сказать не обратили внимание на сниппеты. В 2011 году решились уйти с регистровой модели на новый уровень абстракции SPL. Круто, быстро, переносимо.... ну, ну. Непонятно, неоптимально, приходится всё равно подсматривать как это сделано в библиотеке + понимание регистров никто не отменял. Иногда складывается ощущение двойной работы. Ну да ладно, десятки проектов сделаны. И вот SPL не поддерживается в новых МК.... Приходится иметь две среды разработки. Дальше HAL, да ну, уже не модно! Сейчас LL, потом опять перестанут поддерживать..... В команде люди меняются, старые проекты очень сложно поддерживать на SPL. Было бы хорошо сразу ST продвигать сниппеты, и не менять концепцию каждые 5 лет.... Эмоционально высказался. Просто столько "пустого" времени потеряли на изучение актуальных на данный момент времени библиотек, с которыми мучаемся спустя несколько лет. Может быть кому поможет это высказывание при выборе долгосрочной концепции по инструментам разработки на МК.

    • @user-qk1vf9cg9i
      @user-qk1vf9cg9i Před 3 lety

      Очень точно все написали!

    • @andreyisupov5797
      @andreyisupov5797 Před 3 lety

      Были б снипеты для stm8. Не пилил бы велосипеды😁

  • @asurahan
    @asurahan Před 3 lety +3

    век живи век учись... дурак помрешь.
    я точно не знал про сие чудо. благодарю!

  • @andreyisupov5797
    @andreyisupov5797 Před 3 lety

    Спасибо. Теперь всё-таки достану свою stm32😂, а то запылилась😂

  • @Shiover
    @Shiover Před 3 lety +4

    Вот спасибо! Давно искал что-то простое и с коммертами.

  • @clora1136
    @clora1136 Před 3 lety +1

    Вы как всегда спаситель моего времени).

  • @BB-ti9bf
    @BB-ti9bf Před 3 lety +1

    Я уж с год как узнал об этом, но совершенно случайно набрёл. Думаю вы многим сейчас покажете очередную годноту

    • @VladimirMedintsev
      @VladimirMedintsev  Před 3 lety

      Так то вы просто не знаете сколько такого ещё в закромах имеется.

  • @user-bn7he3rs5s
    @user-bn7he3rs5s Před 3 lety +2

    Супер! Весьма признателен! вот прямо сходу нашёл полезный пример. Правда у меня камень другой, но это мало роялит. В качестве примера очень полезная коллекция!

    • @andrewdronsson9028
      @andrewdronsson9028 Před 3 lety

      Однако хочется готовенького, чтобы только подключать к своим проектам без переписывания. Может быть "господь услышит наши молитвы"... :-)

  • @Sergey_Evdokimenko
    @Sergey_Evdokimenko Před 3 lety

    это просто комментарий для поддержки канала и его автора
    спасибо за полезный ролик

  • @pendulum3836
    @pendulum3836 Před 3 lety +1

    Огромное спасибо!

  • @ALCohol-qu7ib
    @ALCohol-qu7ib Před 3 lety +1

    Супер! Я как раз и юзаю эти контроллеры, вернее начал их использовать...

  • @babursapayev188
    @babursapayev188 Před 3 lety +5

    Огромное спасиба вам. Вы очен хорошо обйисняете. Я был б очен рад если вы снимали видео уроки. Если ваши уроки были б в Удемы хотел купит одтудо. ( Я из Турцы [ Turkey ] по етому не умеыу писат хорошо на руском, но понимаю). :)

    • @VladimirMedintsev
      @VladimirMedintsev  Před 3 lety +1

      Спасибо Вам огромное. Приятно что смотрите из Турции.

    • @VladimirMedintsev
      @VladimirMedintsev  Před 3 lety +3

      Вот выучу язык и поеду жить в Турцию.

    • @andrewdronsson9028
      @andrewdronsson9028 Před 3 lety

      @@VladimirMedintsev Я пробовал. Всё забыл моментально, разве что кроме "тэшеккюр(лер)". :-)

    • @babursapayev188
      @babursapayev188 Před 3 lety

      @@VladimirMedintsev I will wait to you in Airport 😁

    • @VladimirMedintsev
      @VladimirMedintsev  Před 3 lety

      Thanks a lot.

  • @user_user_320
    @user_user_320 Před 3 lety +1

    Круто, спасибо! Не знал)
    Будем курить примеры и мануалы))

  • @leoned1797
    @leoned1797 Před 3 lety +1

    Спасибо.

  • @user-jl7et8gx5u
    @user-jl7et8gx5u Před 3 lety +1

    Спасибо

  • @Nidvoraich
    @Nidvoraich Před 3 lety +1

    Не знал, спасибо!

  • @bubuii
    @bubuii Před 3 lety +1

    класс

  • @AlexandrZverev
    @AlexandrZverev Před 3 lety +2

    Спасибо! Не понимал, как можно писать для F0 не на регистрах. И вот подтверждение, примеры кода, которых так не хватало для понимания того, как видит производитель программирование нулевых серий.

  • @bul2012
    @bul2012 Před 3 lety +1

    Это реально учебник в, так сказать, специфичной форме представления

    • @bul2012
      @bul2012 Před 3 lety

      Сейчас смотрю, комментариев больше самого кода

    • @VladimirMedintsev
      @VladimirMedintsev  Před 3 lety

      Так это же чудесно.

  • @andrewdronsson9028
    @andrewdronsson9028 Před 3 lety

    Эх, кабы лавали такие же "библиотеки" и для других серий... Некогда самому всё это переделывать под свои МК. Всё равно спасибо за информацию.

  • @arakeldesign
    @arakeldesign Před 3 lety +1

    Спасибо за инфу. Ещё бы подвезли поддержку G0, вообще цены не было бы.

  • @avi-crakhome2524
    @avi-crakhome2524 Před 3 lety

    Хороший набор примеров, подожду для F7.

    • @VladimirMedintsev
      @VladimirMedintsev  Před 3 lety

      Уже не будет. Этому набору 5 лет. Просто как-то не думал что людям это надо.

    • @avi-crakhome2524
      @avi-crakhome2524 Před 3 lety +1

      @@VladimirMedintsev Жаль, я в своё время потратил много вечеров в обработке ошибок i2c F7 при работе с активной нагрузкой (мастер||слейв). И до сих пор не уверен в правильности всех решений. И да, примеры от st есть, но либо слейв, либо мастер.

    • @VladimirMedintsev
      @VladimirMedintsev  Před 3 lety +1

      Да эти хитрецы далеко не на все примеры дают. Причем вот по странному стечению обстоятельств если периферия полностью понятна то и примеров много, а на спорные вещи примеров нет.

  • @Ironstonehiphop
    @Ironstonehiphop Před 3 lety

    не то что не знал, а уже как 2 года использую

  • @MaChEtE-yn5cm
    @MaChEtE-yn5cm Před 3 lety +7

    как вы раньше не посмели рассказать от сниппетсах ! преступление ! я пол года назад начал изучать стм по урокам народ стрим (в некотором роде отличные уроки, но иногда не хватает пояснений и комментариев), до этого занимался на авр и делал достаточно сложные проекты, потом авр перестал удовлетворят требованиям по производительности и возможностям и решил перейти на стм. Начал писать свой код под стм с использованием ХАЛ по средствам стм куба и кеила, дошел до определенного уровня и столкнулся с проблемой глючности ХАЛ и полного непонимания всех процессов в коде,к примеру, некоторые элементы кода из хал использовали для разных целей одни и те же регистры таймеров и портов, что приводило к неправильной последовательности записи в регистр, к ложным поднятиям или опусканиям некоторых важных флагов и по итогу контроллер зависал. Когда решил разобраться что не так, не смог, тк столкнулся с запутанной паутиной и нелогичностью работы с регистрами в хал. решил сам освоить кмсис и уйти от хал,спл и прочего, так сказать, полез в пекло, но не смог осилить. не хватало понятных примеров с описаниями и комментариями, сразу навалился огромный ком неструктурированной информации, подкачало и слабое знание работы и логики регистров в стм, курение референс мануалов мало что давало без примеров, а долбиться головой о стол с кучей бумаг надоело, решил забросить изучение стм так нормально и не начав. А сейчас появилось 2 дыхание, с таким мощнейшим учебным материалом под силу любая задача. Спасибо автору за просвещение !

  • @Michael_Kaa
    @Michael_Kaa Před 3 lety +2

    Спасибо. Надо пошерстить сайт СТ на предмет подобных кладов, может есть что то еще.

    • @VladimirMedintsev
      @VladimirMedintsev  Před 3 lety +5

      Чтобы сильно пошерстить надо знать где шерстить. Я о наиболее интересном расскажу в ближайших видео.

  • @Novator_Progressive
    @Novator_Progressive Před 3 měsíci

    ST не даёт скачать примеры (даже с VPN и учёткой). У вас случаем не остались эти архивчики?

  • @user-pp2hz7ic7h
    @user-pp2hz7ic7h Před 3 lety

    Здравствуйте будет видно про MBED OS ?

    • @VladimirMedintsev
      @VladimirMedintsev  Před 3 lety

      Отдельного видео про MbedOS не будет. Я уже неоднократно об этом говорил.

  • @TheBeroin
    @TheBeroin Před 3 lety

    Недавно открыл для себя libopencm3, очень даже зашло. А всё началось с того что нашёл проект USB-3xUART который был написан на этих библиотеках, Он не собирался видимо писался на старой версии, пришлось переписать немного) А SPL юзаю под stm8 переписанную под SDCC.

    • @VladimirMedintsev
      @VladimirMedintsev  Před 3 lety

      Ну libopencm3 только под М3 и как бы устарела безнадежно. В этом плане ее как-то изучать это на 10 лет назад откатываться. Сейчас прекрасно LL перекрывает и SPL и libopen. Хотя хозяин барин.

    • @TheBeroin
      @TheBeroin Před 3 lety +1

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

  • @user-dh2gs1wj1h
    @user-dh2gs1wj1h Před 3 lety

    Подскажите а на HAL такие примеры есть?

    • @VladimirMedintsev
      @VladimirMedintsev  Před 3 lety

      Десятки примеров для HAL устанавливаются вместе с кубом и доступны в нем же.

  • @cybercube7915
    @cybercube7915 Před 3 lety

    Я может не напишу чего нового но вдруг кто не знает что в директории keil лежат файлы справок chm для stm32f10x в нем есть примеры на spl которая по сути простейшая обертка cmsis

  • @julijaku3020
    @julijaku3020 Před 3 lety

    Владимир
    Я чайник
    Что мне нужно смотреть=учить , чтобы построить устройство записывающее - напряжение, ток, время работы и затем чтобы передавало в интернет и удалённо можно было бы смотреть графики соответственно сколько работало при каком напряжении какой ток потребляло.
    Большое спасибо за ваши старания для чайников 😃👍

    • @VladimirMedintsev
      @VladimirMedintsev  Před 3 lety

      В вашем случае проще купить такой прибор.

    • @julijaku3020
      @julijaku3020 Před 3 lety

      @@VladimirMedintsev
      А какой это должен быть ? Как называется ? Мне не приходит в мозг что в поисковике писать 😐

    • @VladimirMedintsev
      @VladimirMedintsev  Před 3 lety

      Ну вот из дорогих Socomec Diris A40. Но есть и у Шнайдера хорошие приборы. Но дирис я часто использую он просто шикарен. И к нему есть web интерфейс. Там такая аналитика аж закачаться можно.

    • @julijaku3020
      @julijaku3020 Před 3 lety

      @@VladimirMedintsev
      Благодарю.😍
      Только походу это не совсем то
      Надо так чтобы без экрана(только электроника) и возможность подключить для контроля много устройств(скажем 10 моторов и их контроль V . A . Температура. Время работы ) далее отправка в инет.(сервер) . Далее оператор смотрит графики с тысяч- миллионов таких контроллеров.
      И да действительно дороговато- для масштабирования

    • @VladimirMedintsev
      @VladimirMedintsev  Před 3 lety

      Напишите ТЗ, закажите, вам все изготовят.

  • @ibrag2012
    @ibrag2012 Před 3 lety +2

    У мене тільки xF030: краще за ардуїнки а ще і значно дешевше, дякую!

  • @romanarestov8651
    @romanarestov8651 Před 3 lety +5

    А что собственно сложного писать на CMSIS без HAL и LL? Начинающим и нужно разбираться с CMSIS, иначе это путь в никуда.

  • @gordonfreeman1894
    @gordonfreeman1894 Před 3 lety

    HAL + CMSIS с регистрами. А как же LL? Это ж "золотая середина"!
    Ваше мнение?

    • @VladimirMedintsev
      @VladimirMedintsev  Před 3 lety

      Если вопрос ко мне, то есть специальный ролик про CMSIS, HAL, LL, в котором я рассматриваю все эти библиотеки.

  • @Techn0man1ac
    @Techn0man1ac Před 3 lety

    А как насчёт STM8?

    • @VladimirMedintsev
      @VladimirMedintsev  Před 3 lety

      Честно говоря я не работаю с STM8 и не преподаю их на курсах, по этой причине я и библиотеки для этой линейки МК не рассматриваю.

  • @symbisoftblog6102
    @symbisoftblog6102 Před 3 lety

    По поводу абстракции
    А почему не mbed os? Она таки начала помогать мне перескочить ардуино.

    • @VladimirMedintsev
      @VladimirMedintsev  Před 3 lety

      Ну хотя бы по той причине, что MbedOS не абстракция. В контексте STM32 абстракции это LL, HAL и т.п. А MbedOS это операционная система. Не самая лучшая, но операционная.

    • @symbisoftblog6102
      @symbisoftblog6102 Před 3 lety

      @@VladimirMedintsev было бы интересно узнать почему она такая себе? Или это в контексте тру СТМ32 разработки? Хотя чую я, что путаю что-то

    • @VladimirMedintsev
      @VladimirMedintsev  Před 3 lety

      Да я уже сотню раз отвечал на этот вопрос. Семейство микроконтроллеров STM32 динамично развивается и сложность растет. MbedOS при этом охватывает не все серии STM и не имеет какой-либо сертификации кроме Thread. Есть более интересные операционные системы. Сильно более интересные, но из-за рекламы новички ведутся на MbedOS. Спорить тут нет смысла пусть себе там развлекаются.
      И дело тут по большей части не в тру разработке. Просто по мере роста опыта надоедает возиться с инструментами не сильно удовлетворяющими вашим возросшим потребностям. А нужно будет простота и надёжность. Ну иными словами вы по мере роста опыта сами упретесь в ряд косяков.

  • @Foomichoff
    @Foomichoff Před 3 lety

    Здравствуйте, пишете ли вы проекты на заказ, если да, то как связаться?

    • @VladimirMedintsev
      @VladimirMedintsev  Před 3 lety

      Да, пишем. Электронная почта в описании канала.

  • @GPPSoft
    @GPPSoft Před 3 lety

    Когда уже вторая часть обучающего видео по STM? ^))

    • @VladimirMedintsev
      @VladimirMedintsev  Před 3 lety +1

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

    • @GPPSoft
      @GPPSoft Před 3 lety

      @@VladimirMedintsev Очень понравился первый ролик. В следующем ожидал про выбор тактирования и т.д. Настройка перефирии. Совсем непонятна тема тактрования в Cube. Заранее спасибо!

    • @VladimirMedintsev
      @VladimirMedintsev  Před 3 lety +1

      @@GPPSoft В описании канала сказано, что я не делаю какого либо рода уроки. Это просто блог.

    • @GPPSoft
      @GPPSoft Před 3 lety

      @@VladimirMedintsev Хороший блог!👍 Спасибо за ответ!😁

  • @FastChargeIsFuture
    @FastChargeIsFuture Před 3 lety +4

    "CMSIS для начинающего слишком сложно." Как-то странно получается, в начале сложно, а потом еще сложнее, реализованные проекты, привычка. Так люди и зависают в состоянии вечного начинающего.

    • @VladimirMedintsev
      @VladimirMedintsev  Před 3 lety +6

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

    • @olegpetroff6186
      @olegpetroff6186 Před 3 lety +2

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

    • @andrewdronsson9028
      @andrewdronsson9028 Před 3 lety

      @@VladimirMedintsev А некогда вечно начинать. Надо продукт давать. А то на работе - сначала CMSIS, только вроде освоил - а вот теперь будет HAL... Ну и, конечно, FreeRTOS, куда ж без неё, радимай... хотя я и без FreeRTOSа неплохо обходился.

  • @easystm6865
    @easystm6865 Před 3 lety

    А примеров с usb нет там?

  • @user-sj1nu7bx3q
    @user-sj1nu7bx3q Před 3 lety +1

    Как бы не понял восхищения автора. Эти микропримеры появились у ST во времена как бы так сказать безвременья. STL уже показало свою неполноту и частичную ущербность, а HAL еще не было. И в общем при невозможности исчерпать флешу и исполнении большинства кода этих примеров один раз при инициализации периферии - не тратьте свое время разраба. Используйте LL, обертывая его в нормальный свой код драйверов на C++.

    • @user-sj1nu7bx3q
      @user-sj1nu7bx3q Před 3 lety

      @@kokotmkokot4926 И?... Чем то что я написал не относится на F0? Уж все поверено давно продакшеном на STM32F030F4, гляньте объем оперативы, поднимается 3 задачи на FreeRTOS легко и дрова на си-пи-пи, обработка в тасках. Я ж не об том написал, что ОПТИМИЗИРОВАННОГО. Я ж об том, что можно и вернуться к пропогандированию кода типа АЦП->РегистрУправленияАЦП = 0x3A03. И радоваться скорости исполнения. Но это выполнится один раз при ините АЦП а дальше будете вспоминать что этот код побитно значит. Не там оптимизируете. F0 - в работу берем iq-математику вместо флотов, и т.д., вот это оптимизация :-)))

  • @JingoBo
    @JingoBo Před 3 lety +3

    Мне не понравилось две вещи. 1. Почему пишут __INLINE, могу поспорить что этот макрос разворачивается в static inline (последний модификтор можно не писать), смысл в макросе не вижу, неужели он может разворачиваться как то иначе, так же все что с суффиксом __ это резерв для компилятора. 2. Везде многострочные комментарии. Это же так не удобно. Писать в таком стиле оправданно только для C89 что на сегодняшний день бред. Складывается ощушение что писали люди хорошо знающие платформу, но в программировании невежды.

    • @VladimirMedintsev
      @VladimirMedintsev  Před 3 lety +3

      Невежды в программировании. Я просто в осадок выпал. Ну какое же надо иметь самомнение чтобы так вот о коде команды разработчиков говорить. Слава Господу они не узнают.

    • @JingoBo
      @JingoBo Před 3 lety +3

      @@VladimirMedintsev я писал выше лишь про то, что всё должно быть оправданно и инструмент(язык) надо хзнать, тем более если это референсные примеры. Многие программисты (схемотехники) в embedded думают что они программисты.

    • @BesitzeRuf
      @BesitzeRuf Před 3 lety +2

      макрос разворачивается в то, что им определено. Нужен он для того, что это МАКРОС, и для компиляторов короые не знают что такое static, inline можно этот макрос переназначить или отключить.... Еще для генерации кода через doxygen полезно, так как у него свой особый препроцессор. Если вы задаетесь такими вопросами, это может означать только одно - вы чего-то не знаете. Пишут в таком стиле не столько для C89 а для misra, keil, iar, и т.п.

    • @FastChargeIsFuture
      @FastChargeIsFuture Před 3 lety +1

      Многострочное комментарии реально раздражают!

    • @JingoBo
      @JingoBo Před 3 lety

      @@BesitzeRuf а какой компилятор не знает что такое static?