STM32. CMSIS. Урок#02: Дискретный вход. Внешние прерывания EXTI.

  Переглядів 3,596

Олег Волков

Олег Волков

День тому

Привет друзья! Вот уже 2 года, как я изучаю STM32.
Самое время, после опыта работы с библиотекой HAL, когда мы уже более менее ознакомились с периферией микроконтроллера, начать осваивать его на низкоуровневой библиотеке CMSIS.
На третьем занятии мы поработаем с дискретными входами, разберемся с регистром IDR, а еще научимся работать с внешними прерываниями EXTI.
00:00 Введение
01:20 Предварительные настройки МК
01:33 Пример настроек GPIO на вход
06:33 Регистр IDR
09:58 Внешние прерывания EXTI(инициализация)
18:39 Включаем прерывания. Прописываем Handler функции.
20:12 Тестируем прерывания на кнопках с триггером Шмитта
22:20 Выводы
Материалы из урока: github.com/Solderingironspb/S...
Мои заметки по CMSIS: github.com/Solderingironspb/S...
Группа вконтакте: solderingiron.stm32
Настройки для VisualGDB: solderingiron.stm32?w=...
ЯндексДзен: zen.yandex.ru/id/622208eed2eb...

КОМЕНТАРІ: 30
@statstopfinish
@statstopfinish Рік тому
Спасибо за уроки . Очень хорошо что вы так подробно и доступно раскрываете тему CMSIS.
@kavehramezani2071
@kavehramezani2071 Рік тому
I don't understand even one word of what you are talking abou, but I love watching your videos and I learn a little bit of them
@Solderingironspb
@Solderingironspb Рік тому
it should be easier for an English-speaking person to understand these topics, because all documentation in English)
@user-gx7yd6jd9g
@user-gx7yd6jd9g 4 місяці тому
Хорошие ролики. Вот если бы вы сделали бы курс обучения дебагу, то вообще бы цены бы не было. Практически нигде нет такого, приходится собирать по кускам. Причем не просто вот смотрите, хоп, включил и все прлучилось, а именно курс обучения, с живым кодом и поиском там проблем. По моему непаханная поляна. Взять куб, потом кайл, потом сеггер ембедед. Фриртос вообще отдельная тема. Я сейчас накрутил в учебных целях сущностей, так они все вместе работать не хотял, а по отдельности работают.😂
@FJHCJCJCJHCHFHFJJFJCFJ
@FJHCJCJCJHCHFHFJJFJCFJ Рік тому
🤘
@nurbolatamanbayev9617
@nurbolatamanbayev9617 Рік тому
👍👍
@AlexRootx
@AlexRootx Рік тому
Молодец, Олег!!! Продолжай уроки по CMSIS, так глядишь, и до Н-моста дойдем, чтобы сделать чистый синус) Статейки в нете на эту тему есть, кстати!
@micromaster4405
@micromaster4405 Рік тому
А потом можно и к трехфазным вещам подойти)
@Solderingironspb
@Solderingironspb Рік тому
Я их боюсь🫣 там столько защит нужно продумывать…
@micromaster4405
@micromaster4405 Рік тому
@@Solderingironspb думаю если вы этим займетесь, это будет очень хороший контент для ваших подписчиков и зрителей)
@Solderingironspb
@Solderingironspb Рік тому
У меня пока очень много тем не снято, как гальваническая развязка, дискретный вход до 30В, дискретный выход с развязкой, драйвер для шим сигнала, обратный диод в индуктивных нагрузках и прочее) до трехфазных штук еще топать и топать)
@OpenFrimeTVcom
@OpenFrimeTVcom Рік тому
не знаю будет ли ролик про АЦП, но если будет то сделайте обработку двух каналов, а не одного. Про один у всех есть, а как два запустить приходиться долго искать. В авр к примеру все просто, сработало прерывание по завершению преобразования ацп, зашли туда, считали данные, перестроили на другой канал и все. Спасибо)
@serggorod1423
@serggorod1423 Рік тому
Dma тоже в масив int[4] с подсчётом среднего бегущего, или хотя бы 2х последних из каждого АЦП. И вопросик про количество два каналов для АЦП.... Можно ли дип в 2 независимых потока писат в 2[4]?
@OpenFrimeTVcom
@OpenFrimeTVcom Рік тому
@@serggorod1423 та дма то потом, нужно постепенно ж идти, а то не поймем. много информации разово тоже плохо, мало запомниться)
@Solderingironspb
@Solderingironspb Рік тому
Ацп по-любому буду сразу в несколько каналов рассматривать) дма тоже подключить надо будет. Разберемся)
@oksanasavenko554
@oksanasavenko554 3 місяці тому
В целом впечатление положительное, но ти ли из-за невнимательности, то ли уровня владения английским, иногда получаются фальшконцепции, как например с регистром EXTI_IMR, который отвечает не за включение прерывания, как было сказано, а за тип прерывания (maskable or non maskable). Т.ч. всем учащимся советую внимательно перепроверять назначения всех регистров по мануалам.
@user-ws8lx5ji8z
@user-ws8lx5ji8z 11 місяців тому
Олег, а это нормально что в регистре GPIOx_IDR некоторые биты в 0, другие в 1? Хотя я их не пулапил и не пушдаунил. Чуть дальше посмотрел и услышал ответ на мой вопрос) Помехи ловят не подтянутые никуда пины.
@Solderingironspb
@Solderingironspb 11 місяців тому
Угусь) подтяжка обязательна
@WOODIX
@WOODIX Рік тому
А урок по внешнему прерыванию на HAL будет?, спасибо
@Solderingironspb
@Solderingironspb Рік тому
ukposts.info/have/v-deo/soJ_paSfmY57zas.html
@WOODIX
@WOODIX Рік тому
@@Solderingironspb Да, спасибо,уже нашёл и посмотрел, то что нужно, отличные уроки
@user-ws8lx5ji8z
@user-ws8lx5ji8z 11 місяців тому
Чудеса творятся, переменные которые типа bool в Live Watch находятся по одному и тому же адресу. И по нажатию одной из кнопок (кнопки на разных пинах порта А) меняются значения сразу в обоих переменных, на вторую кнопку реакции нет. В регистре IDR всё происходит как задумано. Если вместо bool использовать int, то все работает как у вас на видео. А если uint8_t то тоже самое что и с bool. В cube idе всё нормально. Что же делать.... Написал код чтоб от каждой кнопки зажигался свой светодиод. Работает как положено. Но опять таки Live Watch врет что от одной кнопки сбрасываются в ноль сразу две переменные. Может что-то в настройка надо менять?(
@user-ep4ms6zb9l
@user-ep4ms6zb9l 5 місяців тому
Та же байда. В чем причина - не могу понять. int, uint16_t и uint32_t отображается нормально, а при bool и uint8_t отображаются под одним адресом. Думаю причина в VS, т.к. камень живой и работает нормально. У меня VS 2019 версия 16.11.32 + VisualGDB 5.6R9 (build 4777)
@ShashHryundel
@ShashHryundel Рік тому
А если до STM32 сидел на ATmega и исключительно на ассемблере, тогда стоит, всё же начинать изучение STM32 с CMSIS? Просто для меня высокий уровень абстракции, это запутка мозга.
@Solderingironspb
@Solderingironspb Рік тому
Можете и с cmsis. По документации, как оказалось, легче работать, чем с абстракцией
@ShashHryundel
@ShashHryundel Рік тому
@@Solderingironspb Абстракция бывает разной. Особенно „радует“ когда говорят : скачайте библиотеку и будет вам счастье. А библиотека-то самописная и сам чёрт ногу сломит, чем автор библиотеки руководствовался. Захочешь таймер использовать, а ннннет - он уже занят, но об этом нигде в библиотеке-то и не указано. Так что я за cmsis. В документации разобраться не сложно. А библиотек и высокого уровня абстракций бесконечное множество. Каждый раз нужно сначала изучить библиотеку, а уж потом пользоваться
@user-qc7ib5fj9n
@user-qc7ib5fj9n Рік тому
Событие (event) это прерывание без вектора .Прочитав регистр вы поймете что что то произошло.
@Solderingironspb
@Solderingironspb Рік тому
Ну да, но… для чего его использовать? Где это может пригодиться?
@ciklomat
@ciklomat Рік тому
@@Solderingironspb Когда в прерываии идет важная обработка с точными временными действиями ,то заходить в дополнительное прерывание нарушит точность выполнения первого. А так просто опросил в цикле бит и знаешь про событие.
@Solderingironspb
@Solderingironspb Рік тому
Понял) спасибо))
Повістки у Києві: «Яке право вони мають забирати всіх мужиків?» #війна #мобілізація #військові
00:41
Слідство.Інфо | Розслідування, репортажі, викриття
Переглядів 1,5 млн
Помилка,  яку зробило військове керівництво 🙄
01:00
Радіо Байрактар
Переглядів 343 тис.
ДРУГА РЕПЕТИЦІЯ alyona alyona та Jerry Heil на сцені Євробачення-2024
00:34
Євробачення Україна | Eurovision Ukraine official
Переглядів 133 тис.
STM32. CMSIS. Урок#04: Настройка: ADC + DMA. Прерывания.
36:16
Олег Волков
Переглядів 4,1 тис.
STM32. Контроллер прерываний
22:01
ФРТК МФТИ
Переглядів 9 тис.
Нужен ли робот пылесос?
0:54
Катя и Лайфхаки
Переглядів 858 тис.
Result of the portable iPhone electrical machine #hacks
1:01
KevKevKiwi
Переглядів 7 млн
МОЙ ПЕРВЫЙ ТЕЛЕФОН - Sony Erricson T280i
18:02
ЗЕ МАККЕРС
Переглядів 66 тис.