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

Sdílet
Vložit
  • čas přidán 5. 09. 2024

Komentáře • 185

  • @admin_of_youtube
    @admin_of_youtube Před 5 lety +10

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

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

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

  • @user-gh4tc2wo5k
    @user-gh4tc2wo5k Před 5 lety +5

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

  • @serjkp
    @serjkp Před 5 lety +2

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

  • @MrASmitt
    @MrASmitt Před 4 lety +6

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

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

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

  • @isorport32
    @isorport32 Před 4 lety +12

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

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

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

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

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

    • @azazelloazazello1379
      @azazelloazazello1379 Před 2 lety +1

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

  • @user-ci4fz9co3b
    @user-ci4fz9co3b Před 4 lety +9

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

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

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

  • @konstantinb6270
    @konstantinb6270 Před 4 lety +19

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

    • @user-io2oc6sh3g
      @user-io2oc6sh3g Před 4 lety +3

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

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

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

  • @arakeldesign
    @arakeldesign Před 5 lety +2

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

  • @bubikgenover9160
    @bubikgenover9160 Před 5 lety +4

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

  • @user-ke1jq2wt8o
    @user-ke1jq2wt8o Před 3 lety +4

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

  • @RadioTexnik
    @RadioTexnik Před 4 lety +2

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

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

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

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

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

  • @uriydolgonogiy434
    @uriydolgonogiy434 Před 4 lety +2

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

    • @VladimirMedintsev
      @VladimirMedintsev  Před 4 lety +2

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

  • @NIKOLAY_PSHONIA
    @NIKOLAY_PSHONIA Před 4 lety +1

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

  • @user-hm1wg8gw3r
    @user-hm1wg8gw3r Před rokem +1

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

  • @tupoy_ytub_uberi_psevdonim

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

  • @user-cc9nk2ib2l
    @user-cc9nk2ib2l Před 5 lety +1

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

  • @benhummer185
    @benhummer185 Před rokem +2

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

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

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

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

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

  • @user-rq9ji8kb4w
    @user-rq9ji8kb4w Před 4 lety +2

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

  • @aleksandrkozlov9286
    @aleksandrkozlov9286 Před 5 lety +2

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

  • @ramzeschannel5892
    @ramzeschannel5892 Před 5 lety +2

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

  • @7race725
    @7race725 Před 3 lety +1

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

  • @katrintasku4433
    @katrintasku4433 Před 5 lety

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

  • @maximpetrov2742
    @maximpetrov2742 Před 5 lety +1

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

    • @VladimirMedintsev
      @VladimirMedintsev  Před 5 lety

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

    • @maximpetrov2742
      @maximpetrov2742 Před 5 lety

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

    • @VladimirMedintsev
      @VladimirMedintsev  Před 5 lety

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

    • @maximpetrov2742
      @maximpetrov2742 Před 5 lety

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

    • @DigiCatBlog
      @DigiCatBlog Před 5 lety

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

  • @dmitriycold6906
    @dmitriycold6906 Před 5 lety

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

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

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

    • @VladimirMedintsev
      @VladimirMedintsev  Před 5 lety

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

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

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

  • @Krotonyasha
    @Krotonyasha Před 4 lety

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

  • @mkfk52
    @mkfk52 Před 4 lety +1

    Спасибо!

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

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

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

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

    • @user-pc9br8yt6j
      @user-pc9br8yt6j Před 4 lety

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

  • @EvgenMo1111
    @EvgenMo1111 Před 3 lety

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

  • @user-rx4rp5yb5j
    @user-rx4rp5yb5j Před 5 lety

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

    • @VladimirMedintsev
      @VladimirMedintsev  Před 5 lety

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

    • @user-rx4rp5yb5j
      @user-rx4rp5yb5j Před 5 lety

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

    • @VladimirMedintsev
      @VladimirMedintsev  Před 5 lety

      @@user-rx4rp5yb5j Удивлен, у меня вроде последняя версия куба, всегда обновленная по максимуму. STM32CubeMX Rev 5.0.1

    • @user-rx4rp5yb5j
      @user-rx4rp5yb5j Před 5 lety

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

    • @VladimirMedintsev
      @VladimirMedintsev  Před 5 lety

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

  • @azzzza9957
    @azzzza9957 Před 5 lety

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

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

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

  • @motoday3580
    @motoday3580 Před 5 lety

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

  • @andreylapshov5716
    @andreylapshov5716 Před 3 lety

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

  • @fuzzmaster9348
    @fuzzmaster9348 Před 5 lety +2

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

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

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

    • @user-rx4rp5yb5j
      @user-rx4rp5yb5j Před 5 lety

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

    • @user-tm5fp3xw9j
      @user-tm5fp3xw9j Před 5 lety +1

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

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

      @@user-tm5fp3xw9j А смысл?

    • @user-tm5fp3xw9j
      @user-tm5fp3xw9j Před 5 lety +1

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

  • @victorsi1992
    @victorsi1992 Před 4 lety +5

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

  • @VAscetic
    @VAscetic Před 3 lety

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

  • @electronicelectronic-wo3yk

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

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

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

  • @SergeyKarpesh
    @SergeyKarpesh Před 4 lety

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

  • @maksimlepel9594
    @maksimlepel9594 Před 3 lety

    Спасибо

  • @2Aleksk
    @2Aleksk Před 5 lety +1

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

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

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

    • @azzzza9957
      @azzzza9957 Před 5 lety +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 Před 5 lety +3

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

    • @Voha
      @Voha Před 5 lety

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

  • @yuriychip4053
    @yuriychip4053 Před 5 lety

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

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

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

  • @tupoy_ytub_uberi_psevdonim

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

  • @statstopfinish
    @statstopfinish Před 5 lety

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

    • @VladimirMedintsev
      @VladimirMedintsev  Před 5 lety

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

  • @user-vu7sx5er9j
    @user-vu7sx5er9j Před 4 měsíci

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

    • @VladimirMedintsev
      @VladimirMedintsev  Před 4 měsíci +1

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

  • @HeavyHeavyvich
    @HeavyHeavyvich Před 5 lety +1

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

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

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

    • @user-rx4rp5yb5j
      @user-rx4rp5yb5j Před 5 lety +4

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

    • @HeavyHeavyvich
      @HeavyHeavyvich Před 5 lety

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

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

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

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

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

  • @Vlad_4572
    @Vlad_4572 Před 2 lety

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

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

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

  • @Vasily-ze5wf
    @Vasily-ze5wf Před 3 lety +2

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

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

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

    • @romandavydov8684
      @romandavydov8684 Před 2 lety

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

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

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

  • @WaAallE
    @WaAallE Před 10 měsíci

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

  • @albertziatdinov1373
    @albertziatdinov1373 Před 4 lety +4

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

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

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

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

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

    • @Vasily-ze5wf
      @Vasily-ze5wf Před 3 lety +6

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

  • @CoBaldr
    @CoBaldr Před 5 lety

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

    • @VladimirMedintsev
      @VladimirMedintsev  Před 5 lety

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

    • @CoBaldr
      @CoBaldr Před 5 lety

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

  • @Asmcavr
    @Asmcavr Před 4 lety +1

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

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

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

    • @Asmcavr
      @Asmcavr Před 4 lety

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

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

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

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

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

    • @VladimirMedintsev
      @VladimirMedintsev  Před 4 lety

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

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

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

  • @efiron
    @efiron Před rokem

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

    • @VladimirMedintsev
      @VladimirMedintsev  Před rokem

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

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

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

    • @eugenedukatta9355
      @eugenedukatta9355 Před rokem

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

  • @statstopfinish
    @statstopfinish Před 5 lety +1

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

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

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

  • @janedoe6182
    @janedoe6182 Před 5 lety +7

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

    • @janedoe6182
      @janedoe6182 Před 5 lety +5

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

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

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

    • @janedoe6182
      @janedoe6182 Před 5 lety +7

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

    • @zud7127
      @zud7127 Před 4 lety +5

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

    • @Mirk047
      @Mirk047 Před 4 lety +1

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

  • @asurahan
    @asurahan Před 4 lety

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

    • @VladimirMedintsev
      @VladimirMedintsev  Před 4 lety +2

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

    • @yunushkin88
      @yunushkin88 Před 4 lety +1

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

  • @stanki-cnc
    @stanki-cnc Před 3 lety

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

    • @stanki-cnc
      @stanki-cnc Před 3 lety +1

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

    • @nikotinesmola
      @nikotinesmola Před 2 lety

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

  • @statstopfinish
    @statstopfinish Před 5 lety

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

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

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

  • @tupoy_ytub_uberi_psevdonim

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

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

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

    • @tupoy_ytub_uberi_psevdonim
      @tupoy_ytub_uberi_psevdonim Před 2 lety

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

  • @ugene4063
    @ugene4063 Před 5 lety

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

    • @ugene4063
      @ugene4063 Před 5 lety

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

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

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

    • @ugene4063
      @ugene4063 Před 5 lety +2

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

    • @asurahan
      @asurahan Před 4 lety +1

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

    • @user-pc9br8yt6j
      @user-pc9br8yt6j Před 4 lety +1

      Mutex вам в помощь

  • @maxsh8297
    @maxsh8297 Před 5 lety

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

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

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

    • @U_video
      @U_video Před 4 lety +2

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

  • @aleksandrzakutnyy4450
    @aleksandrzakutnyy4450 Před 5 lety +1

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

    • @VladimirMedintsev
      @VladimirMedintsev  Před 5 lety

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

    • @aleksandrzakutnyy4450
      @aleksandrzakutnyy4450 Před 5 lety +1

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

    • @VladimirMedintsev
      @VladimirMedintsev  Před 5 lety

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

  • @aidagamemnon
    @aidagamemnon Před 4 lety +1

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

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

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

    • @aidagamemnon
      @aidagamemnon Před 4 lety +1

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

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

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

    • @Asmcavr
      @Asmcavr Před 4 lety +1

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

    • @t966rt
      @t966rt Před 3 lety

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

  • @azazelloazazello1379
    @azazelloazazello1379 Před 3 lety

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

    • @VladimirMedintsev
      @VladimirMedintsev  Před 3 lety

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

    • @azazelloazazello1379
      @azazelloazazello1379 Před 3 lety

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

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

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

  • @dmitryponyatov2158
    @dmitryponyatov2158 Před 4 lety

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

  • @marxtl3842
    @marxtl3842 Před 2 lety

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

  • @LeonidKuksin
    @LeonidKuksin Před 8 měsíci

    ../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  Před 8 měsíci

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

    • @user-gq2hz5wl3r
      @user-gq2hz5wl3r Před 6 měsíci

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