CMSIS, SPL, LL, HAL обзор особенностей наиболее популярных библиотек для микроконтроллеров STM32.

Поділитися
Вставка
  • Опубліковано 25 кві 2020
  • Детальный рассказ об особенностях и методах работы с популярными библиотеками для микроконтроллеров STM32. CMSIS, SPL, HAL.
    Рассказывается об особенностях построения кода, доступности документации и личном опыте автора.
    01:20 - библиотека CMSIS
    19:26 - библиотека SPL
    28:40 - библиотеки LL и HAL.
    Отладочные платы с STM32:
    s.click.aliexpress.com/e/_A2IVXm
    s.click.aliexpress.com/e/_AnYSDe
    Канал в телеграмм - t.me/vladimir_medintsev
    Канал Яндекс.Дзен - zen.yandex.ru/vladimir_medintsev
    Канал на RuTube - rutube.ru/channel/1797552/
    Канал на UA-cam - / vladimirmedintsev
    ------------------------------------------
    Если вы хотите поддержать автора канала номер карты Сбер:
    2202-2023-2480-4008
    ------------------------------------------
  • Наука та технологія

КОМЕНТАРІ • 235

  • @Nidvoraich
    @Nidvoraich 4 роки тому +63

    Благо - прошли те времена, когда людям для освоения электроники была доступна только одна библиотека, причём не ХАЛ или ЛЛ, а та, которая с девяти до шести с прерыванием на обед :)
    Причём, не в каждом городе она была, и не в каждой можно было найти реально полезные книги :)

    • @BB-ti9bf
      @BB-ti9bf 4 роки тому +3

      А как же полурабочие схемы ежемесячного журнала радио? Тогда я на эту "кучку" смотрел как на что-то особо ценное

    • @user-kl4xm2yb7p
      @user-kl4xm2yb7p 3 роки тому +1

      @@BB-ti9bf Оно ещё работает?

    • @BB-ti9bf
      @BB-ti9bf 3 роки тому +1

      @@user-kl4xm2yb7p что оно? Можно конкретнее сформулировать вопрос?

    • @user-kl4xm2yb7p
      @user-kl4xm2yb7p 3 роки тому +1

      @@BB-ti9bf схемы "Радио"

    • @Imnibo
      @Imnibo 3 роки тому +1

      @@user-kl4xm2yb7p Как-то захотелось собрать частотомер на МК по схеме из Радио, как раз в то время заинтересовался электроникой, купил детальки, вытравил плату кое-как, а через месяц в следующем номере вышло продолжение статьи с исправлением ошибки в дорожках платы. Долго ругался и забил болт на схемы из этого журнала.

  • @user-bx3qg8js3b
    @user-bx3qg8js3b 4 роки тому +10

    Спасибо!!! Рассказываете интересно, доходчиво.

  • @user-vh1ow9sv2l
    @user-vh1ow9sv2l 4 роки тому +1

    Благодарю! хоть у кого-то правильный подход к обучению, всё чётко, по делу.

  • @user-io2oc6sh3g
    @user-io2oc6sh3g 4 роки тому +1

    Владимир, спасибо Вам за просвещение! Все четко и по делу.

  • @vhgvyggvgyv
    @vhgvyggvgyv 4 роки тому +2

    Спасибо большое. Очень четко и доступно, все по полочкам. Для начинающего с STM, просто как карта сокровищ и не приходится биться лбом в стену, разюбираясь в незнакомых названиях.

  • @user-vw1km4wj2d
    @user-vw1km4wj2d 2 роки тому +6

    Спасибо за ролик. Это именно те объяснения, что я и искал.

  • @ALCohol-qu7ib
    @ALCohol-qu7ib 4 роки тому +13

    Спасибо!
    **********
    Грамотно, толково, в тему!

  • @user-vh1ow9sv2l
    @user-vh1ow9sv2l 4 роки тому +5

    Спасибо Вам большое. Если бы не Вы было бы очень тяжко, продолжайте пожалуйста.

  • @igor0242
    @igor0242 4 роки тому +7

    Спасибо! Такая информация для меня, чайника, очень ценна, ибо ее трудно узнавать "из книг".

  • @Michael_Kaa
    @Michael_Kaa 4 роки тому +2

    Спасибо за структурированные знания.

  • @Mark-vw6gb
    @Mark-vw6gb Рік тому +2

    Невероятно качественное видео! Спасибо.

  • @Schneider1477
    @Schneider1477 4 роки тому +1

    Реально полезное видео!

  • @vicusvanbacvic8618
    @vicusvanbacvic8618 2 роки тому +1

    Спасибо! Очень полезная информация!

  • @user-ee8tg1wg5y
    @user-ee8tg1wg5y 3 роки тому

    Да это лучшее видео по STM.

  • @artemaverin3958
    @artemaverin3958 3 роки тому

    Спасибо!!! Очень доступно и понятно все!!!

  • @MsSk0000
    @MsSk0000 Рік тому

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

  • @ArthurIslamRU
    @ArthurIslamRU 4 роки тому +1

    Вы - молодец... Держетесь

  • @Denisfk1985
    @Denisfk1985 Рік тому

    Спасибо за видео.

  • @user-ys4ds3vq8z
    @user-ys4ds3vq8z 3 роки тому

    Благодарю за разъяснение, теперь понял

  • @knyaz_nikita
    @knyaz_nikita Рік тому +1

    Очень достойное объяснение...

  • @Sleep88Walker
    @Sleep88Walker 4 роки тому

    Содержательно и по делу

  • @teo8028
    @teo8028 3 роки тому +8

    Thanks! Really great review! Puts all things on its own place. Easy to understand for non native russkogovoryashih. (I have no cyrillic keys).

  • @evgeniyveris
    @evgeniyveris 3 роки тому +4

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

  • @U_video
    @U_video 4 роки тому +4

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

  • @user-fy8lh5vd6q
    @user-fy8lh5vd6q 4 роки тому +1

    Спасибо!

  • @cavesalamander6308
    @cavesalamander6308 Рік тому +1

    Только начал осваивать, спасибо за видео.
    Если вы посмотрите на "блокировки" (критические секции), то обнаружите, что, по при отсутствии OS это пустые функции. Такие ф-ции будут соптимизированы компилятором (в релизной моде),, т.е. их вызова не будет.
    Проверки типа assert также не компилируются в релизе.
    Проверки на то, инициализирован ли тот или иной аппаратный модуль, не выглядят избыточными, т.к. его ведь можно и деинициализировать в процессе работы (например, для экономии питания).
    Элементарные проверки "на вшивость" параметров и т.п. - да, их, скорее всего, следовало бы обертывать в условную компиляцию вроде #ifdef DEBUG.
    Всякие прокладки в виде структур - плата за универсальность по отношению к разным типам контроллеров. М.б. их можно было бы получше причесать? Не настолько вник в структуру, чтобы утверждать, что это возможно. Ну и обратную совместимость никто не отменял; вполне возможно, что новые контроллеры плохо лезли в старые рамки, так что приходилось что=-то приделывать на костылях...
    Документация и правда так себе, сгенерена зачастую автоматом (т.е. бесполезна), комменты, имеющиеся в исходниках, и которых по идее более-менее достаточно, в ней не отображаются.
    Но в целом жить можно. Я уж не говорю про старые времена, когда вообще ничего подобного не было, ваяли все ручками на ассемблере с нуля. 🙂

  • @Rimmdp
    @Rimmdp 4 роки тому +5

    Автор, отлично, просто, доступно, благодарю. Сам работаю с TI и NXP. Но пришлось сделать проект на STM32. Почитал форумы, и от таких противоречивых мнений потемнело в голове. На мой взгляд право имеют на жизнь *ВСЕ ТРИ БИБЛИОТЕКИ + LL* . Всё зависит от проекта + оптимизация. Никто не мешает смешивать в проекте использование. И это хороший подход. С автором не согласен по поводу SPL, т.к. её проще всего оптимизировать, ввиду её понимания, и меньшей загруженности перекрестными ссылками, калбэкфункциями и прочим. За 15 лет работы с контроллерами PIC, TI, NXP, Freescale в итоге остался на TI и NXP (в т.ч. freescale). Последние контроллеры подкупают тем, что они работают так, как от них этого ожидаешь, и библиотеки к ним такие-же, и оптимизация работы, отладка у последних очень хорошо организована. Но последние тоже пошли по типу HAL, и время выполнения такого кода значительно увеличилось. Оптимизация - вообще отдельная тема. Но, снова же, когда начал писать проект на HAL под ST - жопа началась при первом же использовании USB CAN UART, и начались танцы с бубном. И эти танцы с бубном решаются через изменение кода HAL, тот же USB, с буфером, задержкаи... У того же NXP - всё работает так, как ты от него ожидаешь. Купил VID, и пошло производство. *А вот с ST - это слезы, ругня с заказчиком, избирательная совместимость....* Как можно делать такие ошибки??? Алё, ST программеры!!!

    • @VladimirMedintsev
      @VladimirMedintsev  4 роки тому +1

      NXP шикарны, абсолютно согласен.

  • @kazimiralmazov2245
    @kazimiralmazov2245 4 роки тому +4

    Отлично, как всегда.

  • @user-zi1hf6xn2w
    @user-zi1hf6xn2w 4 роки тому +41

    Я пропагандирую за LL . Как ни крути, а в ReferenceManual приходится смотреть, когда периферия не работает с первого раза (то есть всегда). А если все равно приходится разбираться в регистрах, то все преимущество HAL сходит на нет.
    LL предоставляет человекопонятную обертку для работы непосредственно с регистрами, то есть функции именуются в большинстве случаев так, чтобы было понятно, чего они делают.
    Самое главное: работа с периферией - это от силы процентов 5 от всего функционала прибора. Остальное - бизнес-логика. Поэтому один раз пишете свои обертки для выполнения нужных операций с периферией, и больше в них не заглядываете.

    • @olegpetroff6186
      @olegpetroff6186 4 роки тому +6

      ну так один раз напиши на CMSIS, зачем тебе LL?

    • @user-zi1hf6xn2w
      @user-zi1hf6xn2w 4 роки тому +5

      @@olegpetroff6186 , чтобы меньше букв набирать.

    • @anton.k.
      @anton.k. 4 роки тому +1

      Ага. + в большинстве случаев, Достаточный уровень абстракции от регистров для переноса на другое железо т.е. можно и функции LL переписать под другое железо, если придется, фактически не затрагивая основной код

    • @anton.k.
      @anton.k. 4 роки тому

      Ну а для сложных штук, типа USB можно и hal использовать

    • @anton.k.
      @anton.k. 4 роки тому +1

      А программировать МК на серьезном уровне, без заглядывается в мануалы и регистры - это утопия (или Ардуина)

  • @perceptron9834
    @perceptron9834 Рік тому

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

  • @BlackShadow_86
    @BlackShadow_86 Рік тому

    Спасибо

  • @shamanskiy
    @shamanskiy 4 роки тому +5

    Спасибо! Тумана стало чуточку меньше.

  • @yuraa.4980
    @yuraa.4980 2 роки тому

    Скоро приду к вам на обучение)))

  • @arakeldesign
    @arakeldesign 4 роки тому +6

    Согласен с вашим подходом: писать на HAL и где надо оптимизировать на CMSIS. Так как я совсем недавно перешёл с AVR на STM32, данный подход очень понравился и упростил вход.

    • @billgillbert1500
      @billgillbert1500 4 роки тому +4

      Если досконально изучить референс мануал, то cmsis окажется проще библиотек ардуино.

  • @rmatveev
    @rmatveev 3 роки тому +1

    Отличное видео!
    Я бы сказал прям хрестоматийное.

  • @Shiover
    @Shiover 4 роки тому +3

    Здравые размышления. И подробно описали. Спасибо. Не нужно усложнять себе жизнь искусственно. : )

  • @sergeysemenkov6474
    @sergeysemenkov6474 5 місяців тому

    Гениальное видео !!!
    Все расставлено по своим местам.
    Главное, HAL опустили, после ассемблера на AVR он меня очень бесит.

  • @BB-ti9bf
    @BB-ti9bf 4 роки тому +14

    Я топлю за CMSIS, да, дольше и труднее осваивать, но это дает огромное преимущество: постоянно куришь RM, в результате ты понимаешь, что делаешь, как, зачем и почему, и в случае каких-то затыков, быстро дакапываешься до причин. Ну и код компактный и очень быстрый. В случае, если ты знаешь только HAL, аббревиатура RM для тебя неизвестна, в случае какого затыка - ты приехал. По вопросу ускорения - во всех проектах всё нормально комментирую, и чаще всего просто беру готовые, отлаженные куски кода.

    • @TK-wh6lf
      @TK-wh6lf 2 роки тому +2

      Я тоже топлю за cmsis, reference manual наше все, он понятен интуитивно, выучил одну периферию - выучил все! Кроме нюансов, разумеется. Полный контроль над каждым шагом процессора, никакого оверхеда, оптимизируй код как хочешь.

    • @starterh1684
      @starterh1684 2 роки тому +3

      Раньше тоже так думал, оптимизация, полный контроль, это же круто.
      Или вот тоже расточительство, оверхед: например, проект в компании - звуковая реклама на компьютерах i3, управляемая централизованно с сервера, код на Java. Казалось бы, ну это же смешно, зачем каждому магазину i3??! Почему не stm32 High destiny + ethernet + sd на 2Гб? А ответ прост.
      Как только ты делаешь что-то круче чем I2C, I2S, SPI, UART, например ETHERNET или USB, CAN, MODBUS вот тут только начинает потраченное время перевешивать все на себя, а еще ладно бы запустить! Так еще и драйвер надо, колбеки на каждый пакет данных У-УХ!!
      Никому не интересно платить за уже написанное, или сделанное, зачем платить команде программистов зарплату несколько месяцев, чтобы они писали драйвер, если производитель его и так даст бесплатно? А потом отлаживать? Встают вопросы, кто будет поднимать девопс под тестинг, кто будет все это тестировать? Писать тесты, кейсы?
      Как сделать переносисмость, как организовать читаемость, расширяемость? И главное как поддерживать в актуальном состоянии? Почему самописный драйвер на bare-metal будет лучше бизнесу?

    • @vovanstarasov8212
      @vovanstarasov8212 Рік тому

      @@starterh1684 вы пишите чисто про свою ситуацию. Но у других людей она может быть иной. Производительность и чистота кода могут быть на первом месте. А если нужно шлёпать много и быстро, то да - тогда и подход другой.

    • @sergbo3114
      @sergbo3114 6 місяців тому

      @@vovanstarasov8212 при чем тут нашлепать. И вопрос не в людях. Человек написал про профессиональную разработку ПО. Там есть определенный цикл и свои требования без них никак. Вот если вы для себя лично пишете вот тогда другой разговор.

  • @sergeyworm1476
    @sergeyworm1476 Рік тому

    Использую только RM. Все структуры, регистры, абстракции описываю самостоятельно. самостоятельно. Нравится мне так. :-)
    П.с. И ртос тоже самописная.

  • @user-qu5xj4no5q
    @user-qu5xj4no5q 4 роки тому +3

    спасибо, очень грамотное и простое видео для "погружения в тему".
    Когда думал что смогу достаточно быстро освоить микроконтроллер, никого не было рядом, чтобы подсказать, насколько я наивен...
    Какой контроллер взять для опытов? Конечно самый дешевую и популярную плату bluepill с stm32F103c8. Кто ж знал, что с ней я соберу просто какое-то немереное количество багов... С hal и cmsis как то еще работает (не все проверял), но в mbed все через ж*, в ардуино (взял от безысходности) rtc с батаейкой тоже не захотел запускаться...
    Итого для простого проектика необходимо изучить просто тонну информации... не говоря уже, что после ООП (delphi, php, phyton, js) Си вызывает уныние (длинные_предлинные_методы_потому_что _нет_namespace, инкапсуляции тоже нет)
    По крупицам собираю информацию о программировании C++ embeded. Но информации как кот наплакал. Открытых библиотек нет. Итого, есть некоторые попытки написать свою абстракцию...

  • @karimhachem6664
    @karimhachem6664 3 роки тому

    thnaks!

  • @MrLuzanov
    @MrLuzanov 4 роки тому +8

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

    • @BB-ti9bf
      @BB-ti9bf 4 роки тому +1

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

    • @00ASpid00
      @00ASpid00 4 роки тому +2

      Тут вот какое дело. Embedded предполагает что ваше устройство может быть залито эпоксидкой/бетоном/поднято на 60 метров на вышку. И в теории программист на цмсис может забыть или сознательно не включить какую-то проверку в код, пушо такая ситуация возникает раз в поколение. По закону подлости такая ситуация возникает в самый неподходящий момент. Что из этого следует? В библиотеку хал включаются все возможные проверки, и программист идет по ним как по чек-листу. Типа, я проверил тип, проверил деление на ноль, привел к флоату, проверил статус-код, обработал атлуп, и т.д. Смотрите на это с такой точки зрения.

    • @FastChargeIsFuture
      @FastChargeIsFuture 4 роки тому +2

      @@00ASpid00 И что HAL не поможет а усугубит. Чем меньше разраб думает, тем хуже код. А иллюзия что волшебная либа все за него сделает, только вредит!

    • @00ASpid00
      @00ASpid00 4 роки тому +1

      @@FastChargeIsFuture перечитай мой коммент еще раз, только внимательнее. Для того чтобы пользоваться HAL нужно знать доку на HAL, а лучше HAL и CMSIS. HAL упрощает и ускоряет разработку - это действие более высокого уровня абстракции и большей выразительности одной строки готового кода. Где там про ""меньше думать"?

    • @BB-ti9bf
      @BB-ti9bf 4 роки тому +2

      @@00ASpid00 в результате все как с С#: создаём 3 поля ввода и кнопку +, код кнопки а=поле1 б=поле2 в=а+б, и значение поля 3=в. Компилируем. Вес программы 200 мб, при запуске отжирает гиг оперативки. Утрирую, но масштаб проблемы ясен, + опасный расслабон" можно индусить, там за меня все проверено". Последствия могут быть еще печальнее

  • @user-if7zu8nk2j
    @user-if7zu8nk2j 4 роки тому +6

    Я, как человек работающий с STM32 микроконтролерами более 5-ти лет напишу свое мнение по этому поводу:
    Для создания проекта и конфигурации периферии - HAL + CubeMX
    Там где нужно "подправить" и оптимизировать - LL.
    Для "дёрганья" пином например, достаточно использовать HAL_GPIO_WritePin()
    В то же время при работе например с SPI-дисплеем данные ему лучше слать напрямую (SPI1->DR) чем через халовскую функцию
    Есть настоящие маньяки, которые конфигурируют периферию посредством CMSIS работают исключительно "на регистрах". Я к таким ребятам не отношусь. Это уж слишком

    • @valkoder_ex305
      @valkoder_ex305 4 роки тому

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

    • @sledleo
      @sledleo 4 роки тому

      Как вариант - CMSIS + Макросы, вот пример:
      we.easyelectronics.ru/blog/STM32/3191.html

    • @user-if7zu8nk2j
      @user-if7zu8nk2j 3 роки тому +1

      @Александр DMA не каждому дано, особенно новичкам

    • @MonahTuk
      @MonahTuk 6 місяців тому

      С spi лучше dma, если есть возможность

  • @megannnn98
    @megannnn98 4 роки тому +4

    Скажу что LL лучше SPL потому хосты что там функции инлайновские а значит вы напрямую практически с регистрами работаете. Спасибо за видео

    • @Gregor812
      @Gregor812 3 роки тому +1

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

    • @megannnn98
      @megannnn98 3 роки тому

      @@Gregor812 все верно

  • @Mr_Escow
    @Mr_Escow 4 роки тому +2

    Ничего не понял но очень интересно!!! Спасибо!!! Обязательно пересмотрю это видео как закрою свои пробелы!! Дай вам бог здоровья тоже!!

  • @tupoy_ytub_uberi_psevdonim
    @tupoy_ytub_uberi_psevdonim Рік тому

    Конечно разные команды занимаются написанием библиотек HAL от того они и разные в зависимости от серии. Но не это плохо, плохо когда никто из них не занимается своевременным обновлением документации. Я пока не дошел до встречи с подобной проблемой, все еще впереди.

  • @myurav70
    @myurav70 6 місяців тому

    Давно писал проект тля stm32 и использовал CMSIS. И там были именно структуры и функции. Напрямую с регистрации я не работал. Все описание было в хедерах. А сами функции в сишных файлах. Может она передала в HAL конкчно. Нужно посмотреть как сейчас. Но ХАЛ тогда тоже был, но я выбрал смсис.

  • @sledleo
    @sledleo 4 роки тому +1

    "можем в main.c написать" и где же он находится и как подключен к проекту? Если в нем писать с использованием CMSIS дефайнов и функции, то только они и скомпилируются? Без всяких HALов?

    • @VladimirMedintsev
      @VladimirMedintsev  4 роки тому

      Обсуждение местоположения файла main.c серьезно?

  • @easystm6865
    @easystm6865 4 роки тому +3

    Застрял на SPL, довольно удобная и понятная штука. Пробовал HAL и просто ужаснулся. Заглядываю в любую функцию и вижу что и та ещё состоит из кучи функций, целая матрёшка из функций, до работы с регистрами там ещё добраться надо. В SPL открываешь любую функцию и уже сразу же видишь непосредственную работу с регистрами. Ну думаю ещё LL посмотреть, ещё не пробовал, возможно подсяду на неё. Вообщем с SPL выруливал во многих вещах

    • @VladimirMedintsev
      @VladimirMedintsev  4 роки тому

      Это уже не функции внутри функции, а макросы в основном. Они упрощают читаемость кода и не плохо обрабатываются на уровне компиляции.

    • @serjkp
      @serjkp 4 роки тому

      Поддержу. Тоже почему-то показалось удобнее с LL работать, чем с HAL.

  • @AdamFullowsky
    @AdamFullowsky 3 роки тому

    А можно ли сделать так, чтобы cubemx генерировал код не с Hal, a c cmsis?

    • @VladimirMedintsev
      @VladimirMedintsev  3 роки тому

      Можно с LL, просто генерировать на Cmsis нет никакого смысла, можно и руками один единственный include прописать и cmsis подключен.

  • @newegor1983
    @newegor1983 3 роки тому

    Что-то не заметил, что бы в HAL сделали поддержку RTOS. Как было "USE_RTOS should be 0 in the current HAL release" так и осталось. Или я что-то упускаю?

  • @aemarkov
    @aemarkov 4 роки тому

    Скажите, а вы изучали CMSIS Driver? Концептуально выглядит очень интересно (если я все правильно понял) - универсальный API для периферии между микроконтроллерами разных фирм, поверх которой могут строиться драйверы какого-то оборудования. Концепция красивая. Но она существенно меньше распространена. Я лишь раз ее касался, она мне показалась еще более тяжелой, чем HAL (на примере пары простейших прошивок), и вообще похоже, что она вдохновлена Linux драйверами и POSIX.

  • @user-rr5gv5oj4j
    @user-rr5gv5oj4j 4 роки тому +3

    Спасибо за Ваш труд. Очень интересно слушать. Как на сегодняшний день оцениваете de от st? Стоит ли переходить с кейла на куб ide? Уменя линукс.

    • @VladimirMedintsev
      @VladimirMedintsev  4 роки тому

      Ну уже версия 1.03 пока развивают. Полноценно переходить еще тяжело т.к. детские болезни остались. Но на линуксе альтернатив не много. Пугает то, что ST не сильно много проектов доводит до конца.

    • @chipsoft1
      @chipsoft1 4 роки тому

      Лучше возьмите связку Visual Studio Code + plugin-ы С/С++ и Cortex Debug + makefile и работа будет намного производительнее, чем в кубе.

    • @user-rr5gv5oj4j
      @user-rr5gv5oj4j 4 роки тому

      Спасибо

    • @valkoder_ex305
      @valkoder_ex305 4 роки тому

      @@chipsoft1 Что вы имеете ввиду под "намного производительнее"? у меня проект с кучей логики с freeRTOS, lwip и обработкой данных, проект полностью пересобирается за 15 сек. про простые правки или простые приложения вообще молчу 2- 4 сек. Куда быстрее? И в чем смысл выигрыша в 3-5 сек? Другое дело если вам удобнее перечисленные средства.

  • @SaihoS1
    @SaihoS1 4 роки тому

    Большое спасибо. Очень полезный обзор. Отдельное спасибо за указания на полезные сопутствующие документы. Позвольте уточнить один вопрос. На 34:34 вы говорите о ситуации когда для добавления периферии "не хочется" перегенерировать проект CubeMX-ом. Правильно понимаю, что "не хочется" потому, что неизбежно затрутся оптимизированные вручную куски кода и их опять придется корректировать вручную, ведь пользовательский код сохраняется только в специально обозначенных местах? HAL-овский код конечно сильно пухлый и в критических местах его почти всегда приходится подменять оптимизированными вставками. А параллельная жизнь с CubeMX это как две хозяйки на одной кухне. Может ошибаюсь и есть стандартный механизм сосуществования, просто я не знаю? Или "не хочется" имеет и другие причины?

    • @VladimirMedintsev
      @VladimirMedintsev  4 роки тому +2

      У меня есть несколько проектов которые писаны - переписаны и от традиционного кода там уже ничего не осталось. Т. е. их перегенерация в кубе вообще невозможна. С течением лет, там смесь из HAL и CMSIS. А как в этом случае добавить периферию? Честно говоря я вообще не сторонник постоянно задействовать куб. Обычно я просто создаю проект и подключаю периферию в кубе, но потом уже не возвращаюсь, а все необходимые изменения только руками.

    • @SaihoS1
      @SaihoS1 4 роки тому

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

  • @svbHiTek
    @svbHiTek 6 місяців тому

    Возможно это упоминалось, на камнях где мало флеш памяти, например 030f4, где ее 16кБ, уход от HAL в пользу чистого CMSIS оправдан на мой взгляд

  • @gunnargunaxe
    @gunnargunaxe 4 роки тому +3

    11:00 - наконец-то хоть кто-то адекватно объяснил как это сделать!

  • @marsm6619
    @marsm6619 4 роки тому +1

    Вы мне немного приоткрыли веки на ARM. Так то я любитель и довольствовался AVR и после Atmel Studio я даже диодом поморгать не мог, хотя частенько для AVR делал ассемблерные вставки и думал, ща Arm за день одолею, но...
    Отличный обзор спасибо

    • @Chettuser
      @Chettuser 2 роки тому +2

      Освоить STM32 не так уж и трудно :
      1. Настроить тактовый модуль RCC.
      2. Включить тактирование нужного модуля периферии.
      3. Настроить GPIO под альтернативную функцию (если есть необхдимость)
      4. Настроить нужную периферию.
      5. Включить модуль.
      Операции стандартны и универсальны, разница только в регистрах модулей. Да и то, все биты в регистрах как правило включать не потребуется - их так много из за универсальности применения, включаем только нужные.

  • @perceptron9834
    @perceptron9834 Рік тому

    если в кубе перегенерировать и добавить дополнительную периферию, то все предыдущих изменения будут выкинуты ?

  • @xow998
    @xow998 4 роки тому +7

    Да нормально HAL написан, все как по учебнику, а учебники это Turbo Vision или Microsoft Fundation Classes. :), да что там библиотеки, сама Windows, точнее ее SDK так же написана..

    • @alexey-art-studio
      @alexey-art-studio 4 роки тому

      так вот почему так тупит в win10 на моем стареньком компе!))

    • @user-dq2ci5ln5g
      @user-dq2ci5ln5g 4 роки тому

      @@alexey-art-studio Ну я не знаю, насколько старенький ваш комп, но на буке 2008г., и даже 2006г.(одноядерный селерон) вполне себе можно нормально работать! Ну да, приходится некоторое время подождать, пока всё прогрузится и отработает телеметрия, но потом-то номана! А если ссд-шечку втулить и памяти добавить, то загрузка win10 занимает 28 сек, а не 3,5 минуты! 👍🤪

  • @dkoxperiakoziukov3808
    @dkoxperiakoziukov3808 Рік тому

    Очень интересно узнать Ваше мнение по поводу того, что же шустрее работает? Есть ли какие нюансы в оптимизации кода при использовании разных библиотек? Был один человек, который утверждал, что LowLayer экономичнее по размеру и шустрее. Но так ли это критично с Вашей точки зрения. Насколько я понял, именно HAL охватывает всю линейку микропроцессоров

    • @VladimirMedintsev
      @VladimirMedintsev  Рік тому

      Мое мнение очень простое. Если человек считает себя профессионалом, то он должен знать и HAL и LL и CMSIS. А при написании своего кода использовать ту библиотеку, которая соответствует проекту. Что это значит? Это значит, что за час работы программиста мы платим деньги. На библиотеке HAL он напишет код за сутки, а с использованием CMSIS аналогичный код за 2 недели. При этом возвращаясь к коду, он как профессионал должен видеть и его недостатки и если в коде есть фрагменты критичные к скорости, логично эти фрагменты написать на CMSIS. Только эти фрагменты кода, а никак не весь проект.
      Это все-равно, что в строительстве можно отлить куб 10*10*10 метров из чистого бетона и потом при помощи наждачки вырезать из этого куба красивый дачный домик, а можно этот домик собрать из стандартных блоков и только в местах, где нужна красота, тщательно сделать красоту.

    • @dkoxperiakoziukov3808
      @dkoxperiakoziukov3808 Рік тому

      @@VladimirMedintsev А еще вставить светодиодики в куб.. Спасибо за Ваш ответ. Но я говорю с Вами не как профессионал, а как человек занимающийся этим на любительском уровне. Работал с SPL и CMSIS. Как по мне, HAL - тот же хрен, но только в профиль. В лучшем случае смог бы претендовать на джуна, но тем не менее сделал несколько , на мой взгляд, серьезных проектов

  • @lilo888
    @lilo888 4 роки тому

    Вы бы не могли подсказать как сильно изменяются cmsis от контроллера к контроллеру. Допустим, f1xx серии и f3xx серии. Просто между f100 и f103 я не заметил сильных изменений. Конечно, я пишу небольшие программки. Возможно, в больших проектах это более заметно.

    • @VladimirMedintsev
      @VladimirMedintsev  4 роки тому +1

      Да меняется же не библиотека. Меняется периферия самого МК. Вы можете взять reference manual на эти серии и сравнить. CMSIS только обслуживает то, что заложено в самом микроконтроллере. А вот внутри одной серии разумеется изменения минимальные.

    • @lilo888
      @lilo888 4 роки тому

      @@VladimirMedintsev, спасибо я вас понял.

  • @Beatleman91
    @Beatleman91 3 роки тому

    Кстати а никто вроде не утверждает, что HAL как-то облегчает работу с ОСРВ. Все равно во всех примерах пишут о использовании мьютексов и задач-ворот даже если используется HAL.

  • @mikhailzaytsev302
    @mikhailzaytsev302 4 роки тому

    Прошу прощения за комментарий не по теме, подскажите литературу для изучения электроники. Знаю более менее основы, ТОЭ. Было бы интересно, по каким книгам вы учились этому делу.
    Спасибо большое за видео, как всегда здорово)

    • @VladimirMedintsev
      @VladimirMedintsev  4 роки тому +1

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

    • @mikhailzaytsev302
      @mikhailzaytsev302 4 роки тому

      @@VladimirMedintsev а если на английском что-то?

    • @TheKozladoy
      @TheKozladoy 4 роки тому

      @Vlad Kosten Хотел бы поправить. "Искусство схемотехники" не годится для начинающих. Книга хороша когда ты уже знаешь матчасть и тебе нужно почитать про конкретные решения. А вот для изучения цифры есть очень хорошая книга - "ЦИФРОВАЯ СХЕМОТЕХНИКА И АРХИТЕКТУРА КОМПЬЮТЕРА" Харрис, Харрис.

  • @NIKOLAY_PSHONIA
    @NIKOLAY_PSHONIA 4 роки тому

    Тоже заметил в F103 ногодрыг СMSIC - 3.4 мГц, SPL - 1.7 мГц, в HAL - 1,2 мГц, Жаль что SPL - забросили. Спасибо за уроки и труд. Понемногу начал грызть STM32H7 - жаль что только куб и только HAL . на CMSIC - почти листок кода - запуск кварц + шина + тактирование 2-3 блока.
    Владимир не планируете уроки по H7 ?

    • @VladimirMedintsev
      @VladimirMedintsev  4 роки тому +5

      Честно говоря я не делаю уроков. Это мой личный блог, я просто делаю видео на интересные мне темы. Никого не поучаю.
      По H7 видео точно не будет. У меня нету задачи под этот камень. Будут видео про серии G0, L4 и про моего любимца WB55.
      С последним я немного освоился и надо будет начинать его показывать.
      Ну а на самом деле я просто делаю электронику под заказ и если в процессе мне кажется что-то интересным то появляется видео.

    • @valkoder_ex305
      @valkoder_ex305 4 роки тому

      @@VladimirMedintsev Будем ждать от вас видео по wb55. Пока по нему мало что в инете есть. Да и самих камней не много.

    • @valkoder_ex305
      @valkoder_ex305 4 роки тому

      Чисто теоретически скоро все всё-равно перейдут на С++ или джаву. Посмотрите на али, детские часы с экраном, аккумом и lte стоит 1000 руб. А работает на андройде.

    • @user-xz8om5dc4s
      @user-xz8om5dc4s 4 роки тому

      @@valkoder_ex305 Не скажу за джаву, а чем вам С++ не нравится? Я на С++ и пишу, на тех же SPL, LL и HAL. Вот не вижу разницы между C и С++ кроме удобства. И компилятор не увидит, если хоть немного понимать что делаешь.

    • @sergbo3114
      @sergbo3114 6 місяців тому

      Только что написал по этой теме. Ногодрыг это дебилизм. Это зачем нужно? Что бы что? Ну хорошо, а если нужно дрыгать одновременно двумя ногами на разных портах? А тремя? А будут ли они одновременно дрыгаться? Или все таки со смещением. Где нужно дрыгать ногой с частотой 3.4Мгц нужно использовать уже другие подходы. И использовать другие схемные решения.

  • @cybercube7915
    @cybercube7915 4 роки тому

    Как подключить fatfs в keil и настроить для spi без использования cubemix .В силу моей не опытности мне попадается крайне противоречивая информация в сети

    • @VladimirMedintsev
      @VladimirMedintsev  4 роки тому

      Просто подключите заголовочный файл и пропишите функции чтения записи. Нет в этом ничего сложного. У fatfs хорошая справка.

    • @cybercube7915
      @cybercube7915 4 роки тому

      @@VladimirMedintsev Спасибо ,буду пробовать

  • @romanoffro5163
    @romanoffro5163 4 роки тому +2

    оптимизацию компиляции на максимум, и не будет много лишнего кода.
    на мой взгляд, дальше хал переделают в ооп, запихнут всё в классы, и программисту будет еще проще.

    • @serjkp
      @serjkp 4 роки тому +3

      По своему опыту знаю, что полагаться на компиляторную оптимизацию не следует. Чаще всего я сразу отключаю оптимизацию и стараюсь писать сам оптимальный код. Компилятор может такого наоптимизировать, что повыбрасывает куски кода, которые на его взгляд лишние. То есть без оптимизации устройство работает, а после оптимизации - нет. И еще хорошо, если это сразу выявляется. А то вдруг становится не рабочей редко используемая часть кода? Не, я за надежность и уверенность.

    • @chipsoft1
      @chipsoft1 4 роки тому +1

      @@serjkp если после оптимизации компилятора не работает код, то код написан неверно. Вы хоть сравнивали в ассемблере код с оптимизацией и без неё? Компилятор делает такие оптимизации, которые вручную не сделать.

    • @romanoffro5163
      @romanoffro5163 4 роки тому +2

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

    • @serjkp
      @serjkp 4 роки тому +2

      @@romanoffro5163 ну это как-бы секрет Полишенеля ;)

  • @timslabchannel6650
    @timslabchannel6650 4 роки тому

    Не могу сообразить как работать с функцией библиотеки cmsis DSP arm_pid,куда записывать опорное значение?

    • @VladimirMedintsev
      @VladimirMedintsev  4 роки тому

      Есть на сайте кейла прям целая статья на эту тему. www.keil.com/pack/doc/CMSIS/DSP/html/group__PID.html

    • @timslabchannel6650
      @timslabchannel6650 4 роки тому

      Я создаю указатель на структуру, далее записываю в структуру значения коэффициентов , инициализирую, далее в цикле использую основную функцию ,пишу туда измеренное АЦП значение , функция возвращает мне результат. В какой элемент структуры я должен записывать опорное значение?

    • @VladimirMedintsev
      @VladimirMedintsev  4 роки тому

      input sample это уже и есть ошибка. Опорное значение не нужно.

    • @timslabchannel6650
      @timslabchannel6650 4 роки тому

      @@VladimirMedintsev , спасибо большое, сейчас попробую

  • @slavaglow6933
    @slavaglow6933 4 роки тому

    Я столкнулся с переносимостью кода библиотеки LL для портов ввода/вывода при использовании микроконтроллеров STM32F407 и STM32F103. В них по разному реализованы дефайны портов ввода вывода
    При использовании LL_GPIO_ResetOutputPin имеет внутри разную реализацию
    1) STM32F407
    __STATIC_INLINE void LL_GPIO_ResetOutputPin(GPIO_TypeDef *GPIOx, uint32_t PinMask)
    {
    WRITE_REG(GPIOx->BSRR, (PinMask > GPIO_PIN_MASK_POS) & 0x0000FFFFU);
    }
    2) STM32F103
    __STATIC_INLINE void LL_GPIO_ResetOutputPin(GPIO_TypeDef *GPIOx, uint32_t PinMask)
    {
    WRITE_REG(GPIOx->BRR, (PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU);
    }
    Так например при вызове LL_GPIO_ResetOutputPin(GPIOB, 0x0F

    • @arakeldesign
      @arakeldesign 4 роки тому

      Viacheslav Ohinskyi LL не переносится между разными семействами.

  • @cashperovskygo3318
    @cashperovskygo3318 2 роки тому

    почему нет различия? inline добавили

  • @user-le7cf1qk8l
    @user-le7cf1qk8l 4 роки тому

    Вопрос. Можно ли использовать библиотеку LL для работы с freertos? Или нужно использовать HAL так как она не блокирует ресурсы.

    • @VladimirMedintsev
      @VladimirMedintsev  4 роки тому +1

      Можно

    • @ajdarseidzade688
      @ajdarseidzade688 4 роки тому +2

      @@VladimirMedintsev А как "можно" если получается в CubeMX нельзя? Не переключается оно там для Lwip (который с FreeRTOS используется тут), для USB не переключается тоже. Тогда получается тут 2 библиотеки будут вместе использоваться? Тогда совсем бардак будет и больше памяти еще к тому же заберет? Еще хотел написать, что совсем недавно стал изучать активно STM32 и Ваш ролик помог. Спасибо Вам огромное человеческое.

    • @VladimirMedintsev
      @VladimirMedintsev  4 роки тому +1

      @@ajdarseidzade688 Достаточно собрать проект без FreeRTOS с LL. А потом скачав FreeRTOS с официального сайта прикрутить ее руками. Там делов на несколько минут. Я не всегда все собираю кубом до самого конца. Он помогает сильно и я его использую, но без фанатизма.

    • @ajdarseidzade688
      @ajdarseidzade688 4 роки тому

      ​@@VladimirMedintsev Понятно. Еще раз благодарен (и за совет не до конца все сделать кубом).

    • @VladimirMedintsev
      @VladimirMedintsev  4 роки тому +2

      @@ajdarseidzade688 Я попытаюсь сделать небольшое видео и объяснить как я это делаю.
      Это возможно не совсем правильно с точки зрения разработки, но я нашел для себя оптимальное решение.

  • @namename2031
    @namename2031 2 роки тому

    41:54 Что значит: С последующим упрощением кода при необходимости?
    Это на CMSIS упрощение?
    Я хочу начать программирование мк. Хочу выучить как работает микроконтроллер, а не просто непонятные мне слова писать.
    По описаниям библиотека CMSIS как раз то что мне нужно.
    Не слишком ли она будет сложная для начинающих? Смогу ли я в ней разобраться?

    • @VladimirMedintsev
      @VladimirMedintsev  2 роки тому +1

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

    • @namename2031
      @namename2031 2 роки тому

      @@VladimirMedintsev Да, язык Си я учил последние пол года.
      Я информацию лучше усваиваю в видео формате, но к сожалению в русскоязычном интернете на тему CMSIS очень мало структурированной информации.

    • @VladimirMedintsev
      @VladimirMedintsev  2 роки тому +1

      А там не нужна структурированная информация. Вы подключаете к своему проекту библиотеку CMSIS в соответствии с тем какое ядро вы используете. Потом открываете Reference Manual на микроконтроллер и видите там описание регистров. Эти самые имена вам уже и даны в define библиотеки CMSIS. Все обзор закончен больше никакие знания не требуются.

  • @curlybrace6694
    @curlybrace6694 4 роки тому +3

    а что с libopencm3? они конечно пишут что либа в стадии разработки, но вроде довольно не плоха и поддерживает большинство популярных мк далеко не только стм32

    • @VladimirMedintsev
      @VladimirMedintsev  4 роки тому +2

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

    • @curlybrace6694
      @curlybrace6694 4 роки тому

      @@VladimirMedintsev но Вы же сами сказали что все мк работают на ядре cortex отсюда и универсальность.

    • @VladimirMedintsev
      @VladimirMedintsev  4 роки тому +2

      @@curlybrace6694 Ядро и все что к нему относится это Cortex. Но вы забываете что периферия и память уже на усмотрение конкретного вендора, там и есть куча отличий в реализации даже в линейках одного производителя. Это отлично прослеживается у всех без исключения производителей. Т. к. конструкторская мысль она не стоит на месте. По этой причине попытка универсальности гораздо хуже даже самодельных библиотек. Но если хочется потратить время в пустую. Не смею мешать.

    • @chipsoft1
      @chipsoft1 4 роки тому

      Вот тоже поддержу за openlibcm3. Даже если посмотреть github, то приличное количество толковых opensourse проектов использует именно эту либу.

    • @EdwardEmel
      @EdwardEmel 2 роки тому

      Честно говоря, opencm3 - такое же дерьмо, как и кал-SPL. Разве что, дерьмо не столь откровенное (быдлокода там намного меньше). Но все равно совать ассерты в функции (да и вообще вызывать функции на каждый чих) - это идиотизм. Единственный вменяемый способ сделать "библиотечку" для С - использовать гору макросов и static inline функций. Но лучше написать кучу шаблонов на С++, тогда на выходе получите лучше, чем если б сами на асме писали, а код будет компактный и понятный.

  • @smart_electrics_il
    @smart_electrics_il 4 роки тому

    Владимир, я правильно понимаю, что библиотека LL так же развивается как и HAL ?

    • @VladimirMedintsev
      @VladimirMedintsev  4 роки тому +1

      Да, они обновляются одномоментно. Горубо говоря LL это замена SPL.

    • @smart_electrics_il
      @smart_electrics_il 4 роки тому +2

      @@VladimirMedintsev Я ещё заметил, что не для всей периферии доступен LL, например для того же CAN, он не доступен в кубе..
      Но могу выделить плюс в пользу HAL, что он мне помог вникнуть в работу CAN драйвера, правда я потратил пару недель, но теперь я смог бы обойтись и без него, общаясь напрямую с регистрами, но не вижу в этом смысла, т.к в любом случае, нужно писать много строк кода, множество структур, функций, что бы инициализировать управлять и мониторить те же ошибки, а в случае с HAL, всё упрощается, пару кликов и куб с генерирует скелет кода и сэкономит много времени и вероятность совершить ошибку, т.е много строк кода будут в любом случае написаны, путь и на свой лад, но время займёт много...
      А какие то куски, где что то не устраивает в реализации HAL, можно переписать и уже обращаться напрямую к регистрам.
      Хотя, конечно HAL занимает много места, но учитывая стоимость камней и их разнообразия, место остаётся вагон и маленькая тележка)
      Это моё, скромное мнение..

    • @ajdarseidzade688
      @ajdarseidzade688 4 роки тому +1

      @@smart_electrics_il Спасибо за такое мнение. Я, как новичок в STM32, прислушиваюсь ко всем мнениям и делаю выводы.

  • @Rot9711
    @Rot9711 4 роки тому

    Под F4 похоже с HAL и LL всё грустно: документация не обновлялась с 2017 года. LL не для всех блоков. Например USB только как HAL, однако файл с данным блоком называется stm32f4xx_ll_usb, в котором код HAL, но в документации о нём не слова, поскольку она описывает файл stm32f4xx_hal_hcd. Поэтому непонятно, зачем нужен первый файл, да и использование LL таким образом ограничено. Да и сам CUBE может создать инециализацию USB только под HAL.

    • @VladimirMedintsev
      @VladimirMedintsev  4 роки тому

      Документация в виде комментариев в самих файлах библиотеки вполне достаточна. Там есть все основные моменты.

  • @NordFawkes
    @NordFawkes 3 роки тому +2

    Давно написал собственный HAL, что позволяет использовать контроллеры разных производителей. Но это связано с зоопарком устройств на работе. Если бы проекты небыли взаимосвязаны, наверное пользовался бы CMSIS.

  • @VAscetic
    @VAscetic 3 роки тому

    Ну, вот я пришёл к микроконтроллерам начав с stm8, где использование стандартных функций сильно сжирает флэш, а первоначальное конфигурирование регистров периферии не очень-то требует проверки, ну Вы же понимаете, что за значение пихаете в регистр. Потом всё плавно, хотя нет, не очень перетекло к stm32, и, освоив работу с регистрами на прямую, воспользовался CMSIS. А стоит ли разбираться с HAL теперь. И нет, не соглашусь, что код плохо копируем. На мой взгляд это не так. Куда большая проблема, - отсутствие внятного комментария при обращении к нему спустя длительное время :) Комментарий кажется не очень-то нужным, когда всё ещё в процессе... а вот потом....

  • @sc0or
    @sc0or 10 місяців тому

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

  • @igor0242
    @igor0242 4 роки тому +1

    Такой вопрос возник, почему такое повальное увлечение МК от STM, если у TI всё более качественно сделано?

    • @VladimirMedintsev
      @VladimirMedintsev  4 роки тому +1

      Большая доступность, хорошая цена. Производитель в европе, а не америка, лучше логистика. Хорошая поддержка. Гарантия доступности. Ну короче это комплексный вопрос. И уж чего я точно не стал бы использовами это микроконтроллеры от TI. Есть гораздо более интересные производители но менее доступные.

    • @chipsoft1
      @chipsoft1 4 роки тому

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

    • @user-ot5js1gy5j
      @user-ot5js1gy5j 4 роки тому

      @@VladimirMedintsev Почему" не стал бы использовами это микроконтроллеры от TI"?
      "более интересные производители" это какие?

    • @VladimirMedintsev
      @VladimirMedintsev  4 роки тому +1

      @@chipsoft1 Порой дело не в доставке как таковой, а в некоторых санкционных действиях. Мне без разницы где конкретно заливают в пластик плавленный песок, но часто с производителем (разработчиком) физически находящимся в европе договориться проще чем с ребятами из-за океана.

    • @VladimirMedintsev
      @VladimirMedintsev  4 роки тому

      @@user-ot5js1gy5j Ну например NXP.

  • @sergbo3114
    @sergbo3114 6 місяців тому

    Ничего не понял. Как это можно не блокировать доступ к периферии? Если вы не заблокируете доступ к абстракции так 2 потока могут безконтрольно туда навалить своих данных или еще хуже переконфигурировать перефирию в процессе операции. Тут просто другого выхода нет кроме как блокировка. Вы же сами сказали что HAL ориентирован на FreeRTOS.

    • @VladimirMedintsev
      @VladimirMedintsev  6 місяців тому

      Если кратко, то блокировка это не единственный метод обеспечения потокобезопасности. А реализация блокировки в HAL далеко не самая эффективная.

  • @ibrag2012
    @ibrag2012 4 роки тому

    На мою думку STM не вистачає репозиторію як у Arduino: у мене є вихідні, а готових бібліотек-прикладів нема, але є бажання прикрутити до MCU RFID: з чого почати та й взагалі де той початок не зрозуміло. Можна покопатися в Arduino IDE, знайти та пофіксити файли заголовків але значно простіше було якби в STM32Cube IDE була кнопка "створити проект Arduino" (щось таке).

    • @Shinsei75
      @Shinsei75 4 роки тому +1

      Adam Ibragimov да ладно, для СТМ библиотек не меньше чем для Ардуино

  • @Beatleman91
    @Beatleman91 4 роки тому +2

    Самое ужасное, что есть в библиотеке HAL - это первые четыре символа в названии каждой функции. Серьезно, неужели нельзя было это как-то иначе сделать?

  • @sergheik9582
    @sergheik9582 Рік тому

    Связка CMSIS и LL... Пока самое лучшее для начинающий и профессионалов

    • @VladimirMedintsev
      @VladimirMedintsev  Рік тому +1

      Ага, а на западе пишут на HAL, вот наивные да?

    • @sergheik9582
      @sergheik9582 Рік тому

      @@VladimirMedintsev скорее всего все зависит от типа проекта .... Это конечно не агрумент с моей стороны... У меня товарищ в Праге он работает в фирме что разрабатывает топливораздаточные колонки ... И говорит у них stm32 пишут только на cmsis.. даже без ll ( но справедливости ради пишут это все в keil) , мой личный опыт ... Показал что для меня HAL... Не самый понятный ( ... А вот cmsis или ll действительно дают больше возможностей.... Мне кажется что все же лучше писать на cmsis

    • @VladimirMedintsev
      @VladimirMedintsev  Рік тому +1

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

    • @VladimirMedintsev
      @VladimirMedintsev  Рік тому +1

      Представьте себе, есть заказ. Заказчик платит за него условные 10.000 руб. Я могу сделать эту работу на библиотеке HAL за 2 часа или я могу это сделать на библиотеке cmsis за 10 часов. При прочих равных условиях если мне не требуется супер оптимизация какую библиотеку нужно выбрать?

    • @sergheik9582
      @sergheik9582 Рік тому

      @@VladimirMedintsev ну это больше вопрос предпочтений .... более надежнее и оптимизированней код получается на LL это некий компромисс между CMSIS и HALL . да на простой проект не буду спорить ,на CMSIS тот еще вид извращений (знаю по себе )... LL решает те-же самые задачи что и HAL но намного качественнее + у LL меньше проблем с реализацией периферии чем у HAL. да и те проблемы что есть у LL легко (относительно ) решаются

  • @alexandrkobzev898
    @alexandrkobzev898 4 роки тому +5

    Зачем говорить, что CMSIS плохо читаемый, когда вместо "GPIOA->BSRR=0001U" можно писать "GPIOA->BSRR |= GPIO_BSRR_BS0" и получается прекрасно читаемый код ( сходу понятно, что нулевой пин мы выставили в единицу/ Bit Set 0).
    Про переносимость кода Вы тоже умолчали, что, к примеру, написав инициализацию тактирования к одному МК она подойдёт и к большинству других контроллеров той же линейки и даже старших ядер с небольшими поправками. И так касаемо почти всей периферии, за исключением GPIO(на старых МК она разнится с новыми) ну это с тем, с чем я столкнулся.
    Ctrl+c и Ctrl+v, пожалуйста пользуйтесь.
    Не считаю себя профессионалом, наоборот я только учусь, многого не знаю, просто высказал своё мнение.
    Недосмотрел ролик до конца, бросил его посмотрев часть про CMSIS, не очень интересно смотреть на такое узколобое разъяснение библиотек и пропаганду HAL, уж простите, если где-то неправ.

    • @anton.k.
      @anton.k. 4 роки тому +1

      Если помнить что такое bsrr, и хз как это переносить на другую архитектуру, например. Все таки GPIOsetPin (пример абстрактный) - намного понятнее

    • @alexandrkobzev898
      @alexandrkobzev898 4 роки тому

      Это аббревиатура, такая же как USART. Человеку с юартом не работавшему будет и USART непонятно и GPIO.
      BSRR = Bit Set Reset Register.

    • @VladimirMedintsev
      @VladimirMedintsev  4 роки тому +4

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

    • @alexandrkobzev898
      @alexandrkobzev898 4 роки тому

      @@VladimirMedintsev аргументировано

    • @chipsoft1
      @chipsoft1 4 роки тому +1

      Вы учитесь в правильном направлении!

  • @canisminor6128
    @canisminor6128 4 місяці тому

    Ого, в большинстве времени использовать HAL. Я на нём вообще ничего сложнее hello world'а сделать не могу: получается ардуинщина какая-то

  • @Xeenych
    @Xeenych 3 роки тому

    Это видео не совсем про CMSIS. CMSIS не стандартизует обращение к GPIO и ADC

    • @VladimirMedintsev
      @VladimirMedintsev  3 роки тому

      В смысле не стандартизует? Ничего, что в состав CMSIS входит DSP?

    • @Xeenych
      @Xeenych 3 роки тому

      @@VladimirMedintsev Хотел написать не DSP, а ADC. CMSIS не стандартизирует работу с ADC.

    • @VladimirMedintsev
      @VladimirMedintsev  3 роки тому

      Еще интереснее. К ADC (по вашим словам не стандартизует), а вот к DAC стандартизует? А к DMA? Или не стандартизует только к GPIO и ADC?

    • @Xeenych
      @Xeenych 3 роки тому

      @@VladimirMedintsev. на сайте арма перечислено все, что станадртизирует CMSIS. DMA, ADC, DAC, GPIO там нет. Прямую ссылку не могу дать, ютуб ее удаляет

  • @sledleo
    @sledleo 4 роки тому +2

    Спасибо!
    Жопа кругом, теперь понятно окончательно!
    Как вариант - CMSIS + Макросы, вот пример:
    we.easyelectronics.ru/blog/STM32/3191.html (Удобная настройка GPIO портов)
    Кто бы написал.... "Настоящих буйных мало - вот и нету вожаков."

    • @VladimirMedintsev
      @VladimirMedintsev  4 роки тому

      Спасибо любопытная статья.

    • @sledleo
      @sledleo 4 роки тому

      @@VladimirMedintsev да, осталось дело за малым ;)

  • @evolvent4257
    @evolvent4257 4 роки тому

    у SPL были екземплы, а у HALа нет нифига

    • @VladimirMedintsev
      @VladimirMedintsev  4 роки тому +1

      Как это нет экземплов? Я чуть со стула не упал... Их сотни, лежат в каталоге репозитории куба-мх

  • @MrASmitt
    @MrASmitt 4 роки тому +3

    Блин, хоть кто то объясняет нормально эту муть

  • @sergbo3114
    @sergbo3114 6 місяців тому

    Ну блин вы просто не поняли в чем смысл дефайнов при конфигурации в HAL. Смысл то в том что для каждой серии контроллера свой заголовочный файл. Мало того вам нужно посмотреть а какой хидер нужо прописать, а там еще можно не тот символ поставить. Куда проще просто раскоментить уже написанную строку. И допустим если вы хотите перепрыгнуть на другую серию вам придется в ручную все эти хидеры править. Плюс таким образом они ввели единую точку конфигурации, а не прыгать по разным файлам. Короче то что это не понятно зачем это не правда, цель была действительно абстрагироваться от серии.

  • @user-pq3cq1po8t
    @user-pq3cq1po8t 2 роки тому +1

    Я однозначно за HAL. И я не понимаю людей которым не хватает скорости работы HAL. Лично мне сложно представить ситуацию в которой бы я правил библиотеку HAL из за нехватки производительности... И не совсем понятно чем вас не устраивает проверка assert param, она ведь проверяется на этапе сборки проекта компилятором, в суммой программе она не выполняется...

    • @intelektum
      @intelektum 2 роки тому

      Все от задач зависит, вот у меня была задача, создавать пачки импульсов , с проамируемой длиной импульса паузой между импульсами и количество импульсов, задача была что бы можно было от 1 микросекунды до 100 микросекунд, вот теперь попробуй это сделать на хале на 103 контроллере ))) Сразу скажу не выйдет, на смисе удалось выжать от 2 микросекунд. на хале и близко не подойдеш к таким параметрам. Да можно взять более скоростной контроллер, вот только где их взять сей час по вменяемой цене, а вот 103 валяется куча.

  • @michaelpollack8136
    @michaelpollack8136 2 роки тому

    Автору , пожалуйста используйте правильное произношение: не "Дэ эм А" , а "Ди Эм Эй". Не "ГеПэ И О" , а "Джи Пи Ай йО". А так все нормально.

    • @VladimirMedintsev
      @VladimirMedintsev  2 роки тому

      Я буду использовать те выражения, которые мне удобны и привычны.

  • @timson3295
    @timson3295 3 роки тому +1

    Чувствую себя тупым..

  • @00ASpid00
    @00ASpid00 4 роки тому +1

    ХАЛ - сила, ЦМСИС - могила. Халу масти, цмсису по пасти.

  • @user-fs7eo3mn3v
    @user-fs7eo3mn3v Рік тому

    Спасибо