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

Поделиться
HTML-код
  • Опубликовано: 17 фев 2019
  • Самый простой пример создания задач FreeRTOS через CubeMX.
    STM32 Хранение данных и конфигурации во FLASH памяти - • STM32 Хранение данных ...
    STM32 + FreeRTOS Часть 2 - • STM32 + FreeRTOS Часть...
    STM32 + FreeRTOS Часть 3 - • STM32 + FreeRTOS Часть...
    STM32 + FreeRTOS Часть 4 - • STM32 + FreeRTOS Часть...
    Отладочные платы с STM32:
    aliclick.shop/r/c/1rx6hmmgwgm...
    Вышла книга по операционной системе FreeRTOS.
    Видео о книге "FreeRTOS. Операционные системы микроконтроллеров" - • Книга "FreeRTOS. Опера...
    Бумажная версия книги - electronics-krd.ru/magazin/pr...
    Электронная версия книги - electronics-krd.ru/magazin/pr...
    Оглавление книги - disk.yandex.ru/i/3ZKwKQTgQnlHoQ
    Пример страниц - disk.yandex.ru/i/WCeD_CA3aMbiOQ
    Группа в телеграмм - t.me/vladimir_medintsev
    Код примеров из книги - disk.yandex.ru/d/Bqa2adpEZ3Mo6w
    По вопросам сотрудничества - vmedintsev@yandex.ru
  • НаукаНаука

