STM32. Работа с дискретными входами, работа с регистрами. Примеры. Переходим с Arduino на STM32.

  Рет қаралды 15,448

Олег Волков

Олег Волков

Күн бұрын

Привет друзья! Решил выпустить небольшую серию видеоуроков о переходе с платформы Arduino на STM32. Скажу сразу - я не профессионал. Я так же учусь. Надеюсь мои разборы хоть кому-то будут полезны :) Данный курс нацелен больше на новичков. Тех, кто только-только начинают осваивать 32-битные МК от STMicroelectronics. Если есть чего предложить, показать - милости просим к нам в команду.
Видео содержит примеры кода с arduino и переделкой их под STM32. Использую для конфигурации CubeMX и библиотеку HAL. Пишу в Atollic TrueSTUDIO for STM32 9.3.0
Заходи в нашу группу ВК solderingiron.stm32
ЯндексДзен: zen.yandex.ru/id/622208eed2eb...
Инвертирущий триггер Шмитта 74HC14N www.chipdip.ru/product/74hc14n
Инвертирущий триггер Шмитта 74HC14D www.chipdip.ru/product/74hc14d
00:00 Введение
00:23 Схема аппаратного подавления дребезга контактов
00:32 Сигнал с кнопок без обработки
00:38 Сигнал с кнопок после RC фильтра
00:45 Финальный, обработанный сигнал, который направляется в МК
00:50 Урок 2. Создание отдельного имени типа void Blink()
01:59 Создание дополнительных входов/выходов в Stm32 CubeMX
04:30 Аналог функции digitalRead. Он же HAL_GPIO_ReadPin(GPIOx, x_Pin)
07:13 Дискретный выход(LOW) Упрощаем конструкцию(регистры)
09:38 Избавляемся от HAL_GPIO_ReadPin (регистры)
11:25 Пишем программу (триггер защелка) для двух входов и двух выходов

