Владимир, огромное спасибо!! Это невероятно полезный набор кода, чтобы абстрагироваться от закрытой HAL и более досконально понять работу контроллера. Без Вас даже и не мог представить себе, что в недрах ST есть подобное.Спасибо!
В первую очередь огромное спасибо за материал! Работаем с STM32 с 2011 года, из-за текущих дел не заметили, точнее сказать не обратили внимание на сниппеты. В 2011 году решились уйти с регистровой модели на новый уровень абстракции SPL. Круто, быстро, переносимо.... ну, ну. Непонятно, неоптимально, приходится всё равно подсматривать как это сделано в библиотеке + понимание регистров никто не отменял. Иногда складывается ощущение двойной работы. Ну да ладно, десятки проектов сделаны. И вот SPL не поддерживается в новых МК.... Приходится иметь две среды разработки. Дальше HAL, да ну, уже не модно! Сейчас LL, потом опять перестанут поддерживать..... В команде люди меняются, старые проекты очень сложно поддерживать на SPL. Было бы хорошо сразу ST продвигать сниппеты, и не менять концепцию каждые 5 лет.... Эмоционально высказался. Просто столько "пустого" времени потеряли на изучение актуальных на данный момент времени библиотек, с которыми мучаемся спустя несколько лет. Может быть кому поможет это высказывание при выборе долгосрочной концепции по инструментам разработки на МК.
@@wirtdonners4212 Я это понимаю. С точки зрения оптимизации кода и уменьшения количества операций. Мне бы кто нибудь подсказал бы как его правильно усыпить и вовремя разбудить во FreeRTOS
Супер! Весьма признателен! вот прямо сходу нашёл полезный пример. Правда у меня камень другой, но это мало роялит. В качестве примера очень полезная коллекция!
Огромное спасиба вам. Вы очен хорошо обйисняете. Я был б очен рад если вы снимали видео уроки. Если ваши уроки были б в Удемы хотел купит одтудо. ( Я из Турцы [ Turkey ] по етому не умеыу писат хорошо на руском, но понимаю). :)
Спасибо! Не понимал, как можно писать для F0 не на регистрах. И вот подтверждение, примеры кода, которых так не хватало для понимания того, как видит производитель программирование нулевых серий.
@@VladimirMedintsev Жаль, я в своё время потратил много вечеров в обработке ошибок i2c F7 при работе с активной нагрузкой (мастер||слейв). И до сих пор не уверен в правильности всех решений. И да, примеры от st есть, но либо слейв, либо мастер.
Да эти хитрецы далеко не на все примеры дают. Причем вот по странному стечению обстоятельств если периферия полностью понятна то и примеров много, а на спорные вещи примеров нет.
Владимир Я чайник Что мне нужно смотреть=учить , чтобы построить устройство записывающее - напряжение, ток, время работы и затем чтобы передавало в интернет и удалённо можно было бы смотреть графики соответственно сколько работало при каком напряжении какой ток потребляло. Большое спасибо за ваши старания для чайников 😃👍
Ну вот из дорогих Socomec Diris A40. Но есть и у Шнайдера хорошие приборы. Но дирис я часто использую он просто шикарен. И к нему есть web интерфейс. Там такая аналитика аж закачаться можно.
@@VladimirMedintsev Благодарю.😍 Только походу это не совсем то Надо так чтобы без экрана(только электроника) и возможность подключить для контроля много устройств(скажем 10 моторов и их контроль V . A . Температура. Время работы ) далее отправка в инет.(сервер) . Далее оператор смотрит графики с тысяч- миллионов таких контроллеров. И да действительно дороговато- для масштабирования
как вы раньше не посмели рассказать от сниппетсах ! преступление ! я пол года назад начал изучать стм по урокам народ стрим (в некотором роде отличные уроки, но иногда не хватает пояснений и комментариев), до этого занимался на авр и делал достаточно сложные проекты, потом авр перестал удовлетворят требованиям по производительности и возможностям и решил перейти на стм. Начал писать свой код под стм с использованием ХАЛ по средствам стм куба и кеила, дошел до определенного уровня и столкнулся с проблемой глючности ХАЛ и полного непонимания всех процессов в коде,к примеру, некоторые элементы кода из хал использовали для разных целей одни и те же регистры таймеров и портов, что приводило к неправильной последовательности записи в регистр, к ложным поднятиям или опусканиям некоторых важных флагов и по итогу контроллер зависал. Когда решил разобраться что не так, не смог, тк столкнулся с запутанной паутиной и нелогичностью работы с регистрами в хал. решил сам освоить кмсис и уйти от хал,спл и прочего, так сказать, полез в пекло, но не смог осилить. не хватало понятных примеров с описаниями и комментариями, сразу навалился огромный ком неструктурированной информации, подкачало и слабое знание работы и логики регистров в стм, курение референс мануалов мало что давало без примеров, а долбиться головой о стол с кучей бумаг надоело, решил забросить изучение стм так нормально и не начав. А сейчас появилось 2 дыхание, с таким мощнейшим учебным материалом под силу любая задача. Спасибо автору за просвещение !
Недавно открыл для себя libopencm3, очень даже зашло. А всё началось с того что нашёл проект USB-3xUART который был написан на этих библиотеках, Он не собирался видимо писался на старой версии, пришлось переписать немного) А SPL юзаю под stm8 переписанную под SDCC.
Ну libopencm3 только под М3 и как бы устарела безнадежно. В этом плане ее как-то изучать это на 10 лет назад откатываться. Сейчас прекрасно LL перекрывает и SPL и libopen. Хотя хозяин барин.
Я может не напишу чего нового но вдруг кто не знает что в директории keil лежат файлы справок chm для stm32f10x в нем есть примеры на spl которая по сути простейшая обертка cmsis
Ну хотя бы по той причине, что MbedOS не абстракция. В контексте STM32 абстракции это LL, HAL и т.п. А MbedOS это операционная система. Не самая лучшая, но операционная.
Да я уже сотню раз отвечал на этот вопрос. Семейство микроконтроллеров STM32 динамично развивается и сложность растет. MbedOS при этом охватывает не все серии STM и не имеет какой-либо сертификации кроме Thread. Есть более интересные операционные системы. Сильно более интересные, но из-за рекламы новички ведутся на MbedOS. Спорить тут нет смысла пусть себе там развлекаются. И дело тут по большей части не в тру разработке. Просто по мере роста опыта надоедает возиться с инструментами не сильно удовлетворяющими вашим возросшим потребностям. А нужно будет простота и надёжность. Ну иными словами вы по мере роста опыта сами упретесь в ряд косяков.
@@VladimirMedintsev Очень понравился первый ролик. В следующем ожидал про выбор тактирования и т.д. Настройка перефирии. Совсем непонятна тема тактрования в Cube. Заранее спасибо!
"CMSIS для начинающего слишком сложно." Как-то странно получается, в начале сложно, а потом еще сложнее, реализованные проекты, привычка. Так люди и зависают в состоянии вечного начинающего.
@@VladimirMedintsev А некогда вечно начинать. Надо продукт давать. А то на работе - сначала CMSIS, только вроде освоил - а вот теперь будет HAL... Ну и, конечно, FreeRTOS, куда ж без неё, радимай... хотя я и без FreeRTOSа неплохо обходился.
Как бы не понял восхищения автора. Эти микропримеры появились у ST во времена как бы так сказать безвременья. STL уже показало свою неполноту и частичную ущербность, а HAL еще не было. И в общем при невозможности исчерпать флешу и исполнении большинства кода этих примеров один раз при инициализации периферии - не тратьте свое время разраба. Используйте LL, обертывая его в нормальный свой код драйверов на C++.
@@kokotmkokot4926 И?... Чем то что я написал не относится на F0? Уж все поверено давно продакшеном на STM32F030F4, гляньте объем оперативы, поднимается 3 задачи на FreeRTOS легко и дрова на си-пи-пи, обработка в тасках. Я ж не об том написал, что ОПТИМИЗИРОВАННОГО. Я ж об том, что можно и вернуться к пропогандированию кода типа АЦП->РегистрУправленияАЦП = 0x3A03. И радоваться скорости исполнения. Но это выполнится один раз при ините АЦП а дальше будете вспоминать что этот код побитно значит. Не там оптимизируете. F0 - в работу берем iq-математику вместо флотов, и т.д., вот это оптимизация :-)))
Мне не понравилось две вещи. 1. Почему пишут __INLINE, могу поспорить что этот макрос разворачивается в static inline (последний модификтор можно не писать), смысл в макросе не вижу, неужели он может разворачиваться как то иначе, так же все что с суффиксом __ это резерв для компилятора. 2. Везде многострочные комментарии. Это же так не удобно. Писать в таком стиле оправданно только для C89 что на сегодняшний день бред. Складывается ощушение что писали люди хорошо знающие платформу, но в программировании невежды.
Невежды в программировании. Я просто в осадок выпал. Ну какое же надо иметь самомнение чтобы так вот о коде команды разработчиков говорить. Слава Господу они не узнают.
@@VladimirMedintsev я писал выше лишь про то, что всё должно быть оправданно и инструмент(язык) надо хзнать, тем более если это референсные примеры. Многие программисты (схемотехники) в embedded думают что они программисты.
макрос разворачивается в то, что им определено. Нужен он для того, что это МАКРОС, и для компиляторов короые не знают что такое static, inline можно этот макрос переназначить или отключить.... Еще для генерации кода через doxygen полезно, так как у него свой особый препроцессор. Если вы задаетесь такими вопросами, это может означать только одно - вы чего-то не знаете. Пишут в таком стиле не столько для C89 а для misra, keil, iar, и т.п.
Вообще, не менее половины всей работы обычно "курение" всякой доккментации. В этом материал крайне полезен. Спасибо!
Владимир, огромное спасибо!! Это невероятно полезный набор кода, чтобы абстрагироваться от закрытой HAL и более досконально понять работу контроллера. Без Вас даже и не мог представить себе, что в недрах ST есть подобное.Спасибо!
Отличный пример того, как надо писать и документировать библиотеки
В первую очередь огромное спасибо за материал! Работаем с STM32 с 2011 года, из-за текущих дел не заметили, точнее сказать не обратили внимание на сниппеты. В 2011 году решились уйти с регистровой модели на новый уровень абстракции SPL. Круто, быстро, переносимо.... ну, ну. Непонятно, неоптимально, приходится всё равно подсматривать как это сделано в библиотеке + понимание регистров никто не отменял. Иногда складывается ощущение двойной работы. Ну да ладно, десятки проектов сделаны. И вот SPL не поддерживается в новых МК.... Приходится иметь две среды разработки. Дальше HAL, да ну, уже не модно! Сейчас LL, потом опять перестанут поддерживать..... В команде люди меняются, старые проекты очень сложно поддерживать на SPL. Было бы хорошо сразу ST продвигать сниппеты, и не менять концепцию каждые 5 лет.... Эмоционально высказался. Просто столько "пустого" времени потеряли на изучение актуальных на данный момент времени библиотек, с которыми мучаемся спустя несколько лет. Может быть кому поможет это высказывание при выборе долгосрочной концепции по инструментам разработки на МК.
Очень точно все написали!
Были б снипеты для stm8. Не пилил бы велосипеды😁
Жму Вам руку)) Было весьма занятно !!! Реально не хватало таких вот примеров именно на регистрах для лучшего понимания, да еще и с коментариями!
Спасибо что радуете действительно полезной информацией
Спасибо. Действительно бесценно. Ещё бы про микропотребление😊
Над ним нужно биться, биться, биться и ещё раз биться... Одним кодом это не решается, к сожалению.
@@wirtdonners4212 Я это понимаю. С точки зрения оптимизации кода и уменьшения количества операций. Мне бы кто нибудь подсказал бы как его правильно усыпить и вовремя разбудить во FreeRTOS
Я уж с год как узнал об этом, но совершенно случайно набрёл. Думаю вы многим сейчас покажете очередную годноту
Так то вы просто не знаете сколько такого ещё в закромах имеется.
Вот спасибо! Давно искал что-то простое и с коммертами.
Супер! Весьма признателен! вот прямо сходу нашёл полезный пример. Правда у меня камень другой, но это мало роялит. В качестве примера очень полезная коллекция!
Однако хочется готовенького, чтобы только подключать к своим проектам без переписывания. Может быть "господь услышит наши молитвы"... :-)
Вы как всегда спаситель моего времени).
век живи век учись... дурак помрешь.
я точно не знал про сие чудо. благодарю!
это просто комментарий для поддержки канала и его автора
спасибо за полезный ролик
Огромное спасибо!
Это реально учебник в, так сказать, специфичной форме представления
Сейчас смотрю, комментариев больше самого кода
Так это же чудесно.
Супер! Я как раз и юзаю эти контроллеры, вернее начал их использовать...
Круто, спасибо! Не знал)
Будем курить примеры и мануалы))
Огромное спасиба вам. Вы очен хорошо обйисняете. Я был б очен рад если вы снимали видео уроки. Если ваши уроки были б в Удемы хотел купит одтудо. ( Я из Турцы [ Turkey ] по етому не умеыу писат хорошо на руском, но понимаю). :)
Спасибо Вам огромное. Приятно что смотрите из Турции.
Вот выучу язык и поеду жить в Турцию.
@@VladimirMedintsev Я пробовал. Всё забыл моментально, разве что кроме "тэшеккюр(лер)". :-)
@@VladimirMedintsev I will wait to you in Airport 😁
Thanks a lot.
Спасибо
Спасибо. Теперь всё-таки достану свою stm32😂, а то запылилась😂
Спасибо.
Эх, кабы лавали такие же "библиотеки" и для других серий... Некогда самому всё это переделывать под свои МК. Всё равно спасибо за информацию.
Спасибо за инфу. Ещё бы подвезли поддержку G0, вообще цены не было бы.
Спасибо! Не понимал, как можно писать для F0 не на регистрах. И вот подтверждение, примеры кода, которых так не хватало для понимания того, как видит производитель программирование нулевых серий.
Хороший набор примеров, подожду для F7.
Уже не будет. Этому набору 5 лет. Просто как-то не думал что людям это надо.
@@VladimirMedintsev Жаль, я в своё время потратил много вечеров в обработке ошибок i2c F7 при работе с активной нагрузкой (мастер||слейв). И до сих пор не уверен в правильности всех решений. И да, примеры от st есть, но либо слейв, либо мастер.
Да эти хитрецы далеко не на все примеры дают. Причем вот по странному стечению обстоятельств если периферия полностью понятна то и примеров много, а на спорные вещи примеров нет.
класс
Владимир
Я чайник
Что мне нужно смотреть=учить , чтобы построить устройство записывающее - напряжение, ток, время работы и затем чтобы передавало в интернет и удалённо можно было бы смотреть графики соответственно сколько работало при каком напряжении какой ток потребляло.
Большое спасибо за ваши старания для чайников 😃👍
В вашем случае проще купить такой прибор.
@@VladimirMedintsev
А какой это должен быть ? Как называется ? Мне не приходит в мозг что в поисковике писать 😐
Ну вот из дорогих Socomec Diris A40. Но есть и у Шнайдера хорошие приборы. Но дирис я часто использую он просто шикарен. И к нему есть web интерфейс. Там такая аналитика аж закачаться можно.
@@VladimirMedintsev
Благодарю.😍
Только походу это не совсем то
Надо так чтобы без экрана(только электроника) и возможность подключить для контроля много устройств(скажем 10 моторов и их контроль V . A . Температура. Время работы ) далее отправка в инет.(сервер) . Далее оператор смотрит графики с тысяч- миллионов таких контроллеров.
И да действительно дороговато- для масштабирования
Напишите ТЗ, закажите, вам все изготовят.
ST не даёт скачать примеры (даже с VPN и учёткой). У вас случаем не остались эти архивчики?
не то что не знал, а уже как 2 года использую
как вы раньше не посмели рассказать от сниппетсах ! преступление ! я пол года назад начал изучать стм по урокам народ стрим (в некотором роде отличные уроки, но иногда не хватает пояснений и комментариев), до этого занимался на авр и делал достаточно сложные проекты, потом авр перестал удовлетворят требованиям по производительности и возможностям и решил перейти на стм. Начал писать свой код под стм с использованием ХАЛ по средствам стм куба и кеила, дошел до определенного уровня и столкнулся с проблемой глючности ХАЛ и полного непонимания всех процессов в коде,к примеру, некоторые элементы кода из хал использовали для разных целей одни и те же регистры таймеров и портов, что приводило к неправильной последовательности записи в регистр, к ложным поднятиям или опусканиям некоторых важных флагов и по итогу контроллер зависал. Когда решил разобраться что не так, не смог, тк столкнулся с запутанной паутиной и нелогичностью работы с регистрами в хал. решил сам освоить кмсис и уйти от хал,спл и прочего, так сказать, полез в пекло, но не смог осилить. не хватало понятных примеров с описаниями и комментариями, сразу навалился огромный ком неструктурированной информации, подкачало и слабое знание работы и логики регистров в стм, курение референс мануалов мало что давало без примеров, а долбиться головой о стол с кучей бумаг надоело, решил забросить изучение стм так нормально и не начав. А сейчас появилось 2 дыхание, с таким мощнейшим учебным материалом под силу любая задача. Спасибо автору за просвещение !
А что собственно сложного писать на CMSIS без HAL и LL? Начинающим и нужно разбираться с CMSIS, иначе это путь в никуда.
Спасибо. Надо пошерстить сайт СТ на предмет подобных кладов, может есть что то еще.
Чтобы сильно пошерстить надо знать где шерстить. Я о наиболее интересном расскажу в ближайших видео.
Недавно открыл для себя libopencm3, очень даже зашло. А всё началось с того что нашёл проект USB-3xUART который был написан на этих библиотеках, Он не собирался видимо писался на старой версии, пришлось переписать немного) А SPL юзаю под stm8 переписанную под SDCC.
Ну libopencm3 только под М3 и как бы устарела безнадежно. В этом плане ее как-то изучать это на 10 лет назад откатываться. Сейчас прекрасно LL перекрывает и SPL и libopen. Хотя хозяин барин.
@@VladimirMedintsev Да нужда была чужой проект поднять вот изучил немного, а так как то в последнее вообще с stm8 много вожусь.
Я может не напишу чего нового но вдруг кто не знает что в директории keil лежат файлы справок chm для stm32f10x в нем есть примеры на spl которая по сути простейшая обертка cmsis
Здравствуйте, пишете ли вы проекты на заказ, если да, то как связаться?
Да, пишем. Электронная почта в описании канала.
HAL + CMSIS с регистрами. А как же LL? Это ж "золотая середина"!
Ваше мнение?
Если вопрос ко мне, то есть специальный ролик про CMSIS, HAL, LL, в котором я рассматриваю все эти библиотеки.
Здравствуйте будет видно про MBED OS ?
Отдельного видео про MbedOS не будет. Я уже неоднократно об этом говорил.
По поводу абстракции
А почему не mbed os? Она таки начала помогать мне перескочить ардуино.
Ну хотя бы по той причине, что MbedOS не абстракция. В контексте STM32 абстракции это LL, HAL и т.п. А MbedOS это операционная система. Не самая лучшая, но операционная.
@@VladimirMedintsev было бы интересно узнать почему она такая себе? Или это в контексте тру СТМ32 разработки? Хотя чую я, что путаю что-то
Да я уже сотню раз отвечал на этот вопрос. Семейство микроконтроллеров STM32 динамично развивается и сложность растет. MbedOS при этом охватывает не все серии STM и не имеет какой-либо сертификации кроме Thread. Есть более интересные операционные системы. Сильно более интересные, но из-за рекламы новички ведутся на MbedOS. Спорить тут нет смысла пусть себе там развлекаются.
И дело тут по большей части не в тру разработке. Просто по мере роста опыта надоедает возиться с инструментами не сильно удовлетворяющими вашим возросшим потребностям. А нужно будет простота и надёжность. Ну иными словами вы по мере роста опыта сами упретесь в ряд косяков.
Подскажите а на HAL такие примеры есть?
Десятки примеров для HAL устанавливаются вместе с кубом и доступны в нем же.
Когда уже вторая часть обучающего видео по STM? ^))
Все последующие видео были с использованием тестовой платы которая и была в этом видео. Так что у него продолжений ровно несколько.
@@VladimirMedintsev Очень понравился первый ролик. В следующем ожидал про выбор тактирования и т.д. Настройка перефирии. Совсем непонятна тема тактрования в Cube. Заранее спасибо!
@@GPPSoft В описании канала сказано, что я не делаю какого либо рода уроки. Это просто блог.
@@VladimirMedintsev Хороший блог!👍 Спасибо за ответ!😁
"CMSIS для начинающего слишком сложно." Как-то странно получается, в начале сложно, а потом еще сложнее, реализованные проекты, привычка. Так люди и зависают в состоянии вечного начинающего.
По сути мы все вечные начинающие, путь познания он свой для каждого и он бесконечен.
CMSIS это проще некуда, а вот копаться в чужих функциях хуже нет. CMSIS смотри себе таблицы по регистрам и все, все понятно и прозрачно.
@@VladimirMedintsev А некогда вечно начинать. Надо продукт давать. А то на работе - сначала CMSIS, только вроде освоил - а вот теперь будет HAL... Ну и, конечно, FreeRTOS, куда ж без неё, радимай... хотя я и без FreeRTOSа неплохо обходился.
А как насчёт STM8?
Честно говоря я не работаю с STM8 и не преподаю их на курсах, по этой причине я и библиотеки для этой линейки МК не рассматриваю.
У мене тільки xF030: краще за ардуїнки а ще і значно дешевше, дякую!
Как бы не понял восхищения автора. Эти микропримеры появились у ST во времена как бы так сказать безвременья. STL уже показало свою неполноту и частичную ущербность, а HAL еще не было. И в общем при невозможности исчерпать флешу и исполнении большинства кода этих примеров один раз при инициализации периферии - не тратьте свое время разраба. Используйте LL, обертывая его в нормальный свой код драйверов на C++.
@@kokotmkokot4926 И?... Чем то что я написал не относится на F0? Уж все поверено давно продакшеном на STM32F030F4, гляньте объем оперативы, поднимается 3 задачи на FreeRTOS легко и дрова на си-пи-пи, обработка в тасках. Я ж не об том написал, что ОПТИМИЗИРОВАННОГО. Я ж об том, что можно и вернуться к пропогандированию кода типа АЦП->РегистрУправленияАЦП = 0x3A03. И радоваться скорости исполнения. Но это выполнится один раз при ините АЦП а дальше будете вспоминать что этот код побитно значит. Не там оптимизируете. F0 - в работу берем iq-математику вместо флотов, и т.д., вот это оптимизация :-)))
А примеров с usb нет там?
Мне не понравилось две вещи. 1. Почему пишут __INLINE, могу поспорить что этот макрос разворачивается в static inline (последний модификтор можно не писать), смысл в макросе не вижу, неужели он может разворачиваться как то иначе, так же все что с суффиксом __ это резерв для компилятора. 2. Везде многострочные комментарии. Это же так не удобно. Писать в таком стиле оправданно только для C89 что на сегодняшний день бред. Складывается ощушение что писали люди хорошо знающие платформу, но в программировании невежды.
Невежды в программировании. Я просто в осадок выпал. Ну какое же надо иметь самомнение чтобы так вот о коде команды разработчиков говорить. Слава Господу они не узнают.
@@VladimirMedintsev я писал выше лишь про то, что всё должно быть оправданно и инструмент(язык) надо хзнать, тем более если это референсные примеры. Многие программисты (схемотехники) в embedded думают что они программисты.
макрос разворачивается в то, что им определено. Нужен он для того, что это МАКРОС, и для компиляторов короые не знают что такое static, inline можно этот макрос переназначить или отключить.... Еще для генерации кода через doxygen полезно, так как у него свой особый препроцессор. Если вы задаетесь такими вопросами, это может означать только одно - вы чего-то не знаете. Пишут в таком стиле не столько для C89 а для misra, keil, iar, и т.п.
Многострочное комментарии реально раздражают!
@@BesitzeRuf а какой компилятор не знает что такое static?