STM32 + FreeRTOS Часть 1. Создаем задачи через CubeMX.

แชร์
ฝัง
  • เผยแพร่เมื่อ 25 ธ.ค. 2024

ความคิดเห็น •

  • @admin_of_youtube
    @admin_of_youtube 5 ปีที่แล้ว +10

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

  • @kosyac
    @kosyac 3 หลายเดือนก่อน

    Дядька ты перевернул мое представление о костылях за 10 минут. уроки по 70 частей меркнут. 💪

  • @ДмитроПерший
    @ДмитроПерший 5 ปีที่แล้ว +5

    Спасибо за материал. Просто рассказано о сложном. Главное, что понятно объяснён принцип работы диспетчера задач. Я ещё не пробовал использовать ОС на микроконтроллерах, просто писал линейные алгоритмы, изощряясь так, что бы устройства работали быстро и не подвисали. Но теперь вижу, что операционка это очень хороший инструмент, который можно и нужно использовать.

  • @riariorovere2462
    @riariorovere2462 2 ปีที่แล้ว +3

    Владимир, огромное спасибо за понятный и полезный урок

  • @THX4GG
    @THX4GG 4 ปีที่แล้ว +2

    Как новичку пораженному "ардуинизмом", было очень интересно. Главное - подкрепили желание разбираться, а не просто тыкать наугад библиотеки и модули. Спасибо.

  • @serjkp
    @serjkp 5 ปีที่แล้ว +2

    С удовольствием смотрю Ваши уроки. Спасибо.

  • @maksimlepel9594
    @maksimlepel9594 4 ปีที่แล้ว +2

    Спасибо, наконец то нашел понятный и информативный материал по stm32cubemx и freeRTOS, все по делу

  • @arakeldesign
    @arakeldesign 5 ปีที่แล้ว +2

    Очень нравится ваш канал. Все просто и понятно! Лично мне интересны уроки с библиотекой LL

  • @maddocrusmad464
    @maddocrusmad464 5 ปีที่แล้ว +3

    Когда вы сказали а теперь увеличу, что бы видно было сразу лайк, наверное 5% из всех ютуберов про программирование догадываются если текст то пусть крупный.

  • @MrASmitt
    @MrASmitt 4 ปีที่แล้ว +6

    Блин, почему все так просто??? Почему вы так хорошо рассказываете????

  • @barabucho
    @barabucho 3 ปีที่แล้ว +4

    Отличное объяснение.Спасибо.

  • @RadioTexnik
    @RadioTexnik 5 ปีที่แล้ว +2

    Спасибо большое за содержательную информацию! Однозначно Лайк!

  • @АлександрДаскаль-е6т
    @АлександрДаскаль-е6т 4 ปีที่แล้ว +9

    Цикл While не используется. Да, потому, что сама ОС в нем крутится. И вызывает функции по таймеру. Я точно так же пишу, без ОС + события из вне. На 10- 15 задач хватает. Простая atmega справляется, и TFT тянет, несколько датчиков, приводами управляет, анимации, энкодер. Главное, чтоб подход был правильный, не в одной функции на долго не задерживаться. Но все равно спасибо, было интересно. Планирую на STM переходить, вот и смотрю пока видео.

  • @СавваСазанов
    @СавваСазанов ปีที่แล้ว +1

    Отличное и понятное объяснение! Спасибо))

  • @MySportOrgFamily
    @MySportOrgFamily 3 ปีที่แล้ว +5

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

  • @uriydolgonogiy434
    @uriydolgonogiy434 4 ปีที่แล้ว +2

    Хороший материал! Отличная работа, материал на уровне!

    • @VladimirMedintsev
      @VladimirMedintsev  4 ปีที่แล้ว +2

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

  • @ГеоргийОлиниченко-ш4г
    @ГеоргийОлиниченко-ш4г 3 ปีที่แล้ว +4

    ахрененно! где вы были раньше)))

  • @NIKOLAY_PSHONIA
    @NIKOLAY_PSHONIA 5 ปีที่แล้ว +1

    Спасибо за видео , отдельно спасибо за увеличения шрифта.

  • @ОлегКокошко
    @ОлегКокошко 5 ปีที่แล้ว +1

    Спасибо за ваш труд!

  • @benhummer185
    @benhummer185 ปีที่แล้ว +2

    Спасибо. Было интересно.

  • @НикитаЧернов-р1ц
    @НикитаЧернов-р1ц 4 ปีที่แล้ว +2

    Спасибо за отличное видео!

  • @konstantinb6270
    @konstantinb6270 4 ปีที่แล้ว +19

    Зачем же ATMEGA8 называть бедствием? Что плохого в данном МК? Отличный контроллер в своей нише, позволяет решать множество задач!

    • @СергейНикитин-ж6х
      @СергейНикитин-ж6х 4 ปีที่แล้ว +3

      Согласен. Отлично решает простые задачи. Есть, для МК от Atmega, OS от Di Halt с easyelectronics.

  • @bubikgenover9160
    @bubikgenover9160 5 ปีที่แล้ว +4

    Здорово разжёвано, ну уж прям для всех-всех. Вообще, на отличненько так осрв врывается и упрощает то, во что врывается.

  • @tupoy_ytub_uberi_psevdonim
    @tupoy_ytub_uberi_psevdonim 2 ปีที่แล้ว +1

    Вот введение прямо как про меня. Пришел с атмег на стм32 и решил начать изучение RTOS т.к. не хочу заморачиваться на счет таймеров и прерываний. Лучше пусть оно само там решает какие задачи и как выполнять.

  • @7race725
    @7race725 3 ปีที่แล้ว +1

    Спасибо, стало много понятнее.

  • @katrintasku4433
    @katrintasku4433 5 ปีที่แล้ว

    Большое спасибо за видео! Все очень доходчиво объяснили, помогли мне с учебой!:-)

  • @dmitriycold6906
    @dmitriycold6906 5 ปีที่แล้ว

    Очень наглядно ждем продолжения )))

  • @isorport32
    @isorport32 4 ปีที่แล้ว +12

    Вы так представили pic и atmel, как будто это какие то недоконтроллеры. А ведь именно на них лет 20 создавались огромная куча устройств. И даже на 8битниках0 прекрасно писались независимые потоки, так что присваивать их к "линейным", а тем более людей которые работали с ними, это просто ваше невежество)

    • @VladimirMedintsev
      @VladimirMedintsev  4 ปีที่แล้ว +4

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

    • @johnnynash1662
      @johnnynash1662 4 ปีที่แล้ว +5

      Сам до сих пор работаю с атмел. Преимуществ у них тоже хватает. Как то даже обидно стало.

    • @azazelloazazello1379
      @azazelloazazello1379 2 ปีที่แล้ว +1

      Помнится, у отца железный Феликс был. Без всяких этих ваших микропроцессоров, богомерзкого электричества и прочей чертовщины. И ничего, заводы строили, ракеты запускали в разные стороны. А ещё этим Феликсом и прибить можно было. А вы тут за атмел переживаете.🤣🤣🤣🤣😄😄😄😜

  • @ramzeschannel5892
    @ramzeschannel5892 5 ปีที่แล้ว +2

    Таким образом можно очень просто собирать несколько проектов в один!!! Я не очень силён в программировании, но учусь, и зачастую пользуюсь чужими проектами, а там не всегда точно то, что нужно. Здесь же можно куски кода пустить на параллельное исполнение и всё.

  • @moviemaker_inc
    @moviemaker_inc 4 ปีที่แล้ว +1

    Спасибо отличный материал. Побольше бы роликов замены Ардуино на STM32. Нужная тема в ней очень много затыков возникает которые мешают реализовывать идеи на STM32

    • @ArtemKAD1
      @ArtemKAD1 4 ปีที่แล้ว +1

      Не имеет смысла. Человек написавший на Ардуино заменять его на STM32 не станет потому как и так работает. Человек пишущий на STM на нем и начинает.

  • @mkfk52
    @mkfk52 4 ปีที่แล้ว +1

    Спасибо!

  • @aleksandrkozlov9286
    @aleksandrkozlov9286 5 ปีที่แล้ว +2

    Спасибо большое за интересную тему! Прошу\предлагаю показать реализацию след задачи.
    имеется два USART, накапливают data по прерываниям и передают с одного на другой. т.е. получается крос.
    скорей всего это нужно реализовать две задачи и передавать из одной задачи в другую с помощью очередей (но как это сделать тоже не понятно)
    +
    нужно что бы в параллели работали две задачи на Таймерах ( PWM, Encoder_Mode) и тоже передовали\принимали значения от taskUSART1,2
    Спасибо большое (вроде все просто, но Ваши уроки смотрят в основном новички, и много вещей не понятно, хотелось бы увидеть Вашу реализацию)

  • @fuzzmaster9348
    @fuzzmaster9348 5 ปีที่แล้ว +2

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

    • @VladimirMedintsev
      @VladimirMedintsev  5 ปีที่แล้ว +3

      Периодически такие задачи бывают. Реализуются обычно на свободном таймере. Либо, если совсем маленькая задержка, то просто гонять операции известной длины. В тактах известной частоты.

    • @НиколайПр-з3в
      @НиколайПр-з3в 5 ปีที่แล้ว

      Для STM32 я так делаю - пока не подводила:
      void NP_TIM_delayUS(uint32_t us) {
      volatile uint32_t counter = 7*us;
      while (counter--) ;
      }

    • @ИванЗайцев-ъ5т
      @ИванЗайцев-ъ5т 5 ปีที่แล้ว +1

      А что мешает через sys timer сделать задержки

    • @VladimirMedintsev
      @VladimirMedintsev  5 ปีที่แล้ว +1

      @@ИванЗайцев-ъ5т А смысл?

    • @ИванЗайцев-ъ5т
      @ИванЗайцев-ъ5т 5 ปีที่แล้ว +1

      @@VladimirMedintsev более грамотное использование ресурсов камня. К тому же включая доп периферию увеличиваем потребление. Что критично для маложрущих устройств.

  • @Krotonyasha
    @Krotonyasha 4 ปีที่แล้ว

    Спасибо! Хороший формат!

  • @electronicelectronic-wo3yk
    @electronicelectronic-wo3yk 5 ปีที่แล้ว +2

    Здравствуйте! А как вы боритесь с кубовскими комментариями? У меня палец пролистывать зелень устает.

    • @VladimirMedintsev
      @VladimirMedintsev  5 ปีที่แล้ว +2

      Когда проект на финальной стадии - стираю.

  • @2Aleksk
    @2Aleksk 5 ปีที่แล้ว +1

    Хорошая тема! Не совсем понял с каким периодом переключается процессор по прерыванию таймера 2 между тремя задачами (что такое тик? Это тик таймера или процессора?). Каков период обновления данной RTOS по аналогии с Windows - в ней полный цикл 20 мс, в Linux - 5 мс. RTOS никогда не использовал поэтому такие вопросы.

    • @VladimirMedintsev
      @VladimirMedintsev  5 ปีที่แล้ว +4

      Да, мое упущение, хотел в следующем видео этим заняться. Tick - настраивается. По умолчанию 1 миллисекунда. В следующем видео осветим так сказать.

    • @azzzza9957
      @azzzza9957 5 ปีที่แล้ว +1

      в окне настройки FreeRTOS -> Config parameters: TICK_RATE_HZ (обновление в ГЦ)
      Более подробно тут www.freertos.org/a00110.html
      или docs.aws.amazon.com/en_us/freertos-kernel/latest/ref/reference130.html

    • @BalabayUA
      @BalabayUA 5 ปีที่แล้ว +3

      По умолчанию 1 милисек, если задачи с одинаковыми приоритетами,...
      Одним словом, полноценная real time OS. Без проблем запускается в синей таблетке на STM32F103C8T6 с FatFS + microSD + 3 шт DS18B20 + SPI LCD 128x160 + часы DS3231 + кнопки

    • @Voha
      @Voha 5 ปีที่แล้ว

      Serj Balabay насколько помню, DS18B20 нужны задержки в микросекундах. Каким образом их в RTOS реализовали?

  • @BalabayUA
    @BalabayUA 5 ปีที่แล้ว +3

    А мне чёт не понравилась надстройка HAL над FreeRTOS. Предпочитаю самому прикручивать оригинальную версию FreeRTOS к коду от куба. Ничего сложного нет, только с приоритетами прерываний разобраться.

    • @VladimirMedintsev
      @VladimirMedintsev  5 ปีที่แล้ว +2

      Да собственно почему бы и нет. Там действительно нет ничего сложного.

    • @СергейВасильев-к9ж2ж
      @СергейВасильев-к9ж2ж 4 ปีที่แล้ว

      Так можно же просто api freertos из под cmsis вызывать не тратя время на прикручивания

  • @maximpetrov2742
    @maximpetrov2742 5 ปีที่แล้ว +1

    Спасибо ! Хотелось бы увидеть по больше о внутреннем устройстве ос , как устроена та же параллельность процессов , возможно написание аналога ) очень круто , буду ждать продолжения PS сейчас Таненбаума по ОСям читаю , в задумках есть реализация похожего чисто для себя , для того чтобы так сказать скилл прокачать )

    • @VladimirMedintsev
      @VladimirMedintsev  5 ปีที่แล้ว

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

    • @maximpetrov2742
      @maximpetrov2742 5 ปีที่แล้ว

      @@VladimirMedintsev не имел в виду аналог ртоса ( я имел в виду часть какого то функционала .

    • @VladimirMedintsev
      @VladimirMedintsev  5 ปีที่แล้ว

      А часть какого функционала вы имели ввиду? Аж интересно.

    • @maximpetrov2742
      @maximpetrov2742 5 ปีที่แล้ว

      @@VladimirMedintsev вот примерно то, о чем у вас вышло второе видео про free rtos , может как то не так выразился )

    • @DigiCatBlog
      @DigiCatBlog 5 ปีที่แล้ว

      @@VladimirMedintsev что за сейф версии?

  • @maksimlepel9594
    @maksimlepel9594 4 ปีที่แล้ว

    Спасибо

  • @bul2012
    @bul2012 5 ปีที่แล้ว +1

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

    • @VladimirMedintsev
      @VladimirMedintsev  5 ปีที่แล้ว

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

    • @bul2012
      @bul2012 5 ปีที่แล้ว +3

      @@VladimirMedintsev не , я не навязываю "свой стиль написания кода" , как сказал выше , я ещё не дошел до такого уровня чтобы кому-то советы давать. Просто таймеры в стм32 меня очень сильно обрадовали , и решил поделиться своим малым опытом и субъективным мнением.
      А так , вы очень хорошо рассказали про фриртос, для меня честно это было откровением. Подписался , колокол врубил , жду продолжения))

  • @SergeyKarpesh
    @SergeyKarpesh 4 ปีที่แล้ว

    Хорошая подача материала

  • @Игорь-164
    @Игорь-164 7 หลายเดือนก่อน

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

    • @VladimirMedintsev
      @VladimirMedintsev  7 หลายเดือนก่อน +1

      Уалывает не только HAL_Delay, но и страдает операционная система ввиду того, что функция HAL_Delay написана не правильно.

  • @WaAallE
    @WaAallE ปีที่แล้ว

    На сколько "раздувается" код при переходе с чистой процедурки на freeRTOS? в Том ключе, что стоит ли пробовать freeRTOS на "малокубатурных", простых контроллерах вроде stm32f103c6t6?

  • @andreylapshov5716
    @andreylapshov5716 3 ปีที่แล้ว

    Так сохранение можно по прерываниям сделать тоже ) но с ртос выходит удобнее

  • @Asmcavr
    @Asmcavr 4 ปีที่แล้ว +1

    Расскажите пожалуйста как бороться с зависанием RTOS при использовании sprintf "f" (float). Я так и не смог победить используя штатные средства. Я подменял heap и делал retarget. Печаль короче с ентим RTOS. Я только начал с ней работать и бац....
    Как определить сколько требуется стека для задачи?

    • @VladimirMedintsev
      @VladimirMedintsev  4 ปีที่แล้ว +3

      С такой функцией как sprintf беда беда беда и тут проблема не во freertos а в sprintf вы бы видели сколько стека она пожирает под свои нужны... советую или сильно увеличивать стек для задачи в которой вызываете этот позор или переходите на использование чего-то типа IntToA и аналогов. Мы просто повсеместно стараемся уходить от sprintf именно из-за непредсказуемой прожорливости и временных затрат.

    • @Asmcavr
      @Asmcavr 4 ปีที่แล้ว

      @@VladimirMedintsev можно посмотреть вашу реализацию этой проблемы?

    • @VladimirMedintsev
      @VladimirMedintsev  4 ปีที่แล้ว +4

      Да, как-нибудь сделаю видео на эту тему.

  • @manohinm2012
    @manohinm2012 3 ปีที่แล้ว +1

    Какая разница тогда между osDelay и обычным?

    • @Vasily-ze5wf
      @Vasily-ze5wf 3 ปีที่แล้ว +6

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

  • @VAscetic
    @VAscetic 3 ปีที่แล้ว

    Безусловно полезная штуковина, если задач много. Если задачи 2, то можно организовать задержку по-другому, не занимая время проца, а заставляя его проверять соответствующую переменную время от времени. Особенно, когда в контроллере есть DMA, процу достаточно за несколько тактов настроить поток, а дальше заниматься другими делами, до флага завершения.
    Сколько весит FreeRTOS?

  • @АлександрПронин-х3ъ
    @АлександрПронин-х3ъ 4 ปีที่แล้ว

    Владимир, я не совсем пронял, каким образом настройки по ОС и ее "внедрению", которые Вы производили в CUBEMx, Вы перенесли в проект Keil? Извините за глупый вопрос. Возможно Вы это уже показывали где-то ранее в своих роликах. Если так, то дайте пожалуйста ссылку.

    • @VladimirMedintsev
      @VladimirMedintsev  4 ปีที่แล้ว

      В кубе нажал на кнопку - сгенерировать код. Он сам собрал весь проект с библиотеками и запустил кейл. Это его (куба) работа.

    • @АлександрПронин-х3ъ
      @АлександрПронин-х3ъ 4 ปีที่แล้ว

      @@VladimirMedintsev Спасибо за ответ.

  • @EvgenMo1111
    @EvgenMo1111 4 ปีที่แล้ว

    спасибо, пошел на алиэкспресс за SMTкой

  • @efiron
    @efiron ปีที่แล้ว

    Владимир, вопрос по многозадачности.
    Если один блок функций у меня работает в среднем 50-100 мксек. при рабочей частоте процессора 240 МГц, зачем мне ждать еще 900 мксек, когда операционная система переключит меня на другую задачу, если я могу выполнять свой функционал быстрее?
    Жесткий delay, это конечно парадокс в мире программирования.
    Я, например, создал библиотеку как класс "ТАЙМЕР" с необходимым мне функционалом.
    Для задержки в какой-то функции (та же мигалка светодиодом) я создаю Таймер "светодиод", и далее в функции, вызываю проверку на окончание таймера, буквально несколько строк кода, и работа программы выполняется дальше.
    Таймер можно включить, выключить, поставить на паузу, сбросить, вызвать проверку, запросить статус.
    Вопрос - что мне даст верхний уровень в виде FreeRTOS, кроме как задержку выполнения ПО?
    Я понимаю, это было бы полезным, если данная система контролировала определенные ячейки памяти в базе данных, и по их изменению, прописанному в условии, переключала бы работу на функции.
    Но этот функционал и так может быть в виде системы прерываний. Да, его надо будет писать ручками, организуя работу базы данных согласно уже своему алгоритму верхнего уровня.
    Большинство об этом не заморачиваются, как дошла работа до определенной функции, так и обработали информацию.

    • @VladimirMedintsev
      @VladimirMedintsev  ปีที่แล้ว

      Я специально сделал большой курс по FreeRTOS, там есть ответы на эти вопросы. th-cam.com/play/PLiu4O2eIDAdUz50gTS33a2qozzDSFMouI.html

  • @HeavyHeavyvich
    @HeavyHeavyvich 5 ปีที่แล้ว +1

    советую перейти на Visual Studio + VisualGDB. Гораздо удобней разработка. И, конечно же, поддержка CubeMX из коробки

    • @VladimirMedintsev
      @VladimirMedintsev  5 ปีที่แล้ว +4

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

    • @НиколайПр-з3в
      @НиколайПр-з3в 5 ปีที่แล้ว +4

      ​@@VladimirMedintsev вы зря отказываетесь - я тоже использую Visual Studio + VisualGDB. Студия микрософтовская на порядок умнее и удобнее кэйла. А главное VisualGDB поддерживает и STM32 и ATMEL - можно писать все в одной идешке. До этого я пользовался Atmel Studio и Keil, теперь все проекты перенес в Visual Studio + VisualGDB и просто кайфую. И как мне кажется компиляция под STM32 в VisualGDB ну в 2 раза точно быстрее чем в Keil.

    • @HeavyHeavyvich
      @HeavyHeavyvich 5 ปีที่แล้ว

      @@VladimirMedintsev просто Вы не привыкли. Если бы VS была бы ужасом,то эта среда не была бы среди эталонов для разработки. Конечно,можно и эклипс,но большинство моих знакомых разрабов со стажем уходят постепенно из Keil в VS. Удобство и куча разных плюшек. Ну и, если сидеть на Keil, и не вникать в VS, то это чревато закостенением. Так человек, возможно, всю жизнь будет прогать железо. А работая в VS, человек потенциально может уже уйти в разработку под Win на плюсах, питоне, шарпе... На чем угодно. В том числе и JS и node.js. Переводя людей в VS ты делаешь им большое одолжение. Это поможет им развиваться по карьере.

    • @VladimirMedintsev
      @VladimirMedintsev  5 ปีที่แล้ว +5

      @@HeavyHeavyvich Меня лично в этой связке не устраивает только один компонент, вы его еще ошибочно приравняли к эталонам, а именно VS от Microsoft. Да, она популярна, никто не спорит но имеет свои недостатки и ограничения. Майкрософт пытается охватить необъятный мир но цель у этого проста - пересадить разработчиков под свою операционную систему.
      Если пространно рассуждать на тему "уйти в программирование", то я как бы не жалуюсь, если надо писать под Линукс или Винду то есть QT. Который гораздо больше похож на эталон разработки. Скажем так, на чем написана Google Earth? Там использована среда разработки QT. Как, впрочем, и в огромном количестве других приложений. Мир он не однополярен.
      Отдельно про закостенение. Усидеть одновременно на нескольких стульях не получится. Профессиональный программист должен определиться он либо специализируется на низкоуровневом программировании или лезет в такие смешные языки как C# придуманный для снижения точки входа в C++ программирование.
      Здесь каждый должен выбирать самостоятельно. И дискуссии на тему что лучше VS или Keil я предпочитаю не вести. Они не имеют смысла. Т.к. каждый должен выбирать инструмент под себя и стараться использовать его по максимуму.
      А уж про VisualGDB давайте я лучше промолчу. Это творение я даже обсуждать не хочу. Есть масса контор где это творение категорически не приветствуется и я ее тоже не использую.
      Собственно разговор не имеет смысла здесь еще и по той причине, что ролик посвящен не среде программирования, а FreeRTOS.

    • @VladimirMedintsev
      @VladimirMedintsev  5 ปีที่แล้ว +3

      @@HeavyHeavyvich Я же говорю, у каждого свой пусть вы к VS пришли, я от нее несколько лет назад ушел. У каждого свой путь это естественно и нормально. Я никому не запрещаю использовать VS и прочее. Я не рекламирую Keil и это тоже можно заметить. Более того, я даже стараюсь не показывать полностью окно IDE потому что оно не имеет никакого значения. Но мои видео будут с использованием среды Keil и никогда не будут с VS.

  • @yuriychip4053
    @yuriychip4053 5 ปีที่แล้ว

    хотелось бы увидеть реализацию I2C на фриртос запись и чтение по адресам устройств (прикрутить дисплей по шине I2C)

    • @VladimirMedintsev
      @VladimirMedintsev  5 ปีที่แล้ว +3

      Использование периферии процессора С или БЕЗ FreeRTOS никак не отличается. Если у вас какой-либо код работает без операционной системы, то просто перенесите его в выбранную задачу и позаботьтесь об отсутствии HAL_Delay() и прочих синтетических задержек.

  • @АлексейСергеев-ф6г
    @АлексейСергеев-ф6г 4 ปีที่แล้ว

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

    • @eugenedukatta9355
      @eugenedukatta9355 ปีที่แล้ว

      А для этого существует такая штука "синхронизация" процессов. Сюда же в помощь "мьютексы", "семафоры" - специальные флаги. Это для безопасной работы с "распределяемыми ресурсами" или с "ресурсами общего доступа". Это может быть что угодно, начиная от одной переменной и заканчивая чем-то сложным типа устройством связи, интерфейсом и др, в вашем примере общий порт. Кратко - пока один процесс не завершит работу с общим ресурсом, другой процесс к нему доступ не получит. Это все теория операционных систем, кстати не стоит пугаться такого страшного названия. И это все уже заточено в FreeRTOS на то она и ОС. Если у вас что-то глючит при использовании ОС, значит вы что-то неправильно делаете, не используете готовый сервис от ОС, не объявляете ресурс как "общего доступа" и т.д.

  • @azzzza9957
    @azzzza9957 5 ปีที่แล้ว

    Паралельно можно начинать пилить видео о Embedd-Linux. =)
    ST представила новинку в лице STM32MP1 с ценой чипа равной STM32F407VE

    • @VladimirMedintsev
      @VladimirMedintsev  5 ปีที่แล้ว +2

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

  • @motoday3580
    @motoday3580 5 ปีที่แล้ว

    Продолжайте уроки по ос , спасибо.

  • @statstopfinish
    @statstopfinish 5 ปีที่แล้ว +1

    Обновил CubeMX до 5.1.0 , создал проект для STM32F103VBT, куб пишет что версия FreeRTOS 9.0.0 CMSIS V1. В видео вы говорите что есть более новая версия FreeeRTOS, мне не понятно как обновить версию FreeRTOS в CubeMX , и есть ли смысл это вообще делать.

    • @VladimirMedintsev
      @VladimirMedintsev  5 ปีที่แล้ว +1

      Пакеты для куба собирает ST и в большинство пакетов включили версию 9 (на текущий момент). В то же время на сайте FreeRTOS на текущий момент доступна версия 10 операционной системы. Для обновления вам просто необходимо заменить несколько файлов в папке собранного проекта. Однако что-то мне подсказывает что изменения между версиями 9 и 10 врядли будут вами как начинающим замечены. А вот версии FreeRTOS модифицированной под 6й компилятор я еще не видел. Понятно что там всего в одном файле надо макросы подправить, но думать лень. А это сулит выйгрыш в размере кода.

  • @tupoy_ytub_uberi_psevdonim
    @tupoy_ytub_uberi_psevdonim 2 ปีที่แล้ว

    У меня вот STM32F401 и на выбор есть CMSIS V1 и V2 когда нажимаю freertos, какой выбирать?

    • @VladimirMedintsev
      @VladimirMedintsev  2 ปีที่แล้ว +1

      В зависимости от того, какой функционал вам нужен. Начните с первого.

    • @tupoy_ytub_uberi_psevdonim
      @tupoy_ytub_uberi_psevdonim 2 ปีที่แล้ว

      @@VladimirMedintsev спасибо. Мне куб еще попросил включить USE_NEWLIB_REENTRANT предупредив об увеличении расхода озу. Подскажете что это?

  • @НиколайПр-з3в
    @НиколайПр-з3в 5 ปีที่แล้ว

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

    • @VladimirMedintsev
      @VladimirMedintsev  5 ปีที่แล้ว

      А что не так с моим кубиком?

    • @НиколайПр-з3в
      @НиколайПр-з3в 5 ปีที่แล้ว

      @@VladimirMedintsev - я такой куб никогда не видел, теперь он выглядит совсем иначе. Теперь все не там где у вас и не так как у вас.

    • @VladimirMedintsev
      @VladimirMedintsev  5 ปีที่แล้ว

      @@НиколайПр-з3в Удивлен, у меня вроде последняя версия куба, всегда обновленная по максимуму. STM32CubeMX Rev 5.0.1

    • @НиколайПр-з3в
      @НиколайПр-з3в 5 ปีที่แล้ว

      @@VladimirMedintsev Ооо - у меня 4.27 ставил 1 месяц назад и думал что она самая новая и во всех примерах в инете куб выглядит как и у меня, а такой куб как у вас я увидел только у вас на канале :) И мой куб образца 2019 года - может у них каких 2 различных ветки?

    • @VladimirMedintsev
      @VladimirMedintsev  5 ปีที่แล้ว

      Программа обновляется несколько раз в год. Ну и библиотеки раза 3-4 за год. Так что нажмите обновить и она сама скачает что ей надо.

  • @asurahan
    @asurahan 4 ปีที่แล้ว

    Расскажите подробнее про ЦАП и АЦП.
    и так же очень сильно интересует протокол USB вот по этому мало уроков.
    спасибо

    • @VladimirMedintsev
      @VladimirMedintsev  4 ปีที่แล้ว +2

      Простите но я не снимаю обучающих видео. Этот канал просто блог и ничего большего.

    • @yunushkin88
      @yunushkin88 4 ปีที่แล้ว +1

      если выдержите манеру рассказчика то рекомендую narod stream канал в youtube там все распространенные на Руси мк. Ну есть и сайт с текстовыми уроками

  • @DIY_Repair2024
    @DIY_Repair2024 4 ปีที่แล้ว +4

    Простите, ну произошла ошибка в i2c и что дальше, пошлите туда ресет, если молчит. Если она наглухо зависла или устойство, которое на ней висит, то rtos в данном случае вам также не поможет. А ошибка в i2c блокирующей и не будет. Сможете опровергнуть? Желательно с примером, когда срыв клока, допустим, приведет к блокировке бесконечного цикла. Я просто не понимаю, как это возможно. Спасибо.
    P.S. И pic прекрасно выпускаются и продаются микрочипом до сих пор, прекрасно применяются и развиваются ;)

    • @VladimirMedintsev
      @VladimirMedintsev  4 ปีที่แล้ว +3

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

  • @CoBaldr
    @CoBaldr 5 ปีที่แล้ว

    USB на регистрах интересует, хотя бы чтото примитивное bulk передача в libusb. Сложно ибо есть отличия в реализациях usb разных семейств.

    • @VladimirMedintsev
      @VladimirMedintsev  5 ปีที่แล้ว

      А что правда у кого-то столько времени свободного есть чтобы usb на регистрах писать? Я думал в наше время этим уже никто не балуется.

    • @CoBaldr
      @CoBaldr 5 ปีที่แล้ว

      @@VladimirMedintsev увы есть :D не думаю что это популярная тема.

  • @tupoy_ytub_uberi_psevdonim
    @tupoy_ytub_uberi_psevdonim 2 ปีที่แล้ว

    Хм. Смотрю немного поменяли структуру. В версииfreertos 10 куб генерирует создание задач в main.c а не как на видео в freertos.c. Похоже буду сталкиваться с такими переносами часто, благо поиск по коду работает быстро)

  • @statstopfinish
    @statstopfinish 5 ปีที่แล้ว

    Хотелось бы увидеть реализацию FreeRTOS + feemudbus. Что то на ютубе на эту тему сосем мало информации , на русском вообще нет . Может у вас в планах будет такой урок, я думаю он будет востребован в виду отсутствия подобных

    • @VladimirMedintsev
      @VladimirMedintsev  5 ปีที่แล้ว

      Если вы имели ввиду FreeMODBUS то видео по этой теме не будет.

  • @azazelloazazello1379
    @azazelloazazello1379 3 ปีที่แล้ว

    Добрые старые потоки? Вы знакомы с RIOT OS? Как то мало информации в нете об этой ос

    • @VladimirMedintsev
      @VladimirMedintsev  3 ปีที่แล้ว

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

    • @azazelloazazello1379
      @azazelloazazello1379 3 ปีที่แล้ว

      @@VladimirMedintsev , спасибо, посмотрю внимательнее. Просто в заголовках с первого взгляда крысу(riot)))) не нашел.

    • @azazelloazazello1379
      @azazelloazazello1379 3 ปีที่แล้ว +2

      Я, так сказать, в самом начале процесса познания МК. С Си и С++ в целом относительно неплохо знаком. Ищу оптимальный вход в проблему. Ваши ролики хорошо помогают.

  • @ПаяльникОтвёрткович
    @ПаяльникОтвёрткович 4 ปีที่แล้ว

    Уважаемый Владимир, очень хорошие уроки, огромное вам за них спасибо! Но не могли бы вы сделать урок по FreeRTOS v. 10.0.1. Также как вы создал задачу но она не работает. И в чем причина не могу понять.
    Визульно не нашел файла FREERTOS.h, да и FREERTOS.c куда скуднее чем у вас.

  • @maxsh8297
    @maxsh8297 5 ปีที่แล้ว

    А что будет если перед HAL_DELAY() убрать osDelay() ? Задачи также не будут виснуть или весь цимус независания именно в вызове где только можно osDelay() ?

    • @VladimirMedintsev
      @VladimirMedintsev  5 ปีที่แล้ว +2

      Я не понял вашего вопроса. Возможно если вы сформулируете свой вопрос по-другому я смогу на него ответить.
      Функция HAL_Delay() это ожидание, программа не продолжает свое выполнение и находится в теле функции до тех пор, пока не истечет заданное в параметре время. А функция osDelay() сообщает диспетчеру задач операционной системы, что задаче из которой был осуществлен вызов функции osDelay() можно не выделять процессорное время на столько-то миллисекунд.

    • @U_video
      @U_video 5 ปีที่แล้ว +2

      HAL_DELAY() - вы тупо крутитесь в цикле какое-то время, ну или ожидаете, пока какой-то счётчик не отсчитает нужное время. А при osDelay() запускается планировщик, выгружает контекст текущей задачи и загружает другую задачу, если такая имеется.

  • @statstopfinish
    @statstopfinish 5 ปีที่แล้ว

    У меня непонятная ситуация с FreeRTOS, попробовал все повторить как у вас , но используя библиотеку LL, программа молчит, задачи не запускаются. Даже не знаю что и делать, куда смотреть , или LL и FreeRTOS несовместимы.

    • @VladimirMedintsev
      @VladimirMedintsev  5 ปีที่แล้ว +2

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

  • @janedoe6182
    @janedoe6182 5 ปีที่แล้ว +7

    Когда люди постоянно натыкивают мышкой в менюшках конфигурацию периферии и даже структуру программы, не понимая толком что происходит под обертками, они начинают стремительно тупеть, прошивки начинают расти в объеме и тормозить. Есть видео с бенчмаркми чистого кода на AVR, того же кода собранного с ардуиновскими библиотеками и такие же на STM32, чистого кода и с STDPeriph, и там разница в скорости в десятки раз отличается. Видео называется "Тормознутость ардуино". Это не к тому, что ОС и обертки HAL не нужны, а к тому, что их нужно очень осторожно и избирательно применять. А пока такого понимания и уверенности, что это абсолютно необходимо, нет, особенно на начальной стадии, лучше все конфигурировать руками, и циклы учиться писать умные и надежные, которые не зависают.

    • @janedoe6182
      @janedoe6182 5 ปีที่แล้ว +5

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

    • @VladimirMedintsev
      @VladimirMedintsev  5 ปีที่แล้ว +6

      Как у классиков смешалось все, люди, кони все в одну кашу. AVR, ардуино, STM32... Как можно вообще с чем-то сравнивать код ардуино, который создан для обучения детей в школе с кодом для AVR? Как и каким образом можно сюда приплетать STM32. Ядра разные, я уж не говорю, про тот факт, что была использована методика тестирования не показывающая вообще ничего. Там автору ролика скучно было и решил он сделать видео на животререщущую тему. В вопросе разобраться не потрудился, т.е. дилетанство чистой воды. А про "натыкивают" люди ну даже комментировать смысла нету.

    • @janedoe6182
      @janedoe6182 5 ปีที่แล้ว +7

      @@VladimirMedintsev там сравнивается скорость работы не AVR и STM32, а скорость работы чистого кода и тех же действий, на той же платформе, но с использованием оберток. STM там для сравнения самого себя простого и с библиотекой STDPeriph

    • @zud7127
      @zud7127 5 ปีที่แล้ว +5

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

    • @Mirk047
      @Mirk047 4 ปีที่แล้ว +1

      Пока одни устраивают холивары на тему "ардуино для даунов", другие на проектах на ардуинах рубят бабосики.
      Таки в чем сыр-бор если на это есть своя ниша с финансированием?

  • @Art1x_y
    @Art1x_y 4 ปีที่แล้ว +1

    Все перестанет функционировать при задержке в мейне? А как же прерывания, ДМА, вочдоги, таймера и т.д.?)

  • @stanki-cnc
    @stanki-cnc 3 ปีที่แล้ว

    странно, что у меня hal_delay всеравно тормозит весь код

    • @stanki-cnc
      @stanki-cnc 3 ปีที่แล้ว +1

      сменил с++ на с и теперь все нормально работает

    • @nikotinesmola
      @nikotinesmola 2 ปีที่แล้ว

      @@stanki-cnc Это где так меняется?

  • @ugene4063
    @ugene4063 5 ปีที่แล้ว

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

    • @ugene4063
      @ugene4063 5 ปีที่แล้ว

      Всё. Дошло как оно должно быть в таком случае.

    • @VladimirMedintsev
      @VladimirMedintsev  5 ปีที่แล้ว +3

      А зачем нескольким задачам делить периферию? Так не есть правильно. Сделайте задачу обслуживающую uart а те, кому надо пусть в очередь кидают и из очереди получают необходимые данные. Так правильнее. Получится задача обслуживающая периферийное оборудование.

    • @ugene4063
      @ugene4063 5 ปีที่แล้ว +2

      @@VladimirMedintsev да. Именно это мне и пришло в голову

    • @asurahan
      @asurahan 4 ปีที่แล้ว +1

      @@ugene4063 UAR не пострадает если его инициализировать отдельно а писать или читать уже в задачах. всеравно в один момент времени может работать всего одна задача. многозадачность не есть одновременность. я делал что одна задача читала а другая писала и ничего все работало....

    • @СергейВасильев-к9ж2ж
      @СергейВасильев-к9ж2ж 4 ปีที่แล้ว +1

      Mutex вам в помощь

  • @victorsi1992
    @victorsi1992 4 ปีที่แล้ว +5

    От навіщо ви так жорстоко до восьмибітних мікроконтролерів??? А я пам'ятаю, як freeRtos встановлювали на Atmegа, і навіть сам створив один невеличкий промисловий проект, який і досі працює. )))

  • @dmitryponyatov2158
    @dmitryponyatov2158 4 ปีที่แล้ว

    А акторную модель не приходилось использовать?
    Там смысл в том, что поток управления реализуется через передачу сообщений, на каждое сообщение отрабатывает максимально короткий обработчик, который делает кусочек работы, и порождает новое сообщение в очередь, откладывая выполнение до срабатывания обработчика следующего шага выяисления.
    За счет того, что очередь может работать с приоритетами, реализуется кооперативная многозадачность

  • @Vlad_4572
    @Vlad_4572 3 ปีที่แล้ว

    Флэш память в контроллере, но заливаем код, почему-то в процессор))

  • @Vasily-ze5wf
    @Vasily-ze5wf 3 ปีที่แล้ว +2

    На секундочку, это "бедствие" (коим назван Atmel) в те-же 12,6кБ, которые здесь весит пустышка, созданная кубом, помещает на два порядка более развитую программу, чем весь результат этого видео.

    • @agedmagister4562
      @agedmagister4562 3 ปีที่แล้ว +3

      не принимай в обиду. Все мы работали с 8-бит МК и писали код битый час пытаясь сделать программы максимально эффективными и маленькими.
      Все эти старенькие контроллеры оставили добрые воспоминания.

    • @romandavydov8684
      @romandavydov8684 2 ปีที่แล้ว

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

  • @aidagamemnon
    @aidagamemnon 4 ปีที่แล้ว +1

    Это, конечно, всё замечательно. Только контроллер применяется обычно в задачах с жестко заданным таймингом и последовательностью операций, а тут совершенно не понятно когда какая задача на какую переключается и в каком порядке и сколько тактов на переключение. Это больше для камней типа процессоров типа ARM A серии нежели ARM M.

    • @VladimirMedintsev
      @VladimirMedintsev  4 ปีที่แล้ว +1

      А причем тут тайминг и задачи? Тут совершенно другой подход к программированию.

    • @aidagamemnon
      @aidagamemnon 4 ปีที่แล้ว +1

      @@VladimirMedintsev Я уже объяснил к чему. Если вы пишете чисто софтверное приложение, то все отлично. А если типичное приложение для управления внешними устройствами (для чего и производятся контроллеры) то оно не подходит.

    • @VladimirMedintsev
      @VladimirMedintsev  4 ปีที่แล้ว +4

      @@aidagamemnon Ок, не проблема. Не подходит так не подходит, это ваше право иметь собственное мнение.
      А для интересующихся я потом сделаю видео и объясню как с этим жить именно на микроконтроллерах и почему необходимо использовать FreeRTOS в классических управляющих алгоритмах.

    • @Asmcavr
      @Asmcavr 4 ปีที่แล้ว +1

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

    • @t966rt
      @t966rt 4 ปีที่แล้ว

      Чем М отличается от А?
      Для того о чем вы пишите как раз и придумали RTOS. Расшифруйте аббревиатуру RTOS. Real-Time о чем то должно говорить. Почитайте про приоритеты, вытеснение задач, про примитивы синхронизации и т.п.

  • @aleksandrzakutnyy4450
    @aleksandrzakutnyy4450 5 ปีที่แล้ว +1

    предлагаю написать программу с 3 блинками с периодами 1с, 0.01с, 0.0001с

    • @VladimirMedintsev
      @VladimirMedintsev  5 ปีที่แล้ว

      Скажите, а зачем писать такую программу?
      В данном примере мигание светодиодами - просто чтобы проиллюстрировать работу двух независимых задач и не более. А если вам необходимо создать "блинькающую" программу то просто настраивайте таймер и все проблемы решены.

    • @aleksandrzakutnyy4450
      @aleksandrzakutnyy4450 5 ปีที่แล้ว +1

      @@VladimirMedintsev в качестве примера. а если конкретно, то можно рассмотреть задачу регулятора тока, регулятора скорости, индикатора в электроприводе

    • @VladimirMedintsev
      @VladimirMedintsev  5 ปีที่แล้ว

      Ок как-нибудь сделаем.

  • @marxtl3842
    @marxtl3842 2 ปีที่แล้ว

    Дейкстра и Кнут тихо курят в сторонке. Доступность вычислительных сред породила новый уровень програмирования.

  • @LeonidKuksin
    @LeonidKuksin ปีที่แล้ว

    ../Core/Src/freertos.c:21:10: fatal error: FreeRTOS.h: No such file or directory
    21 | #include "FreeRTOS.h"
    | ^~~~~~~~~~~~
    compilation terminated.
    make: *** [Core/Src/subdir.mk:40: Core/Src/freertos.o] Error 1
    make: *** Waiting for unfinished jobs....
    ../Core/Src/main.c:21:10: fatal error: cmsis_os.h: No such file or directory
    21 | #include "cmsis_os.h"
    | ^~~~~~~~~~~~
    compilation terminated.
    make: *** [Core/Src/subdir.mk:40: Core/Src/main.o] Error 1
    "make -j4 all" terminated with exit code 2. Build might be incomplete.
    В дереве проекта Middleware/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.h этот файл есть. Что я неправильно делаю?
    Спасибо.

    • @VladimirMedintsev
      @VladimirMedintsev  ปีที่แล้ว

      Скорее всего у вас к этому файлу не прописаны пути.

    • @БақытжанҚуанышбаев
      @БақытжанҚуанышбаев 10 หลายเดือนก่อน

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