Пікірлер: 29
@szapsis
@szapsis Жыл бұрын
Спасибо большое тебе за твой труд друг!!!
@semmamoshin5715
@semmamoshin5715 3 жыл бұрын
...или как сделать читаемый код нечитаемым
@kloker2
@kloker2 3 жыл бұрын
ве ок, только к PC14 PC15 еще и часовой кварц припаян, на задачах с большими частотами может вносить искажения.
@Solderingironspb
@Solderingironspb 3 жыл бұрын
Возможно) ну...портов свободных полно) + можно и без кварца плату развести, в 80% задач, привязка к реальному времени не нужна.
@kloker2
@kloker2 3 жыл бұрын
@@Solderingironspb я по борду BluePill, на которой он распаян, а так да, если RTC не используется, то его и не разводят/ не ставят.
@user-gp2fg3zb1m
@user-gp2fg3zb1m Жыл бұрын
непонятно взаимосвязь логики пинов мк в коде
@user-is8wc7iy6x
@user-is8wc7iy6x 2 жыл бұрын
Добрый день! А код из этого видео нигде не выложен?
@Solderingironspb
@Solderingironspb 2 жыл бұрын
Добрый день! Исходники уроков начались прилагаться с урока#4. Мой GitHub: github.com/Solderingironspb/Lessons-Stm32/blob/master/README.md
@Funkbass1986
@Funkbass1986 Жыл бұрын
Абсолютно не понимаю, зачем тащить потроха библиотечной функции наружу. Антидребезг я вообще программно делаю на 328. Диспетчер опращивает кнопку каждые 50мс, если через 50мс состояние кнопки подтверждается, значит оно учитывается, если нет - то нет. За эти 50мс можно еще много чего сделать. Задача опроса кнопки сама себя добавляет в очередь диспетчера и устанавливает время до выполнения на 50мс.
@kastoralex
@kastoralex Жыл бұрын
Спасибо за уроки, но для чего короче код писать в обучающем виде, без объяснения что вообще все эти стрелки делают? Не телеграмму же пишем, символы не по рублю стоят, можно и развёрнуто, чтобы код был понятен для любого. Ещё раз спасибо за видео.
@user-ms3id7jv7v
@user-ms3id7jv7v 7 ай бұрын
Я думаю подразумевается что ты уже умеешь работать с ардуиной и что такой битовые операции знаешь, например у гайвера на сайте есть статьи
@user-jj5km1cu2n
@user-jj5km1cu2n 2 жыл бұрын
а у меня почему то светодиод светит всегда, а при нажатии горит ярче
@Solderingironspb
@Solderingironspb 2 жыл бұрын
Значит сделали что-то не так
@dainiusjaraminas6412
@dainiusjaraminas6412 Жыл бұрын
na Pinout&Configuration /System Core/GPIO >>>zdelaj RED i GREEN na "pull-down" a vse BUTTON na"pull-up" , budet stabilneje
@user-wp3zs9tj7r
@user-wp3zs9tj7r 4 жыл бұрын
Аргумент что с HAL слишком много писанины ну вообще ни как не тянет.CTRL+SPACE. Так и скажите что хотите быть трухаксер, а хал для нубов ;) Второе видео с использованием, а Вы так и не объяснили,что именно делает BSRR и BRR.
@Solderingironspb
@Solderingironspb 4 жыл бұрын
Если Вы посмотрите следующие видео, то увидите, что с регистрами я работаю только с дискретными входами/выходами. И да, я пользуюсь регистрами, потому что меньше писанины и код работает быстрее(проверял логическим анализатором). Если Вы хотите полностью писать на регистрах, с большим углублением в референс мануал и даташит, то мои уроки не для Вас)
@user-co6pf3iy3z
@user-co6pf3iy3z 4 жыл бұрын
А причем здесь вообще "трухаксер" вообще? Отройте RM0008 Reference manual, да почитайте для чего они (см.стр.173). Все в открытом доступе же. Port bit set/reset register (GPIOx_BSRR) (x=A..G).
@Solderingironspb
@Solderingironspb 4 жыл бұрын
Да, но, чтоб было понятней: В Stm32 возможно атомарно управлять отдельными битами порта с помощью регистров GPIOx_BSRR (Port Bit Set/Reset Register) и GPIOx_BRR (Port Bit Reset Register). Для установки отдельного бита порта вручную, надо считать значение порта, изменить нужный бит с помощью маски и результат вернуть обратно в GPIOx_ODR. Так как действий целых три, то возникшее между ними прерывание, может подпортить данные. При помощи GPIOx_BSRR, это делается в одно действие. Для сброса бита следует в нулевой бит GPIOx_BRR записать единичку, при этом в нулевой бит GPIOx_ODR запишется 0. Для этой операции выделены младшие 16 бит, старшие 16 бит не используются.
@user-yf8xo1ip9d
@user-yf8xo1ip9d 3 жыл бұрын
Извиняюсь, конечно, но на экране кода не видно. Все мелко и расплывчато. В чем дело? P.S. Потом стало видно, но я уже раздражен ((
@Solderingironspb
@Solderingironspb 3 жыл бұрын
Вы точно в 1080p смотрите?))
@user-yf8xo1ip9d
@user-yf8xo1ip9d 3 жыл бұрын
@@Solderingironspb Не подкалывайте. Лучше поработайте над качеством.
@Solderingironspb
@Solderingironspb 3 жыл бұрын
Таймкод, пожалуйста, скиньте. Где у Вас там расплывается все.
@user-yf8xo1ip9d
@user-yf8xo1ip9d 3 жыл бұрын
@@Solderingironspb 1:16
@user-yf8xo1ip9d
@user-yf8xo1ip9d 3 жыл бұрын
Изменил разрешение. Теперь норм.
@arct_last
@arct_last Жыл бұрын
Код не читабелен и излишен: if((GPIOC->IDR && BUTTON1_Pin) && !flag_block1) { flag_block1 = 1; flag_set1 = !flag_set1; if(flag_set1){ GPIOA->BSRR = RED_Pin; } else if(!flag_set1){ GPIOA->BSRR =RED_Pin; } } else if(!(GPIOC->IDR && BUTTON1_Pin) && flag_block1){ flag_block1 = 0; } //***************** OR **************************// if(GPIOC->IDR && BUTTON1_Pin) { if(Flag1) GPIOA->BSRR = RED_Pin; else GPIOA->BRR = RED_Pin; Flag1 = !Flag1; } Можно еще упростить... Но мне лень...
@Solderingironspb
@Solderingironspb Жыл бұрын
ну и нахрена тогда ты это пишешь?)
@arct_last
@arct_last Жыл бұрын
@@Solderingironspb, во первых не ты, а вы. Во вторых, не нахрена, а зачем. И в третьих что бы начинающие не повторяли ваш код, так как данный код очень далёк от совершенства.
@Solderingironspb
@Solderingironspb Жыл бұрын
@@arct_last Но....всем будет вообще пофигу на то, что Вам что-то там писать лень) Вы либо пишите по делу, либо не пишите вовсе)
@arct_last
@arct_last Жыл бұрын
​@@Solderingironspb Если всем пофигу, то и вам должно быть :) А мне просто лень... Да видео которые вышли позже стали более качественными, спасибо некоторые вещи почерпнул для себя.
Пранк пошел не по плану…🥲
00:59
Саша Квашеная
Рет қаралды 7 МЛН
Я не голоден
01:00
К-Media
Рет қаралды 9 МЛН
Тензодатчик
3:47
NTP Centr
Рет қаралды 26 М.
STM32. Библия программиста
32:32
NR.electronics
Рет қаралды 59 М.
Изучаю STM32!
20:26
Лёша Кластер
Рет қаралды 191 М.
STM32: PWM шаг за шагом на STM32CubeIDE
10:51
G1Tech
Рет қаралды 27 М.
Частая ошибка геймеров? 😐 Dareu A710X
1:00
Вэйми
Рет қаралды 5 МЛН
Bluetooth connected successfully 💯💯
0:16
Blue ice Comedy
Рет қаралды 2,2 МЛН
Samsung laughing on iPhone #techbyakram
0:12
Tech by Akram
Рет қаралды 7 МЛН
Rate This Smartphone Cooler Set-up ⭐
0:10
Shakeuptech
Рет қаралды 7 МЛН
iPhone 15 Pro в реальной жизни
24:07
HUDAKOV
Рет қаралды 506 М.