Hi mate! You're such a good instructor. I cant understand Russian language but i have learned so much things just watching. Thanks. I hope you'll remake this cources in english. Hope you have a great day!
@salvatoretrey96973 жыл бұрын
instablaster...
@Minas__Morgul5 жыл бұрын
Автор большое, даже огромное, спасибо! Ваш канал (и сайт) совместно с уроками Sappise самые лучшие в руском сегменте тюбика!
@месяцвъябрь8 жыл бұрын
Отличная подача материала , без спешки и подробно . Респект.
@narodstream5528 жыл бұрын
Спасибо!
@WOODIX8 жыл бұрын
Прекрасные уроки!
@narodstream5528 жыл бұрын
Спасибо за оценку!
@aerotachka7 жыл бұрын
Занимаюсь сейчас таймерами. В HAL есть несколько макросов, позволяющих на лету менять параметры таймера и получать его значения. Так что можно не вводить сои переменные. Например _HAL_TIM_SET_AUTORELOAD меняет период, __HAL_TIM_GET_COUNTER позволяет получать значение счетчика. __HAL_TIM_SET_COUNTER -устанавливает значение счетчика.
@arturgibadullin49483 жыл бұрын
Если приведенный код на работает, то попробуйте закомментировать HAL_TIM_Base_Start(&htim6). Оставить только с IT. Мне помогло
@yakovdruker62273 жыл бұрын
Кстати да. Такая же тема.
@nikitasokolov67782 жыл бұрын
Не удалось разобраться, чем это вызвано? Я долго голову ломал над проблемой, пока на ваш комментарий не наткнулся
@harrys_potter11 ай бұрын
HAL_TIM_BASE_Start_IT запуск таймер + прерывание , HAL_TIM_BASE_Start - запуск тока таймера;зачем автор пишет это два раза не понятно ... отсюда и косяк .@@nikitasokolov6778
@Mary713es9 ай бұрын
Спасибо, не известно с чем это связано?
@basilmiller19624 ай бұрын
Ля, легенда, мужик
@DrargonsM8 жыл бұрын
поосновательно и интересно!
@mr_hexus8 жыл бұрын
Не надо ничего руками в конфигах CubeMX править при дублировании. Новый проект сохраняется через "Save Project As/Save the Project in a new file" (в кубе). Исходники вот потом замещать в новом созданном.
@ВасёкПупкин-ч1н7 жыл бұрын
Согласен! Притом копировать можно прям в Eclipse. За Видео Автору оргромное спасибо!
@smollett462310 ай бұрын
Здравствуйте, можете подсказать, за счет чего входит в прерывание? Из-за update event?
@prizhimin7 жыл бұрын
HAL_TIM_Base_Start не нужно использовать. Достаточно только HAL_TIM_Base_Start_IT.
@narodstream5527 жыл бұрын
Ну да, теперь я в курсе. спасибо!
@РоманОстанков-з8н3 жыл бұрын
Я из 2021, если не закомментить эту строку совсем, то таймер вообще не взводится (потрачен кусочек жизни и нервов)
@geghzvryh18403 жыл бұрын
@@РоманОстанков-з8н А я думал, почему лыжи не едут совсем :D
@IliveInAlmaty3 жыл бұрын
@@РоманОстанков-з8н Спасибо! а я тоже думал что-за фигня, очень жалко конечно что уроки так устарели, от этого очень много несостыковок особенно в кубе
@Russell4733 жыл бұрын
@@РоманОстанков-з8н я уже тоже подумал, что приехал!!!
@ВалерийСпорыхин-ш4ы Жыл бұрын
Не загорается зеленый светодиод. Делал все как в уроке, потом еще раз переделал но светодиод как не горел так и не горит. Подскажите пожалуйста что делать. В чем может быть проблема. Отладочная плата такая же.
@СергейЗинченко-о6ю4 жыл бұрын
Привет.А можешь объяснить зачем 30:30 после HAL_TIM_BASE_Start(&htim6); сразу идет строка HAL_TIM_BASE_Start_IT(&htim6); ?
@harrys_potter11 ай бұрын
затем что он не знает что ..... HAL_TIM_BASE_Start_IT запускает таймер + прерывание; HAL_TIM_BASE_Start ззапускает тока таймер, в его примере это не нужно включать;
@obuhovmi8 жыл бұрын
Здравствуйте. А можно по подробнее про таймер SysTick. И на основе его или другого таймера организовать многозадачный таймер(диспетчер задач) с разными функциями(циклический, одиночный, с задержкой на вкл, выкл функции). Есть конечно RTOS но не всегда его рационально использовать для простых проектов! И по нему хотелось бы уроки увидеть!
@СергейМолочников-ы1ъ3 жыл бұрын
Регулируют частату вращения в улочки маленькой или большой на нашем коллектор ном станочке
@statstopfinish7 жыл бұрын
Есть вопрос . Я хочу использовать прерывание таймера, для определения что в UART пришел пакет данных, но обработчик прерывания находится в другом файле stm32f1xx_it.c , и у меня не получается выставить флаг для других функций так как обработчик прерывания не видит глобальных переменных расположены в main.c .Как с этим быть?
@АнтонГореев4 жыл бұрын
Вечер добрый! Спасибо за уроки. Возникла ошибка при генерации кода, а именно conflicting types for "Error Handler", не подскажите, как исправить?
@Yushik793 жыл бұрын
Здравствуйте только начал изучать STM обзавелся я недавно такой же платой как в видеоуроке. Всё получилось кроме сегодняшнего видеоурока №5, в частности при нажатии на кнопку всё отрабатывается как положено но прерывание не работает зелёный светодиод не мигает. Пересматривал видео, проверял несколько раз, пробовал создать новую конфигурацию в Кубе ничего не помогло. Подскажите где грабли торчат?
@AmosTim3 жыл бұрын
Убери HAL_TIM_Base_Start(&htim6); и оставь только HAL_TIM_Base_Start_IT(&htim6);
@Yushik793 жыл бұрын
@@AmosTim спасибо помогло, хотя не пойму почему. Возможно в новых версиях Кеил и Куб разработчики что-то изменили в библиотеках, чтоб это понять надо их разобрать и посмотреть как и какие регистры они пишут.
@atlantghost18037 жыл бұрын
Сделайте пожалуйста Урок o CMSIS_in_HAL для 32F103 (где искать как читать писать Cmsis) порты Input/Output регистры... За ранние СПАСИБО. П.С. По подробней о структурах и ссылках, адресах.
@alexanderurezchenko64465 жыл бұрын
Спасибо!
@ye11ow_fpv5 жыл бұрын
Здравствуйте! Благодарю за уроки. Столкнулся с ошибками (17 шт.) такого рода: L6200E: Symbol tim6_counter multiply defined Версия кейла 5.29, куб 4.26. Пользуюсь руководством как в видео за исключением копирования файла main.h, т.к. он в папке с проектом уже есть и, соответственно в этом существующем файле вписываю uint8_t tim6_counter. Помогите скомпилить код)
@spindle8534 жыл бұрын
Та же беда, удалось найти ответ?
@ye11ow_fpv4 жыл бұрын
@@spindle853 да. Инициализируйте tim6_counter в main.c и экстернальте ее в файле stm32f4xx_it.c, а из main.h сотрите и все должно заработать
@ЕвгенийЮрьев-р2ь7 жыл бұрын
Здравствуйте, большое спасибо за уроки! Не могли бы подробней рассказать про прерывания по таймеру и обработку этих событий. (По переполнению и т.д.) И как считать флаг прерывания таймера т.е. почему сработало прерывание ? как это реализовать именно с библиотекой HAL
@narodstream5527 жыл бұрын
С этим мне самому еще предстоит разобраться, а времени нет.
@ЕвгенийЮрьев-р2ь7 жыл бұрын
Согласен! За это Вам еще раз большое спасибо, что экономите наше своими уроками. Единственная просьба, больше комментариев по ходу действий, про все что вы делаете. Сейчас смотрю Ваши видео про i2c и вы там делали задержку, выбирали тип переменных _IO uint32_t по моему .. Комментируйте, почему именно такую переменную и т.д. даже если у вас это где то есть в уроках, но это же время много не займет или хоть где посмотреть. Когда выставляете флаги какие то и т.д. будет намного интересней
@ТОВБУДКОМПЛЕКТЛТДпромисловаавт8 жыл бұрын
Спасибо большое за Ваш труд. Очень хорошие уроки. На 13.27 Вы Counter Period тоже уменьшаете на 1, я не нашел подтверждения в руководстве по этому поводу. Если не затруднит - подскажите куда смотреть. Спасибо.
@narodstream5528 жыл бұрын
Спасибо за оценку моего труда! Я рад, что Вам нравится. Я тоже не видел нигде. Где-то в подобном моим уроке видел, оттуда и позавидовал. В документации конечно ничего нет. Но автор объяснял, что считаем мы от нуля, поэтому так и пишем. А в других местах видел ровные числа, так что придется как-то определять опытным путём.
@ТОВБУДКОМПЛЕКТЛТДпромисловаавт8 жыл бұрын
Опытный путь показал, что позавидовали Вы правильно, уменьшать на 1 нужно. Пока игрался, Counter Period поставил 0, ожидая, что он будет равен 1 периоду, но таймер сбрасываться перестал. Потом дочитал: The counter is blocked while the auto-reload value is null. Может кому пригодится.
@narodstream5528 жыл бұрын
Спасибо!
@jrkmdv7 жыл бұрын
Таймер - ето счетчик-делитель. А как делить на 0? По етому загружают всегда N-1. В документации ето есть.
@nurali30665 жыл бұрын
external по другому никак? не подключается main.h конфликтует с исходным, если пишешь исходным main.c не работает как можно избавится от этих проблем. заранее спосибо @narodstream
@yakovdruker62276 жыл бұрын
Вопрос. Почему мы объявляем переменную tim6_counter в файле main.h, а не в main.c?
@narodstream5526 жыл бұрын
Конституция позволяет (шютка). Давно уже так не делаем, это ранние уроки, можете объявлять где хотите, только тогда во внешние файлы будете подключать через extern, а если в main.h и затем его подключите, то уже extren не нужен. Вам выбирать.
@ДенисМинистерский3 жыл бұрын
НОВЫЙ ПРОЭКТ В КУБЕ СДЕЛАТЬ НЕ ПОЛУЧАЕТСЯ, НЕТ ФАЙЛА С ТАКИМ РАСШИРЕНИЕМ ГДЕ ИДЕТ КОРРЕКТИРОВКА
@Jeriomas5 жыл бұрын
Интересно было-бы разобрать протокол DMX512 на таимерах, в hal.
@Vivavatnik6 жыл бұрын
спасибо
@markblond53608 жыл бұрын
Володя подскажите пожалуйста, как 3 светодиоды отключить через разное время? Наведите на правильную дорогу))))
@sanaripkg4688 жыл бұрын
Спасибо за за урок! Хотел спросить при вторичном конфигурировани и генерировании на КУБЕ меин сбрасывается на начальное состояние. Полностью повторил ваш метод с файломи. КУБ 4.15.0 кеил 5. Может где то в настройках мне смотреть?
@narodstream5528 жыл бұрын
Вам также спасибо за просмотры! и за оценку! Просто надо писать между комментариями //begin и //end различного уровня. и тогда пользовательский код в этом месте никуда не денется
@markblond53608 жыл бұрын
Володя, а как сделать если при нажатии на кнопку, один светодиод должен гореть, второй отключится через 500мс, 3 через 1000 мс, а 4 через 10000 мс? Необходимо задействовать еще пару таймеров?
@aligatorpe5 жыл бұрын
через флаги вроде как
@egorkomogortsev37008 жыл бұрын
доброго времени суток, подскажите пожалуйста мне нужно отмерять миллисекунды, причём разные интервалы как я могу это реализовать? как мне считать значения регистра счётчика и как его обнулить?
@narodstream5528 жыл бұрын
Счётчик никакой обнулять не надо. Объявите переменную 32-битную и в ней считайте, инкрементируя её по каким-либо событиям. А по каким - решать Вам. Можно использовать любой таймер, можно использовать переменную uwTick, в которой хранится время с момента включения контроллера. Только не забывайте, что через 49 суток с небольшим она обнулится.
@Дмитрий-х2я4й7 жыл бұрын
Добрый день Вы собираетесь сделать уроки по stm8 микроконтроллерам? Очень мало инфы, не знаю с чего начинать изучение этого камня(((
@narodstream5527 жыл бұрын
К сожалению, на данные типы контроллеров пока проекты не разворачивал и не планировал.
@НиколайПолтавский-ч9л8 жыл бұрын
Сделал все, как в уроке, но почему то программа заходит в обработчик прерывания только 1 раз после запуска.
@narodstream5528 жыл бұрын
Странно. Как будто флаги какие-то не сбрасываются. Скачайте проект и соберите и прошейте его. Проект полностью в архиве по ссылке в описании к данному видео.
@mr_hexus8 жыл бұрын
Counter Period надо ненулевой ставить. Считает от 0 до его значения.
@IliveInAlmaty3 жыл бұрын
Кто из 2021 Не забудтье закоментировать HAL_TIM_Base_Start. А то не запускается
@87Spectr7 жыл бұрын
Добрый день! Спасибо за уроки! Что-то не получается скопировать проект вместе с рукописным кодом. Всё делаю по шагам. Видео пересмотрел несколько раз. Всё правильно делаю. На данный момент занимаюсь уроками UART. Дома. До этого на работе учился - и всё получалось. Может в настройках где нужно что исправить?
@narodstream5527 жыл бұрын
Здравствуйте! И Вам спасибо за интерес к ресурсу! На сайте, куда приведёт ссылка в описании к видео, внизу странице прикреплён файл с проектом в архиве готовый. Воспользуйтесь сначала им, может разберётесь.
@87Spectr7 жыл бұрын
я разобрался!=) оказалось, что нельзя трогать комментарии, которые сформировал cube. при генерации, видимо ищет их чтобы впихнуть код юзера в нужное место и не находит...
@Jensiru8 жыл бұрын
Урок супер, ещё бы хотелось чтобы вы выкладывали файлы уроков на файлообменник или яндек-гугл диск. Т.к. код будет постепенно расширяться и если вдруг хотелось бы поэкспериментировать начинающему, то писать всё с самого первого урока должно и ни к чему. Интересно как решить такую задачу: Нажал на кнопку и отпустил при этом загорелись светодиоды и остались в таком положении. Ещё раз нажал и отпустил - все светодиоды погасли. Как делается такое запоминание или как это называется?
@narodstream5528 жыл бұрын
+Сергей Аксенов Отличное предложение! Я в принципе в рубрике по MK AVR так и делаю, правда не на файлообменник, а на страничку. Я и планировал делать и здесь также. Но т.к. пока основного кода пока мало, в основном больше автогенерации, то пока не начал, но вскоре я думаю пора, только конечно отдельные файлы, не весь проект.
@Jensiru8 жыл бұрын
narod stream ну не знаю, я бы кидал весь проект, так проще новичкам. К тому же, это вам нужно будет запоминать что и где делали и что кидать, а друг у кого не заработало.... А так всю папку на диск и никаких проблем. Ждёмс ещё уроков:)
@narodstream5528 жыл бұрын
Сергей Аксенов Я думаю, что если кидать весь проект, то не будет смысла смотреть видео. Ленивые будут просто использовать готовый проект. Смысл видео не дать код, а научить человека мыслить правильно в алгоритмическом смысле. Но тем не менее над данным предложением я подумаю.
@Jensiru8 жыл бұрын
narod stream быть может вы и правы, в любом случае спасибо за уроки, они реально помогают изучать МК!
@narodstream5528 жыл бұрын
+Сергей Аксенов Спасибо Вам за оценку моего труда! Надеюсь, что в долгу не останусь. Буду стараться делать более качественные и интересные занятия.
@ЮрийМаланчук-е4к5 жыл бұрын
прошу помощи) пишу этот урок в CubeIDE, ошибка выбивает 'tim6_counter' undeclared (first use in this function) в чем может быть проблема? спасибо)
@aligatorpe5 жыл бұрын
не объявлена переменная
@ЮрийМаланчук-е4к5 жыл бұрын
Poul Egorov спасибо)
@Yushik793 жыл бұрын
Здравствуйте может кто нибудь сталкивался у меня стоит новая версия Кеил 5.35.0.0 и Куб_МХ 6.3.0 если в Кеил оставить включённым компилятор версии 6 и выше то вылезает ошибка ArmClang: error: unable to execute command: Unable to convert command-line to UTF-16: Символ Юникода не имеет сопоставления в конечной многобайтовой кодовой странице. (0x459). При чём в коде и библиотеках (там где он подчеркивает) явных проблем в коде нет, переключение в настройках кодовых страниц не помогает. Если переключить на 5 версию компилятора тогда всё компилится без ошибок и работает. Может кто сталкивался с данной проблемой.
@ELEKTRIK16 жыл бұрын
Здравствуйте.У меня,что-то не так. Зелёный не мигает,а при нажатии кнопки всё идёт как положено. Подскажите в чём возможная причина :)
@narodstream5526 жыл бұрын
проект смотреть надо
@sergeyknyazev18472 жыл бұрын
Как получилось пол секунды, хз???
@hks02068 жыл бұрын
после того как переделал проект при компиляции keil выдает ошибку, в чем может быть причина?
@narodstream5528 жыл бұрын
Смотреть надо. Заархивируйте его, бросьте куда-нибудть в GoogleDisc, например, а ссылочкой в меня киньтесь, можете в личку в контакт или сюда, не важно, посмотрим.
@СергейМолочников-ы1ъ3 жыл бұрын
Спрашивают что не спиться. Пью таблетки вот и не спится
@nikolaiuser31906 жыл бұрын
Вместо того чтобы копировать папку проекта и ковыряться в ее содержимом, не проще ли просто открывать старый проект CUBEом и пересохранить с новым именем ;) ? Легких путей не ищем.
@narodstream5526 жыл бұрын
Есть и такой вариант. Но мы переносим вместе с исходным кодом. Времени на это уходит приблизительно от 7 до 15 секунд, я считал. Также мы в папке можем удалить ненужные модули. Вы, видимо предлагаете как-то в другую папку потом файлы с исходными кодами переносить. Мне кажется, это будет в разы дольше. Я доношу такие мысли, которые есть у меня. В этом суть занятий. Я этими мыслями с вами делюсь. И спасибо огромное за то, что вы тоже делитесь со мной своими мнениями!
@seppneimusser57235 жыл бұрын
Timer\Timer.axf: Error: L6200E: Symbol tim6_counter multiply defined (by stm32f4xx_hal_msp.o and main.o). What does it mean? tim6_counter; in main.h tim6_counter = 0; in main.c extern tim6_counter; in stm32f4xx_it.h I understand russian and germany you could describe the problem in russia, english or in german^^ Please help, I'm sitting since 4h on this problem...!!! Complette information: *** Using Compiler 'V5.06 update 6 (build 750)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin' Build target 'Timer' linking... Timer\Timer.axf: Error: L6200E: Symbol tim6_counter multiply defined (by stm32f4xx_hal_msp.o and main.o). Not enough information to list image symbols. Not enough information to list load addresses in the image map. Finished: 2 information, 0 warning and 1 error messages. "Timer\Timer.axf" - 1 Error(s), 0 Warning(s). Target not created. Build Time Elapsed: 00:00:00
@seppneimusser57235 жыл бұрын
I found the solution on your webpage: А также сыпало ошибки в других файлах, … Error: L6200E: Symbol tim6_counter multiply defined … решение - в файле main.h делаем extern uint8_t tim6_counter; , а в файле stm32f4xx_it.c - просто uint8_t tim6_counter;
@Nicolae984 жыл бұрын
@@seppneimusser5723 спасибо большое !
@aerotachka7 жыл бұрын
А не проще новый проект из старого делать с помощью "Save as" в кубе? А старый рукописный код переносить копипастом из main.c
@narodstream5527 жыл бұрын
Кому как. Я показываю как надёжно и быстрее и как делаю я. Этот способ помогает особенно когда у Вас будет очень много кастомных библиотек. А как кому поступить - его выбор. У меня на это уходит менее полминуты. Я думаю - время невелико.
@aerotachka7 жыл бұрын
Я еще не дошел до кучи кастомных библиотек. Со временем определюсь что удобней. За уроки спасибо. Лучшая подача материала из существующих по stm.
@JONSIMable7 жыл бұрын
Не пойму где скачать hal_user_manual для stm32f103с8е6 подскажите кому не сложно (на сайте ST не нашёл)
@aligatorpe5 жыл бұрын
нужно просто для stm32f103, для этой серии один мануал как я понял
@МаксПро-у3э6 жыл бұрын
Какая же муть эти 32. Просто ужас. А так спасибо большое за уроки. У меня вопрос. В процессе выполнения программы мне нужно изменять инициализацию таймера. Как это сделать если он инициализируется через функцию.
@ДимаПигарь-б4и8 жыл бұрын
как правильно сделать задержку на этом таймере?
@narodstream5528 жыл бұрын
Вообще вряд ли это можно назвать задержкой. Это будет возможность запустить определённую процедуру по истечении определённого времени, причем возможность исполняться останется у основного кода в цикле. А это уже не задержка. И нет такого понятия правильно или неправильно, каждый сочиняет для себя, как ему удобно. Например можно создать переменную целочисленную, инициализировать её каким-то значением и обработчике окончания счёта таймера, убавлять её на 1. А в цикле основного кода создать условие, в котором проверять данную переменную, не достигла ли она нуля. Если достигла, то выполнить условие, которое должно выполниться по окончании счёта. Это один из способов использования таймеров. А можно придумать кучи таких способов.
@ДимаПигарь-б4и8 жыл бұрын
спасибо, я вас понял
@narodstream5525 жыл бұрын
Комментарий с капсом удалён.
@AmirTMR2 жыл бұрын
Вопрос к знатокам: в литературе по STM32, для обработки прерывания используется функция обратного вызова, а в этом уроке функция для обработки прерывания добавляется непосредственно в TIM6_DAC_IRQHandler(void). Как сделать правильно?
@traveladventure4272 жыл бұрын
Включать биты в регистрах не так и сложно.
@retro55i5 жыл бұрын
Зачем писать код прямо в обработчике прерывания от таймера, когда есть специальная callback функция и не одна. эта функция уже написана с модификатором weak , надо написать точно такую же только без этого модификатора. Прежде чем вызвать эту функцию hal делает кучу проверок.
@narodstream5525 жыл бұрын
Да этому видео уже несколько лет, давно мы уже так не делаем. Здесь показано, что такой обработчик есть и писать тут можно. Понятно, что есть функции обратного вызова, которые из кейсов проверок флагов вызываются.
@СергейМолочников-ы1ъ3 жыл бұрын
Думал по другому что то вот...
@andreyparovozz7 жыл бұрын
А хоть один из таймеров умеет обсчитывать инкрементальный энкодер?
@narodstream5527 жыл бұрын
Смотрите дальше - думаю сами разберётесь. Если найдёте что-то лучше, то обязательно напишите.
@koliakrasnoff6 жыл бұрын
Шикарное видео, но для новичков сложновато. Попроще бы на первый раз. Подали с USB единичку - зажгли светодиод. Подали нолик - погасили.
@ИгорьЗагребалов4 жыл бұрын
эти "хитрости"- в них ты сам путаешся, просто новый проект создать, поучить других
@sergeyknyazev18472 жыл бұрын
Что то жесть какая то, ничего не понимаю, голова кругом. Почему обработчик прерывания таймера нужно писать в отдельном файле с хз каким названием? Нельзя затереть коменты куба, иначе при добавлении переферии все потрется. Мы написали кода три строчки, а в результате портянка на 100500 файлов. Мигалку можно написать, а если что то серьезное, допустим протокол, с задействованием трех обработчиков от таймеров, на следующий день не разберешься в своей же писанине и как это все отлаживать? Да после atmel studio это какой то ужас. Может есть более простая IDE ? Я уже хочу отказаться от куба и писать инициализацию переферии руками !!!
@МаксПро-у3э6 жыл бұрын
А нет не муть. Извините. Просто обьясняет так
@narodstream5526 жыл бұрын
Объясняю так, как мог на тот момент.
@МаксПро-у3э6 жыл бұрын
Да не обижайтесь)))))
@segamegadr4 жыл бұрын
Уснуть можно
@stepel222 күн бұрын
заработало только после вставки __HAL_TIM_ENABLE_IT(&htim, TIM_IT_UPDATE);
@startman1966 Жыл бұрын
Это не уроки. Это какой-то монолог. Ты объясни товарищ, с кем ты вообще общаешься. Ты хочешь что бы люди тупо нажимал за тобой кнопки не понимая что они делают. Ты может быть и силен в чем то, но как учитель извини ты нулевой.