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

  Рет қаралды 50,479

Vladimir Medintsev

Vladimir Medintsev

5 жыл бұрын

Самый простой пример создания задач 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 жыл бұрын
наконец-то кто-то на ютубе нормально рассказывает про free rtos на свежем кубе. меняет масштаб, чтоб показать нужный фрагмент кода. очень понравился подход к комфорту зрителя. информация излагается доступно и с примерами. во время просмотра ролика мне захотелось пересмотреть все серии про free rtos. к концу ролика мне захотелось пересмотреть весь канал. продолжайте в том же духе, спасибо Вам за старания!
@user-gh4tc2wo5k
@user-gh4tc2wo5k 5 жыл бұрын
Спасибо за материал. Просто рассказано о сложном. Главное, что понятно объяснён принцип работы диспетчера задач. Я ещё не пробовал использовать ОС на микроконтроллерах, просто писал линейные алгоритмы, изощряясь так, что бы устройства работали быстро и не подвисали. Но теперь вижу, что операционка это очень хороший инструмент, который можно и нужно использовать.
@riariorovere2462
@riariorovere2462 2 жыл бұрын
Владимир, огромное спасибо за понятный и полезный урок
@user-ci4fz9co3b
@user-ci4fz9co3b 4 жыл бұрын
Цикл While не используется. Да, потому, что сама ОС в нем крутится. И вызывает функции по таймеру. Я точно так же пишу, без ОС + события из вне. На 10- 15 задач хватает. Простая atmega справляется, и TFT тянет, несколько датчиков, приводами управляет, анимации, энкодер. Главное, чтоб подход был правильный, не в одной функции на долго не задерживаться. Но все равно спасибо, было интересно. Планирую на STM переходить, вот и смотрю пока видео.
@MrASmitt
@MrASmitt 4 жыл бұрын
Блин, почему все так просто??? Почему вы так хорошо рассказываете????
@serjkp
@serjkp 5 жыл бұрын
С удовольствием смотрю Ваши уроки. Спасибо.
@konstantinb6270
@konstantinb6270 4 жыл бұрын
Зачем же ATMEGA8 называть бедствием? Что плохого в данном МК? Отличный контроллер в своей нише, позволяет решать множество задач!
@user-io2oc6sh3g
@user-io2oc6sh3g 4 жыл бұрын
Согласен. Отлично решает простые задачи. Есть, для МК от Atmega, OS от Di Halt с easyelectronics.
@maddocrusmad464
@maddocrusmad464 4 жыл бұрын
Когда вы сказали а теперь увеличу, что бы видно было сразу лайк, наверное 5% из всех ютуберов про программирование догадываются если текст то пусть крупный.
@THX4GG
@THX4GG 3 жыл бұрын
Как новичку пораженному "ардуинизмом", было очень интересно. Главное - подкрепили желание разбираться, а не просто тыкать наугад библиотеки и модули. Спасибо.
@maksimlepel9594
@maksimlepel9594 3 жыл бұрын
Спасибо, наконец то нашел понятный и информативный материал по stm32cubemx и freeRTOS, все по делу
@RadioTexnik
@RadioTexnik 4 жыл бұрын
Спасибо большое за содержательную информацию! Однозначно Лайк!
@arakeldesign
@arakeldesign 5 жыл бұрын
Очень нравится ваш канал. Все просто и понятно! Лично мне интересны уроки с библиотекой LL
@katrintasku4433
@katrintasku4433 5 жыл бұрын
Большое спасибо за видео! Все очень доходчиво объяснили, помогли мне с учебой!:-)
@MySportOrgFamily
@MySportOrgFamily 3 жыл бұрын
Спасибо, отличное разъяснение
@user-ke1jq2wt8o
@user-ke1jq2wt8o 3 жыл бұрын
ахрененно! где вы были раньше)))
@isorport32
@isorport32 4 жыл бұрын
Вы так представили pic и atmel, как будто это какие то недоконтроллеры. А ведь именно на них лет 20 создавались огромная куча устройств. И даже на 8битниках0 прекрасно писались независимые потоки, так что присваивать их к "линейным", а тем более людей которые работали с ними, это просто ваше невежество)
@VladimirMedintsev
@VladimirMedintsev 4 жыл бұрын
Нет проблем, давайте им теперь памятник поставим. Ну что за фантазии такие, это просто прогресс, одно сменяет другое. Технологии развиваются одна архитектура сменяет другую. Не нравится, снимите видео в котором хвалите эти микроконтроллеры и их создателей.
@johnnynash1662
@johnnynash1662 3 жыл бұрын
Сам до сих пор работаю с атмел. Преимуществ у них тоже хватает. Как то даже обидно стало.
@azazelloazazello1379
@azazelloazazello1379 2 жыл бұрын
Помнится, у отца железный Феликс был. Без всяких этих ваших микропроцессоров, богомерзкого электричества и прочей чертовщины. И ничего, заводы строили, ракеты запускали в разные стороны. А ещё этим Феликсом и прибить можно было. А вы тут за атмел переживаете.🤣🤣🤣🤣😄😄😄😜
@barabucho
@barabucho 3 жыл бұрын
Отличное объяснение.Спасибо.
@uriydolgonogiy434
@uriydolgonogiy434 4 жыл бұрын
Хороший материал! Отличная работа, материал на уровне!
@VladimirMedintsev
@VladimirMedintsev 4 жыл бұрын
В измененном виде лучше, а то я понять не мог это меня так похвалили или обругали.
@bubikgenover9160
@bubikgenover9160 5 жыл бұрын
Здорово разжёвано, ну уж прям для всех-всех. Вообще, на отличненько так осрв врывается и упрощает то, во что врывается.
@dmitriycold6906
@dmitriycold6906 5 жыл бұрын
Очень наглядно ждем продолжения )))
@NIKOLAY_PSHONIA
@NIKOLAY_PSHONIA 4 жыл бұрын
Спасибо за видео , отдельно спасибо за увеличения шрифта.
@user-hm1wg8gw3r
@user-hm1wg8gw3r 11 ай бұрын
Отличное и понятное объяснение! Спасибо))
@user-rq9ji8kb4w
@user-rq9ji8kb4w 4 жыл бұрын
Спасибо за отличное видео!
@user-cc9nk2ib2l
@user-cc9nk2ib2l 5 жыл бұрын
Спасибо за ваш труд!
@7race725
@7race725 3 жыл бұрын
Спасибо, стало много понятнее.
@Krotonyasha
@Krotonyasha 4 жыл бұрын
Спасибо! Хороший формат!
@benhummer185
@benhummer185 11 ай бұрын
Спасибо. Было интересно.
@SergeyKarpesh
@SergeyKarpesh 4 жыл бұрын
Хорошая подача материала
@mkfk52
@mkfk52 4 жыл бұрын
Спасибо!
@tupoy_ytub_uberi_psevdonim
@tupoy_ytub_uberi_psevdonim Жыл бұрын
Вот введение прямо как про меня. Пришел с атмег на стм32 и решил начать изучение RTOS т.к. не хочу заморачиваться на счет таймеров и прерываний. Лучше пусть оно само там решает какие задачи и как выполнять.
@moviemaker_inc
@moviemaker_inc 3 жыл бұрын
Спасибо отличный материал. Побольше бы роликов замены Ардуино на STM32. Нужная тема в ней очень много затыков возникает которые мешают реализовывать идеи на STM32
@ArtemKAD1
@ArtemKAD1 3 жыл бұрын
Не имеет смысла. Человек написавший на Ардуино заменять его на STM32 не станет потому как и так работает. Человек пишущий на STM на нем и начинает.
@aleksandrkozlov9286
@aleksandrkozlov9286 5 жыл бұрын
Спасибо большое за интересную тему! Прошу\предлагаю показать реализацию след задачи. имеется два USART, накапливают data по прерываниям и передают с одного на другой. т.е. получается крос. скорей всего это нужно реализовать две задачи и передавать из одной задачи в другую с помощью очередей (но как это сделать тоже не понятно) + нужно что бы в параллели работали две задачи на Таймерах ( PWM, Encoder_Mode) и тоже передовали\принимали значения от taskUSART1,2 Спасибо большое (вроде все просто, но Ваши уроки смотрят в основном новички, и много вещей не понятно, хотелось бы увидеть Вашу реализацию)
@maksimlepel9594
@maksimlepel9594 3 жыл бұрын
Спасибо
@ramzeschannel5892
@ramzeschannel5892 5 жыл бұрын
Таким образом можно очень просто собирать несколько проектов в один!!! Я не очень силён в программировании, но учусь, и зачастую пользуюсь чужими проектами, а там не всегда точно то, что нужно. Здесь же можно куски кода пустить на параллельное исполнение и всё.
@maximpetrov2742
@maximpetrov2742 5 жыл бұрын
Спасибо ! Хотелось бы увидеть по больше о внутреннем устройстве ос , как устроена та же параллельность процессов , возможно написание аналога ) очень круто , буду ждать продолжения PS сейчас Таненбаума по ОСям читаю , в задумках есть реализация похожего чисто для себя , для того чтобы так сказать скилл прокачать )
@VladimirMedintsev
@VladimirMedintsev 5 жыл бұрын
Если у вас есть пара ненужных лет жизни то обязательно напишите аналог. Нам всем думаю будет интересно посмотреть видео про это. FreeRTOS весьма не плохая операционка так что просто берите и пользуйте. Особенно safe версии.
@maximpetrov2742
@maximpetrov2742 5 жыл бұрын
@@VladimirMedintsev не имел в виду аналог ртоса ( я имел в виду часть какого то функционала .
@VladimirMedintsev
@VladimirMedintsev 5 жыл бұрын
А часть какого функционала вы имели ввиду? Аж интересно.
@maximpetrov2742
@maximpetrov2742 5 жыл бұрын
@@VladimirMedintsev вот примерно то, о чем у вас вышло второе видео про free rtos , может как то не так выразился )
@DigiCatBlog
@DigiCatBlog 5 жыл бұрын
@@VladimirMedintsev что за сейф версии?
@motoday3580
@motoday3580 5 жыл бұрын
Продолжайте уроки по ос , спасибо.
@andreylapshov5716
@andreylapshov5716 3 жыл бұрын
Так сохранение можно по прерываниям сделать тоже ) но с ртос выходит удобнее
@EvgenMo1111
@EvgenMo1111 3 жыл бұрын
спасибо, пошел на алиэкспресс за SMTкой
@VAscetic
@VAscetic 3 жыл бұрын
Безусловно полезная штуковина, если задач много. Если задачи 2, то можно организовать задержку по-другому, не занимая время проца, а заставляя его проверять соответствующую переменную время от времени. Особенно, когда в контроллере есть DMA, процу достаточно за несколько тактов настроить поток, а дальше заниматься другими делами, до флага завершения. Сколько весит FreeRTOS?
@bul2012
@bul2012 5 жыл бұрын
Не знаю как остальные , но я самые банальные вещи реализую через таймеры . А в стмке после авр это вообще рай и пределитель 16 битный с любым числом деления в отличие от авр где число деления аграничено 8 вариантами, и таймеров 8-16 штук , и приоритет нормально работает в ХАЛ. Хоть я и сам учусь стмке и профессионалом себя ни разу не считаю, да и программки у меня не больших размеров (кейл 5 пока ниразу не намекнул на покупку), но не использовать такой функционал считаю глупым. Ни делеев , ни засраный цыкл вайл , да ещё и смотрится все аккуратно. Короче красота
@VladimirMedintsev
@VladimirMedintsev 5 жыл бұрын
У каждого человека свой собственный стиль программирования. Нельзя сказать вот только так правильно, а вот это не правильно. Если вам удобнее через таймеры пусть так и будет. Главное чтобы работало и доставляло вам удовольствие.
@bul2012
@bul2012 5 жыл бұрын
@@VladimirMedintsev не , я не навязываю "свой стиль написания кода" , как сказал выше , я ещё не дошел до такого уровня чтобы кому-то советы давать. Просто таймеры в стм32 меня очень сильно обрадовали , и решил поделиться своим малым опытом и субъективным мнением. А так , вы очень хорошо рассказали про фриртос, для меня честно это было откровением. Подписался , колокол врубил , жду продолжения))
@WaAallE
@WaAallE 9 ай бұрын
На сколько "раздувается" код при переходе с чистой процедурки на freeRTOS? в Том ключе, что стоит ли пробовать freeRTOS на "малокубатурных", простых контроллерах вроде stm32f103c6t6?
@VladimirMedintsev
@VladimirMedintsev 9 ай бұрын
Да, стоит. Очень стоит.
@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 за год. Так что нажмите обновить и она сама скачает что ей надо.
@azzzza9957
@azzzza9957 5 жыл бұрын
Паралельно можно начинать пилить видео о Embedd-Linux. =) ST представила новинку в лице STM32MP1 с ценой чипа равной STM32F407VE
@VladimirMedintsev
@VladimirMedintsev 5 жыл бұрын
Я внимательно на чип поглядел и понял что не хочу его даже подробно изучать. Ну нет у меня таких задач чтобы такие чипы использовать. Слишком специфичный продукт. Более того его еще нет ни у одного дистрибьютора. Только напрямую у ST заказывать с конской доставкой. Не не это уж как-нибудь без меня.
@user-qk1vf9cg9i
@user-qk1vf9cg9i 4 жыл бұрын
Владимир, я не совсем пронял, каким образом настройки по ОС и ее "внедрению", которые Вы производили в CUBEMx, Вы перенесли в проект Keil? Извините за глупый вопрос. Возможно Вы это уже показывали где-то ранее в своих роликах. Если так, то дайте пожалуйста ссылку.
@VladimirMedintsev
@VladimirMedintsev 4 жыл бұрын
В кубе нажал на кнопку - сгенерировать код. Он сам собрал весь проект с библиотеками и запустил кейл. Это его (куба) работа.
@user-qk1vf9cg9i
@user-qk1vf9cg9i 4 жыл бұрын
@@VladimirMedintsev Спасибо за ответ.
@tupoy_ytub_uberi_psevdonim
@tupoy_ytub_uberi_psevdonim Жыл бұрын
Хм. Смотрю немного поменяли структуру. В версииfreertos 10 куб генерирует создание задач в main.c а не как на видео в freertos.c. Похоже буду сталкиваться с такими переносами часто, благо поиск по коду работает быстро)
@Asmcavr
@Asmcavr 4 жыл бұрын
Расскажите пожалуйста как бороться с зависанием RTOS при использовании sprintf "f" (float). Я так и не смог победить используя штатные средства. Я подменял heap и делал retarget. Печаль короче с ентим RTOS. Я только начал с ней работать и бац.... Как определить сколько требуется стека для задачи?
@VladimirMedintsev
@VladimirMedintsev 4 жыл бұрын
С такой функцией как sprintf беда беда беда и тут проблема не во freertos а в sprintf вы бы видели сколько стека она пожирает под свои нужны... советую или сильно увеличивать стек для задачи в которой вызываете этот позор или переходите на использование чего-то типа IntToA и аналогов. Мы просто повсеместно стараемся уходить от sprintf именно из-за непредсказуемой прожорливости и временных затрат.
@Asmcavr
@Asmcavr 4 жыл бұрын
@@VladimirMedintsev можно посмотреть вашу реализацию этой проблемы?
@VladimirMedintsev
@VladimirMedintsev 4 жыл бұрын
Да, как-нибудь сделаю видео на эту тему.
@fuzzmaster9348
@fuzzmaster9348 5 жыл бұрын
Доброй ночи Владимир.Вот хотел спросить у Вас,как вы реализовывали задержки в микросекундах на stm32F030 и вообще была ли такая задача?Понятно что на других сериях начиная от F1 сериях,можно подключать библиотеку.
@VladimirMedintsev
@VladimirMedintsev 5 жыл бұрын
Периодически такие задачи бывают. Реализуются обычно на свободном таймере. Либо, если совсем маленькая задержка, то просто гонять операции известной длины. В тактах известной частоты.
@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 жыл бұрын
А что мешает через sys timer сделать задержки
@VladimirMedintsev
@VladimirMedintsev 5 жыл бұрын
@@user-tm5fp3xw9j А смысл?
@user-tm5fp3xw9j
@user-tm5fp3xw9j 5 жыл бұрын
@@VladimirMedintsev более грамотное использование ресурсов камня. К тому же включая доп периферию увеличиваем потребление. Что критично для маложрущих устройств.
@2Aleksk
@2Aleksk 5 жыл бұрын
Хорошая тема! Не совсем понял с каким периодом переключается процессор по прерыванию таймера 2 между тремя задачами (что такое тик? Это тик таймера или процессора?). Каков период обновления данной RTOS по аналогии с Windows - в ней полный цикл 20 мс, в Linux - 5 мс. RTOS никогда не использовал поэтому такие вопросы.
@VladimirMedintsev
@VladimirMedintsev 5 жыл бұрын
Да, мое упущение, хотел в следующем видео этим заняться. Tick - настраивается. По умолчанию 1 миллисекунда. В следующем видео осветим так сказать.
@azzzza9957
@azzzza9957 5 жыл бұрын
в окне настройки 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 жыл бұрын
По умолчанию 1 милисек, если задачи с одинаковыми приоритетами,... Одним словом, полноценная real time OS. Без проблем запускается в синей таблетке на STM32F103C8T6 с FatFS + microSD + 3 шт DS18B20 + SPI LCD 128x160 + часы DS3231 + кнопки
@Voha
@Voha 5 жыл бұрын
Serj Balabay насколько помню, DS18B20 нужны задержки в микросекундах. Каким образом их в RTOS реализовали?
@efiron
@efiron Жыл бұрын
Владимир, вопрос по многозадачности. Если один блок функций у меня работает в среднем 50-100 мксек. при рабочей частоте процессора 240 МГц, зачем мне ждать еще 900 мксек, когда операционная система переключит меня на другую задачу, если я могу выполнять свой функционал быстрее? Жесткий delay, это конечно парадокс в мире программирования. Я, например, создал библиотеку как класс "ТАЙМЕР" с необходимым мне функционалом. Для задержки в какой-то функции (та же мигалка светодиодом) я создаю Таймер "светодиод", и далее в функции, вызываю проверку на окончание таймера, буквально несколько строк кода, и работа программы выполняется дальше. Таймер можно включить, выключить, поставить на паузу, сбросить, вызвать проверку, запросить статус. Вопрос - что мне даст верхний уровень в виде FreeRTOS, кроме как задержку выполнения ПО? Я понимаю, это было бы полезным, если данная система контролировала определенные ячейки памяти в базе данных, и по их изменению, прописанному в условии, переключала бы работу на функции. Но этот функционал и так может быть в виде системы прерываний. Да, его надо будет писать ручками, организуя работу базы данных согласно уже своему алгоритму верхнего уровня. Большинство об этом не заморачиваются, как дошла работа до определенной функции, так и обработали информацию.
@VladimirMedintsev
@VladimirMedintsev Жыл бұрын
Я специально сделал большой курс по FreeRTOS, там есть ответы на эти вопросы. kzfaq.info/sun/PLiu4O2eIDAdUz50gTS33a2qozzDSFMouI
@user-qi1ts3jz2i
@user-qi1ts3jz2i 3 жыл бұрын
Уважаемый Владимир, очень хорошие уроки, огромное вам за них спасибо! Но не могли бы вы сделать урок по FreeRTOS v. 10.0.1. Также как вы создал задачу но она не работает. И в чем причина не могу понять. Визульно не нашел файла FREERTOS.h, да и FREERTOS.c куда скуднее чем у вас.
@statstopfinish
@statstopfinish 5 жыл бұрын
У меня непонятная ситуация с FreeRTOS, попробовал все повторить как у вас , но используя библиотеку LL, программа молчит, задачи не запускаются. Даже не знаю что и делать, куда смотреть , или LL и FreeRTOS несовместимы.
@VladimirMedintsev
@VladimirMedintsev 5 жыл бұрын
Все совместимо. Обычно LL требует большего опыта, существенно большего опыта. И раз вы решили использовать LL значит как минимум сможете разобраться почему не запускаются задачи. На самом деле это чудесная ситуация чтобы научиться отладке приложений. У меня с первого раза тоже не работало. Но пройдясь отладчиком сразу становится ясно где все затыкается. Подсказка - тактирование.
@statstopfinish
@statstopfinish 5 жыл бұрын
Обновил CubeMX до 5.1.0 , создал проект для STM32F103VBT, куб пишет что версия FreeRTOS 9.0.0 CMSIS V1. В видео вы говорите что есть более новая версия FreeeRTOS, мне не понятно как обновить версию FreeRTOS в CubeMX , и есть ли смысл это вообще делать.
@VladimirMedintsev
@VladimirMedintsev 5 жыл бұрын
Пакеты для куба собирает ST и в большинство пакетов включили версию 9 (на текущий момент). В то же время на сайте FreeRTOS на текущий момент доступна версия 10 операционной системы. Для обновления вам просто необходимо заменить несколько файлов в папке собранного проекта. Однако что-то мне подсказывает что изменения между версиями 9 и 10 врядли будут вами как начинающим замечены. А вот версии FreeRTOS модифицированной под 6й компилятор я еще не видел. Понятно что там всего в одном файле надо макросы подправить, но думать лень. А это сулит выйгрыш в размере кода.
@tupoy_ytub_uberi_psevdonim
@tupoy_ytub_uberi_psevdonim Жыл бұрын
У меня вот STM32F401 и на выбор есть CMSIS V1 и V2 когда нажимаю freertos, какой выбирать?
@VladimirMedintsev
@VladimirMedintsev Жыл бұрын
В зависимости от того, какой функционал вам нужен. Начните с первого.
@tupoy_ytub_uberi_psevdonim
@tupoy_ytub_uberi_psevdonim Жыл бұрын
@@VladimirMedintsev спасибо. Мне куб еще попросил включить USE_NEWLIB_REENTRANT предупредив об увеличении расхода озу. Подскажете что это?
@maxsh8297
@maxsh8297 4 жыл бұрын
А что будет если перед HAL_DELAY() убрать osDelay() ? Задачи также не будут виснуть или весь цимус независания именно в вызове где только можно osDelay() ?
@VladimirMedintsev
@VladimirMedintsev 4 жыл бұрын
Я не понял вашего вопроса. Возможно если вы сформулируете свой вопрос по-другому я смогу на него ответить. Функция HAL_Delay() это ожидание, программа не продолжает свое выполнение и находится в теле функции до тех пор, пока не истечет заданное в параметре время. А функция osDelay() сообщает диспетчеру задач операционной системы, что задаче из которой был осуществлен вызов функции osDelay() можно не выделять процессорное время на столько-то миллисекунд.
@U_video
@U_video 4 жыл бұрын
HAL_DELAY() - вы тупо крутитесь в цикле какое-то время, ну или ожидаете, пока какой-то счётчик не отсчитает нужное время. А при osDelay() запускается планировщик, выгружает контекст текущей задачи и загружает другую задачу, если такая имеется.
@statstopfinish
@statstopfinish 5 жыл бұрын
Хотелось бы увидеть реализацию FreeRTOS + feemudbus. Что то на ютубе на эту тему сосем мало информации , на русском вообще нет . Может у вас в планах будет такой урок, я думаю он будет востребован в виду отсутствия подобных
@VladimirMedintsev
@VladimirMedintsev 5 жыл бұрын
Если вы имели ввиду FreeMODBUS то видео по этой теме не будет.
@electronicelectronic-wo3yk
@electronicelectronic-wo3yk 5 жыл бұрын
Здравствуйте! А как вы боритесь с кубовскими комментариями? У меня палец пролистывать зелень устает.
@VladimirMedintsev
@VladimirMedintsev 5 жыл бұрын
Когда проект на финальной стадии - стираю.
@manohinm2012
@manohinm2012 3 жыл бұрын
Какая разница тогда между osDelay и обычным?
@Vasily-ze5wf
@Vasily-ze5wf 3 жыл бұрын
При использовании обычной задержки в задаче, она обрабатывается как составная часть этой задачи и расходует на себя процессорные ресурсы. При использовании osDelay, на указанное время задача вообще перестает вызываться диспетчером и выходит из круга опроса, что не увеличивает, а снижает расход аппаратных ресурсов. Использование обычной задержки в ОС является некорректным.
@user-rf3ky5ir5y
@user-rf3ky5ir5y 3 жыл бұрын
А если две лампочки в одном порту? Ничего, не глючит? Как бы при моргании происходит чтение, модификация, а потом, например, прерывание, чтение, модификация, запись, выход и еще запись?
@eugenedukatta9355
@eugenedukatta9355 Жыл бұрын
А для этого существует такая штука "синхронизация" процессов. Сюда же в помощь "мьютексы", "семафоры" - специальные флаги. Это для безопасной работы с "распределяемыми ресурсами" или с "ресурсами общего доступа". Это может быть что угодно, начиная от одной переменной и заканчивая чем-то сложным типа устройством связи, интерфейсом и др, в вашем примере общий порт. Кратко - пока один процесс не завершит работу с общим ресурсом, другой процесс к нему доступ не получит. Это все теория операционных систем, кстати не стоит пугаться такого страшного названия. И это все уже заточено в FreeRTOS на то она и ОС. Если у вас что-то глючит при использовании ОС, значит вы что-то неправильно делаете, не используете готовый сервис от ОС, не объявляете ресурс как "общего доступа" и т.д.
@user-vu7sx5er9j
@user-vu7sx5er9j 3 ай бұрын
Может глупый вопрос, но я только разбираться начинаю.. hal_delay в такой ситуации не уплывает по времени?
@VladimirMedintsev
@VladimirMedintsev 3 ай бұрын
Уалывает не только HAL_Delay, но и страдает операционная система ввиду того, что функция HAL_Delay написана не правильно.
@BalabayUA
@BalabayUA 5 жыл бұрын
А мне чёт не понравилась надстройка HAL над FreeRTOS. Предпочитаю самому прикручивать оригинальную версию FreeRTOS к коду от куба. Ничего сложного нет, только с приоритетами прерываний разобраться.
@VladimirMedintsev
@VladimirMedintsev 5 жыл бұрын
Да собственно почему бы и нет. Там действительно нет ничего сложного.
@user-pc9br8yt6j
@user-pc9br8yt6j 4 жыл бұрын
Так можно же просто api freertos из под cmsis вызывать не тратя время на прикручивания
@yuriychip4053
@yuriychip4053 5 жыл бұрын
хотелось бы увидеть реализацию I2C на фриртос запись и чтение по адресам устройств (прикрутить дисплей по шине I2C)
@VladimirMedintsev
@VladimirMedintsev 5 жыл бұрын
Использование периферии процессора С или БЕЗ FreeRTOS никак не отличается. Если у вас какой-либо код работает без операционной системы, то просто перенесите его в выбранную задачу и позаботьтесь об отсутствии HAL_Delay() и прочих синтетических задержек.
@asurahan
@asurahan 4 жыл бұрын
Расскажите подробнее про ЦАП и АЦП. и так же очень сильно интересует протокол USB вот по этому мало уроков. спасибо
@VladimirMedintsev
@VladimirMedintsev 4 жыл бұрын
Простите но я не снимаю обучающих видео. Этот канал просто блог и ничего большего.
@yunushkin88
@yunushkin88 4 жыл бұрын
если выдержите манеру рассказчика то рекомендую narod stream канал в youtube там все распространенные на Руси мк. Ну есть и сайт с текстовыми уроками
@HeavyHeavyvich
@HeavyHeavyvich 5 жыл бұрын
советую перейти на Visual Studio + VisualGDB. Гораздо удобней разработка. И, конечно же, поддержка CubeMX из коробки
@VladimirMedintsev
@VladimirMedintsev 5 жыл бұрын
Я в начале начал задавать вопросы типа а в чем преимущество и так далее, а потом поглядел, аж мурашки побежали. Спасибо вам добрый человек, я на такой ужас не подписываюсь. Жуть какая-то...
@user-rx4rp5yb5j
@user-rx4rp5yb5j 5 жыл бұрын
​@@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 жыл бұрын
@@HeavyHeavyvich Меня лично в этой связке не устраивает только один компонент, вы его еще ошибочно приравняли к эталонам, а именно VS от Microsoft. Да, она популярна, никто не спорит но имеет свои недостатки и ограничения. Майкрософт пытается охватить необъятный мир но цель у этого проста - пересадить разработчиков под свою операционную систему. Если пространно рассуждать на тему "уйти в программирование", то я как бы не жалуюсь, если надо писать под Линукс или Винду то есть QT. Который гораздо больше похож на эталон разработки. Скажем так, на чем написана Google Earth? Там использована среда разработки QT. Как, впрочем, и в огромном количестве других приложений. Мир он не однополярен. Отдельно про закостенение. Усидеть одновременно на нескольких стульях не получится. Профессиональный программист должен определиться он либо специализируется на низкоуровневом программировании или лезет в такие смешные языки как C# придуманный для снижения точки входа в C++ программирование. Здесь каждый должен выбирать самостоятельно. И дискуссии на тему что лучше VS или Keil я предпочитаю не вести. Они не имеют смысла. Т.к. каждый должен выбирать инструмент под себя и стараться использовать его по максимуму. А уж про VisualGDB давайте я лучше промолчу. Это творение я даже обсуждать не хочу. Есть масса контор где это творение категорически не приветствуется и я ее тоже не использую. Собственно разговор не имеет смысла здесь еще и по той причине, что ролик посвящен не среде программирования, а FreeRTOS.
@VladimirMedintsev
@VladimirMedintsev 5 жыл бұрын
@@HeavyHeavyvich Я же говорю, у каждого свой пусть вы к VS пришли, я от нее несколько лет назад ушел. У каждого свой путь это естественно и нормально. Я никому не запрещаю использовать VS и прочее. Я не рекламирую Keil и это тоже можно заметить. Более того, я даже стараюсь не показывать полностью окно IDE потому что оно не имеет никакого значения. Но мои видео будут с использованием среды Keil и никогда не будут с VS.
@Vlad_4572
@Vlad_4572 2 жыл бұрын
Флэш память в контроллере, но заливаем код, почему-то в процессор))
@CoBaldr
@CoBaldr 5 жыл бұрын
USB на регистрах интересует, хотя бы чтото примитивное bulk передача в libusb. Сложно ибо есть отличия в реализациях usb разных семейств.
@VladimirMedintsev
@VladimirMedintsev 5 жыл бұрын
А что правда у кого-то столько времени свободного есть чтобы usb на регистрах писать? Я думал в наше время этим уже никто не балуется.
@CoBaldr
@CoBaldr 5 жыл бұрын
@@VladimirMedintsev увы есть :D не думаю что это популярная тема.
@azazelloazazello1379
@azazelloazazello1379 3 жыл бұрын
Добрые старые потоки? Вы знакомы с RIOT OS? Как то мало информации в нете об этой ос
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
На канале есть видео где даются сравнительные обзоры операционных систем для микроконтроллеров.
@azazelloazazello1379
@azazelloazazello1379 3 жыл бұрын
@@VladimirMedintsev , спасибо, посмотрю внимательнее. Просто в заголовках с первого взгляда крысу(riot)))) не нашел.
@azazelloazazello1379
@azazelloazazello1379 3 жыл бұрын
Я, так сказать, в самом начале процесса познания МК. С Си и С++ в целом относительно неплохо знаком. Ищу оптимальный вход в проблему. Ваши ролики хорошо помогают.
@Art1x_y
@Art1x_y 3 жыл бұрын
Все перестанет функционировать при задержке в мейне? А как же прерывания, ДМА, вочдоги, таймера и т.д.?)
@stanki-cnc
@stanki-cnc 3 жыл бұрын
странно, что у меня hal_delay всеравно тормозит весь код
@stanki-cnc
@stanki-cnc 3 жыл бұрын
сменил с++ на с и теперь все нормально работает
@nikotinesmola
@nikotinesmola 2 жыл бұрын
@@stanki-cnc Это где так меняется?
@albertziatdinov1373
@albertziatdinov1373 4 жыл бұрын
Простите, ну произошла ошибка в i2c и что дальше, пошлите туда ресет, если молчит. Если она наглухо зависла или устойство, которое на ней висит, то rtos в данном случае вам также не поможет. А ошибка в i2c блокирующей и не будет. Сможете опровергнуть? Желательно с примером, когда срыв клока, допустим, приведет к блокировке бесконечного цикла. Я просто не понимаю, как это возможно. Спасибо. P.S. И pic прекрасно выпускаются и продаются микрочипом до сих пор, прекрасно применяются и развиваются ;)
@VladimirMedintsev
@VladimirMedintsev 4 жыл бұрын
Каких-либо опровержений ваших теорий не будет. Все что я хотел сказать, я сказал в ролике, а доказывать что-то у меня нет никакого желания.
@ugene4063
@ugene4063 4 жыл бұрын
Всё то же самое что и в любой многозадачной ос с вытесняющей многозадачностью-переключение контекста в хэндлере таймера. Мне гораздо интереснее а что если задачи используют общий ресурс, например, uart?
@ugene4063
@ugene4063 4 жыл бұрын
Всё. Дошло как оно должно быть в таком случае.
@VladimirMedintsev
@VladimirMedintsev 4 жыл бұрын
А зачем нескольким задачам делить периферию? Так не есть правильно. Сделайте задачу обслуживающую uart а те, кому надо пусть в очередь кидают и из очереди получают необходимые данные. Так правильнее. Получится задача обслуживающая периферийное оборудование.
@ugene4063
@ugene4063 4 жыл бұрын
@@VladimirMedintsev да. Именно это мне и пришло в голову
@asurahan
@asurahan 4 жыл бұрын
@@ugene4063 UAR не пострадает если его инициализировать отдельно а писать или читать уже в задачах. всеравно в один момент времени может работать всего одна задача. многозадачность не есть одновременность. я делал что одна задача читала а другая писала и ничего все работало....
@user-pc9br8yt6j
@user-pc9br8yt6j 4 жыл бұрын
Mutex вам в помощь
@victorsi1992
@victorsi1992 4 жыл бұрын
От навіщо ви так жорстоко до восьмибітних мікроконтролерів??? А я пам'ятаю, як freeRtos встановлювали на Atmegа, і навіть сам створив один невеличкий промисловий проект, який і досі працює. )))
@dmitryponyatov2158
@dmitryponyatov2158 4 жыл бұрын
А акторную модель не приходилось использовать? Там смысл в том, что поток управления реализуется через передачу сообщений, на каждое сообщение отрабатывает максимально короткий обработчик, который делает кусочек работы, и порождает новое сообщение в очередь, откладывая выполнение до срабатывания обработчика следующего шага выяисления. За счет того, что очередь может работать с приоритетами, реализуется кооперативная многозадачность
@Vasily-ze5wf
@Vasily-ze5wf 3 жыл бұрын
На секундочку, это "бедствие" (коим назван Atmel) в те-же 12,6кБ, которые здесь весит пустышка, созданная кубом, помещает на два порядка более развитую программу, чем весь результат этого видео.
@agedmagister4562
@agedmagister4562 3 жыл бұрын
не принимай в обиду. Все мы работали с 8-бит МК и писали код битый час пытаясь сделать программы максимально эффективными и маленькими. Все эти старенькие контроллеры оставили добрые воспоминания.
@romandavydov8684
@romandavydov8684 2 жыл бұрын
атмеловские контроллеры отличные! я до сих пор на них и на ассемблере...что может быть лучше
@aidagamemnon
@aidagamemnon 4 жыл бұрын
Это, конечно, всё замечательно. Только контроллер применяется обычно в задачах с жестко заданным таймингом и последовательностью операций, а тут совершенно не понятно когда какая задача на какую переключается и в каком порядке и сколько тактов на переключение. Это больше для камней типа процессоров типа ARM A серии нежели ARM M.
@VladimirMedintsev
@VladimirMedintsev 4 жыл бұрын
А причем тут тайминг и задачи? Тут совершенно другой подход к программированию.
@aidagamemnon
@aidagamemnon 4 жыл бұрын
@@VladimirMedintsev Я уже объяснил к чему. Если вы пишете чисто софтверное приложение, то все отлично. А если типичное приложение для управления внешними устройствами (для чего и производятся контроллеры) то оно не подходит.
@VladimirMedintsev
@VladimirMedintsev 4 жыл бұрын
@@aidagamemnon Ок, не проблема. Не подходит так не подходит, это ваше право иметь собственное мнение. А для интересующихся я потом сделаю видео и объясню как с этим жить именно на микроконтроллерах и почему необходимо использовать FreeRTOS в классических управляющих алгоритмах.
@Asmcavr
@Asmcavr 4 жыл бұрын
RTOS облегчает программирование , вы разбиваете свой проект на taskи, которые работают независимо друг от друга. Вам никто не запрещает пользовать прерывания. Прежде чем писать ерунду - попробуйте по пользоваться .
@t966rt
@t966rt 3 жыл бұрын
Чем М отличается от А? Для того о чем вы пишите как раз и придумали RTOS. Расшифруйте аббревиатуру RTOS. Real-Time о чем то должно говорить. Почитайте про приоритеты, вытеснение задач, про примитивы синхронизации и т.п.
@aleksandrzakutnyy4450
@aleksandrzakutnyy4450 5 жыл бұрын
предлагаю написать программу с 3 блинками с периодами 1с, 0.01с, 0.0001с
@VladimirMedintsev
@VladimirMedintsev 5 жыл бұрын
Скажите, а зачем писать такую программу? В данном примере мигание светодиодами - просто чтобы проиллюстрировать работу двух независимых задач и не более. А если вам необходимо создать "блинькающую" программу то просто настраивайте таймер и все проблемы решены.
@aleksandrzakutnyy4450
@aleksandrzakutnyy4450 5 жыл бұрын
@@VladimirMedintsev в качестве примера. а если конкретно, то можно рассмотреть задачу регулятора тока, регулятора скорости, индикатора в электроприводе
@VladimirMedintsev
@VladimirMedintsev 5 жыл бұрын
Ок как-нибудь сделаем.
@janedoe6182
@janedoe6182 5 жыл бұрын
Когда люди постоянно натыкивают мышкой в менюшках конфигурацию периферии и даже структуру программы, не понимая толком что происходит под обертками, они начинают стремительно тупеть, прошивки начинают расти в объеме и тормозить. Есть видео с бенчмаркми чистого кода на AVR, того же кода собранного с ардуиновскими библиотеками и такие же на STM32, чистого кода и с STDPeriph, и там разница в скорости в десятки раз отличается. Видео называется "Тормознутость ардуино". Это не к тому, что ОС и обертки HAL не нужны, а к тому, что их нужно очень осторожно и избирательно применять. А пока такого понимания и уверенности, что это абсолютно необходимо, нет, особенно на начальной стадии, лучше все конфигурировать руками, и циклы учиться писать умные и надежные, которые не зависают.
@janedoe6182
@janedoe6182 5 жыл бұрын
Вон, человек в комментариях уже пишет: "Натыкал мышкой все как у вас, ничо не работает, низнаю что делать, все пропало. Памагити!". Можно ответить фразой из кино: "Не нужна тебе такая тачка, брат. Поверь мне на слово."
@VladimirMedintsev
@VladimirMedintsev 5 жыл бұрын
Как у классиков смешалось все, люди, кони все в одну кашу. AVR, ардуино, STM32... Как можно вообще с чем-то сравнивать код ардуино, который создан для обучения детей в школе с кодом для AVR? Как и каким образом можно сюда приплетать STM32. Ядра разные, я уж не говорю, про тот факт, что была использована методика тестирования не показывающая вообще ничего. Там автору ролика скучно было и решил он сделать видео на животререщущую тему. В вопросе разобраться не потрудился, т.е. дилетанство чистой воды. А про "натыкивают" люди ну даже комментировать смысла нету.
@janedoe6182
@janedoe6182 5 жыл бұрын
@@VladimirMedintsev там сравнивается скорость работы не AVR и STM32, а скорость работы чистого кода и тех же действий, на той же платформе, но с использованием оберток. STM там для сравнения самого себя простого и с библиотекой STDPeriph
@zud7127
@zud7127 4 жыл бұрын
Вот как раз для быстро старта и начала изучения, все эти плюшки для новичков огромный плюс. Человек должен попробовать, проникнуться, а потом потихоньку уже начинать лезть глубоко. Ведь никто не начинает изучения компьютера с изучения радиокомпонентов. Уровень абстракции для каждого свой и задачи многие не требуют лезть так далеко. Может вообще на asm писать,зачем нам STDPeriph?
@Mirk047
@Mirk047 4 жыл бұрын
Пока одни устраивают холивары на тему "ардуино для даунов", другие на проектах на ардуинах рубят бабосики. Таки в чем сыр-бор если на это есть своя ниша с финансированием?
@marxtl3842
@marxtl3842 2 жыл бұрын
Дейкстра и Кнут тихо курят в сторонке. Доступность вычислительных сред породила новый уровень програмирования.
@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 ай бұрын
У меня тоже такая проблема. Если вы решили проблему, можете мне помочь, пожалуйста?
MISS CIRCLE STUDENTS BULLY ME!
00:12
Andreas Eskander
Рет қаралды 21 МЛН
A little girl was shy at her first ballet lesson #shorts
00:35
Fabiosa Animated
Рет қаралды 17 МЛН
路飞太过分了,自己游泳。#海贼王#路飞
00:28
路飞与唐舞桐
Рет қаралды 39 МЛН
Keil uVision или STM32CubeIDE? Что использовать.
13:30
Vladimir Medintsev
Рет қаралды 27 М.
Изучаю STM32!
20:26
Лёша Кластер
Рет қаралды 191 М.
STM32. Библия программиста
32:32
NR.electronics
Рет қаралды 59 М.
Redis за 20 минут
23:22
suchkov tech
Рет қаралды 121 М.
STM32 c чего начать?Быстрый старт с нуля.
34:23
Xiaomi SU-7 Max 2024 - Самый быстрый мобильник
32:11
Клубный сервис
Рет қаралды 555 М.
Samsung laughing on iPhone #techbyakram
0:12
Tech by Akram
Рет қаралды 7 МЛН