Комментарии • 185

  • @admin_of_youtube
    @admin_of_youtube 5 лет назад +10

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

  • @riariorovere2462
    @riariorovere2462 2 года назад +3

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

  • @serjkp
    @serjkp 5 лет назад +2

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

  • @user-gh4tc2wo5k
    @user-gh4tc2wo5k 5 лет назад +5

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

  • @maksimlepel9594
    @maksimlepel9594 3 года назад +2

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

  • @THX4GG
    @THX4GG 3 года назад +2

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

  • @RadioTexnik
    @RadioTexnik 4 года назад +2

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

  • @user-cc9nk2ib2l
    @user-cc9nk2ib2l 5 лет назад +1

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

  • @MrASmitt
    @MrASmitt 4 года назад +6

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

  • @barabucho
    @barabucho 3 года назад +4

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

  • @MySportOrgFamily
    @MySportOrgFamily 3 года назад +5

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

  • @user-rq9ji8kb4w
    @user-rq9ji8kb4w 4 года назад +2

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

  • @user-ci4fz9co3b
    @user-ci4fz9co3b 4 года назад +9

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

  • @maddocrusmad464
    @maddocrusmad464 4 года назад +3

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

  • @NIKOLAY_PSHONIA
    @NIKOLAY_PSHONIA 4 года назад +1

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

  • @katrintasku4433
    @katrintasku4433 5 лет назад

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

  • @arakeldesign
    @arakeldesign 5 лет назад +2

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

  • @user-hm1wg8gw3r
    @user-hm1wg8gw3r 11 месяцев назад +1

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

  • @user-ke1jq2wt8o
    @user-ke1jq2wt8o 3 года назад +4

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

  • @Krotonyasha
    @Krotonyasha 4 года назад

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

  • @7race725
    @7race725 3 года назад +1

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

  • @uriydolgonogiy434
    @uriydolgonogiy434 4 года назад +2

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

    • @VladimirMedintsev
      @VladimirMedintsev  4 года назад +2

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

  • @dmitriycold6906
    @dmitriycold6906 5 лет назад

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

  • @benhummer185
    @benhummer185 11 месяцев назад +2

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

  • @isorport32
    @isorport32 4 года назад +12

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

    • @VladimirMedintsev
      @VladimirMedintsev  4 года назад +4

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

    • @johnnynash1662
      @johnnynash1662 3 года назад +5

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

    • @azazelloazazello1379
      @azazelloazazello1379 2 года назад +1

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

  • @bubikgenover9160
    @bubikgenover9160 5 лет назад +4

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

  • @SergeyKarpesh
    @SergeyKarpesh 4 года назад

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

  • @mkfk52
    @mkfk52 4 года назад +1

    Спасибо!

  • @konstantinb6270
    @konstantinb6270 4 года назад +19

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

    • @user-io2oc6sh3g
      @user-io2oc6sh3g 4 года назад +3

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

  • @tupoy_ytub_uberi_psevdonim
    @tupoy_ytub_uberi_psevdonim Год назад +1

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

  • @maksimlepel9594
    @maksimlepel9594 3 года назад

    Спасибо

  • @moviemaker_inc
    @moviemaker_inc 3 года назад +1

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

    • @ArtemKAD1
      @ArtemKAD1 3 года назад +1

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

  • @ramzeschannel5892
    @ramzeschannel5892 5 лет назад +2

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

  • @aleksandrkozlov9286
    @aleksandrkozlov9286 5 лет назад +2

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

  • @motoday3580
    @motoday3580 5 лет назад

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

  • @EvgenMo1111
    @EvgenMo1111 3 года назад

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

  • @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 что за сейф версии?

  • @andreylapshov5716
    @andreylapshov5716 3 года назад

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

  • @azzzza9957
    @azzzza9957 5 лет назад

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

    • @VladimirMedintsev
      @VladimirMedintsev  5 лет назад +2

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

  • @VAscetic
    @VAscetic 3 года назад

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

  • @user-rx4rp5yb5j
    @user-rx4rp5yb5j 5 лет назад

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

    • @VladimirMedintsev
      @VladimirMedintsev  5 лет назад

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

    • @user-rx4rp5yb5j
      @user-rx4rp5yb5j 5 лет назад

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

    • @VladimirMedintsev
      @VladimirMedintsev  5 лет назад

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

    • @user-rx4rp5yb5j
      @user-rx4rp5yb5j 5 лет назад

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

    • @VladimirMedintsev
      @VladimirMedintsev  5 лет назад

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

  • @statstopfinish
    @statstopfinish 5 лет назад

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

    • @VladimirMedintsev
      @VladimirMedintsev  5 лет назад

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

  • @bul2012
    @bul2012 5 лет назад +1

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

    • @VladimirMedintsev
      @VladimirMedintsev  5 лет назад

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

    • @bul2012
      @bul2012 5 лет назад +3

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

  • @yuriychip4053
    @yuriychip4053 5 лет назад

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

    • @VladimirMedintsev
      @VladimirMedintsev  5 лет назад +3

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

  • @user-qi1ts3jz2i
    @user-qi1ts3jz2i 3 года назад

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

  • @Vlad_4572
    @Vlad_4572 2 года назад

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

  • @tupoy_ytub_uberi_psevdonim
    @tupoy_ytub_uberi_psevdonim Год назад

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

  • @fuzzmaster9348
    @fuzzmaster9348 5 лет назад +2

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

    • @VladimirMedintsev
      @VladimirMedintsev  5 лет назад +3

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

    • @user-rx4rp5yb5j
      @user-rx4rp5yb5j 5 лет назад

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

    • @user-tm5fp3xw9j
      @user-tm5fp3xw9j 5 лет назад +1

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

    • @VladimirMedintsev
      @VladimirMedintsev  5 лет назад +1

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

    • @user-tm5fp3xw9j
      @user-tm5fp3xw9j 5 лет назад +1

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

  • @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

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

    • @user-pc9br8yt6j
      @user-pc9br8yt6j 4 года назад

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

  • @asurahan
    @asurahan 4 года назад

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

    • @VladimirMedintsev
      @VladimirMedintsev  4 года назад +2

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

    • @yunushkin88
      @yunushkin88 4 года назад +1

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

  • @user-qk1vf9cg9i
    @user-qk1vf9cg9i 4 года назад

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

    • @VladimirMedintsev
      @VladimirMedintsev  4 года назад

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

    • @user-qk1vf9cg9i
      @user-qk1vf9cg9i 4 года назад

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

  • @manohinm2012
    @manohinm2012 3 года назад +1

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

    • @Vasily-ze5wf
      @Vasily-ze5wf 3 года назад +6

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

  • @HeavyHeavyvich
    @HeavyHeavyvich 5 лет назад +1

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

    • @VladimirMedintsev
      @VladimirMedintsev  5 лет назад +4

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

    • @user-rx4rp5yb5j
      @user-rx4rp5yb5j 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.

  • @efiron
    @efiron Год назад

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

    • @VladimirMedintsev
      @VladimirMedintsev  Год назад

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

  • @WaAallE
    @WaAallE 9 месяцев назад

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

  • @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

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

  • @victorsi1992
    @victorsi1992 4 года назад +5

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

  • @electronicelectronic-wo3yk
    @electronicelectronic-wo3yk 5 лет назад +2

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

    • @VladimirMedintsev
      @VladimirMedintsev  5 лет назад +2

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

  • @maxsh8297
    @maxsh8297 4 года назад

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

    • @VladimirMedintsev
      @VladimirMedintsev  4 года назад +2

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

    • @U_video
      @U_video 4 года назад +2

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

  • @tupoy_ytub_uberi_psevdonim
    @tupoy_ytub_uberi_psevdonim Год назад

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

    • @VladimirMedintsev
      @VladimirMedintsev  Год назад +1

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

    • @tupoy_ytub_uberi_psevdonim
      @tupoy_ytub_uberi_psevdonim Год назад

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

  • @statstopfinish
    @statstopfinish 5 лет назад

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

    • @VladimirMedintsev
      @VladimirMedintsev  5 лет назад +2

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

  • @Art1x_y
    @Art1x_y 3 года назад +1

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

  • @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й компилятор я еще не видел. Понятно что там всего в одном файле надо макросы подправить, но думать лень. А это сулит выйгрыш в размере кода.

  • @user-vu7sx5er9j
    @user-vu7sx5er9j 3 месяца назад

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

    • @VladimirMedintsev
      @VladimirMedintsev  3 месяца назад +1

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

  • @azazelloazazello1379
    @azazelloazazello1379 3 года назад

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

    • @VladimirMedintsev
      @VladimirMedintsev  3 года назад

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

    • @azazelloazazello1379
      @azazelloazazello1379 3 года назад

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

    • @azazelloazazello1379
      @azazelloazazello1379 3 года назад +2

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

  • @CoBaldr
    @CoBaldr 5 лет назад

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

    • @VladimirMedintsev
      @VladimirMedintsev  5 лет назад

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

    • @CoBaldr
      @CoBaldr 5 лет назад

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

  • @user-rf3ky5ir5y
    @user-rf3ky5ir5y 3 года назад

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

    • @eugenedukatta9355
      @eugenedukatta9355 Год назад

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

  • @ugene4063
    @ugene4063 4 года назад

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

    • @ugene4063
      @ugene4063 4 года назад

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

    • @VladimirMedintsev
      @VladimirMedintsev  4 года назад +3

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

    • @ugene4063
      @ugene4063 4 года назад +2

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

    • @asurahan
      @asurahan 4 года назад +1

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

    • @user-pc9br8yt6j
      @user-pc9br8yt6j 4 года назад +1

      Mutex вам в помощь

  • @stanki-cnc
    @stanki-cnc 3 года назад

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

    • @stanki-cnc
      @stanki-cnc 3 года назад +1

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

    • @nikotinesmola
      @nikotinesmola 2 года назад

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

  • @Vasily-ze5wf
    @Vasily-ze5wf 3 года назад +2

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

    • @agedmagister4562
      @agedmagister4562 3 года назад +3

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

    • @romandavydov8684
      @romandavydov8684 2 года назад

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

  • @albertziatdinov1373
    @albertziatdinov1373 4 года назад +4

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

    • @VladimirMedintsev
      @VladimirMedintsev  4 года назад +3

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

  • @dmitryponyatov2158
    @dmitryponyatov2158 4 года назад

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

  • @aleksandrzakutnyy4450
    @aleksandrzakutnyy4450 5 лет назад +1

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

    • @VladimirMedintsev
      @VladimirMedintsev  5 лет назад

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

    • @aleksandrzakutnyy4450
      @aleksandrzakutnyy4450 5 лет назад +1

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

    • @VladimirMedintsev
      @VladimirMedintsev  5 лет назад

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

  • @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 3 года назад

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

  • @marxtl3842
    @marxtl3842 2 года назад

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

  • @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 4 года назад +5

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

    • @Mirk047
      @Mirk047 4 года назад +1

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

  • @LeonidKuksin
    @LeonidKuksin 7 месяцев назад

    ../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  7 месяцев назад

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

    • @user-gq2hz5wl3r
      @user-gq2hz5wl3r 5 месяцев назад

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