Михаил Копычев - все видео автора + новые выпуски
Новые видео из канала RuTube на сегодня - 10 October 2025 г.
Новые видео из канала RuTube на сегодня - 10 October 2025 г.
Инициализация проекта для STM32 МК, варианты источников тактирования, базовые регистры, сравнение с AVR, примеры, всё это - здесь. Проект из видео: https://disk.yandex.ru/d/P3VR2aAGu3h7Zg. Полезные и всякие ссылки: Файлы CMSIS: https://disk.yandex.ru/d/Eb3jUfG-mg1b1Q; Среда разработки STM32CubeIDE: https://www.st.com/en/development-tools/stm32cubeide.html; ST-Link Server для работы программатора: https://www.st.com/en/development-tools/st-link-server.html; STM32F401xC datasheet (распределение периферии по шинам, карта альтернативных функций выводов и прочее): https://www.st.com/resource/en/datasheet/stm32f401cc.pdf; STM32F401xC reference manual (регистры и всё, что с ними связано): https://www.st.com/resource/en/reference_manual/rm0368-stm32f401xbc-and-stm32f401xde-advanced-armbased-32bit-mcus-stmicroelectronics.pdf; Cortex-M4 MCU programming manual (функционал ЦПУ, в частности - SysTick): https://www.st.com/resource/en/programming_manual/pm0214-stm32-cortexm4-mcus-and-mpus-programming-manual-stmicroelectronics.pdf. Тайм-коды: 00:00 - Начало 00:06 - Структура МК и дерево тактирования 01:38 - Выбор источника тактирования, регистры RCC 02:11 - Регистр RCC_CR 04:35 - Регистр RCC_CFGR 06:47 - Эксперименты с HSE 07:23 - Альтернативная запись макросов 08:23 - Немножко кода 08:50 - ШИМ при частоте HSE 09:22 - Эксперименты с HSI 10:00 - ШИМ при частоте HSI 10:34 - Настраиваем PLL, регистр RCC_PLLCFGR 13:19 - Алгоритм настройки PLL 14:29 - Чтение flash, регистр FLASH_ACR 16:00 - Настройка PLL в коде, без регистрации 18:22 - Эксперименты с PLL 18:41 - ШИМ при частоте PLL 19:02 - Сравнение с AVR 20:03 - Делаем ШИМ 500 кГц на разных источниках 21:17 - Делаем ШИМ 100 кГц на AVRОсновные моменты дискретной математики, которые нам понадобятся для дальнейшего программирования, работа с файлами в CubeIDE, указатели и структуры данных. Проект из видео: https://disk.yandex.ru/d/xpUHeZUYPLXNpg. Полезные и всякие ссылки: Файлы CMSIS: https://disk.yandex.ru/d/Eb3jUfG-mg1b1Q; Среда разработки STM32CubeIDE: https://www.st.com/en/development-tools/stm32cubeide.html; ST-Link Server для работы программатора: https://www.st.com/en/development-tools/st-link-server.html; STM32F401xC datasheet (распределение периферии по шинам, карта альтернативных функций выводов и прочее): https://www.st.com/resource/en/datasheet/stm32f401cc.pdf; STM32F401xC reference manual (регистры и всё, что с ними связано): https://www.st.com/resource/en/reference_manual/rm0368-stm32f401xbc-and-stm32f401xde-advanced-armbased-32bit-mcus-stmicroelectronics.pdf; Cortex-M4 MCU programming manual (функционал ЦПУ, в частности - SysTick): https://www.st.com/resource/en/programming_manual/pm0214-stm32-cortexm4-mcus-and-mpus-programming-manual-stmicroelectronics.pdf. Тайм-коды: 00:00 - Представление 00:16 - Операции сдвига влево и сдвига вправо 01:12 - Операция ИЛИ (OR) 01:47 - Операция ИСКЛЮЧАЮЩЕЕ-ИЛИ (XOR) 02:27 - Операция И (AND) 02:58 - Операция НЕ (NOT) 03:14 - Применение дискретки на регистрах 04:05 - Битовые операции на живом STM32 06:06 - Составные части программы 06:12 - Комментарии 06:40 - Заголовочные и СИ-файлы 08:13 - Применение заголовков и СИ-файлов на живом STM32 13:13 - Директивы препроцессора 14:10 - Типы переменных для микроконтроллеров 15:39 - Глобальные перменные 16:54 - Ключевые слова и модификаторы переменных 18:30 - Применение модификаторов на живом STM32 20:44 - Понятие функции 21:46 - Понятие цикла 22:10 - Функция int main(void) 23:12 - Указатели 24:49 - Применение указателей 29:02 - Указатели на строки 30:22 - Понятие структуры 33:43 - Указатели на структуры 35:37 - Стрелочный оператор в указателях на структуры 37:17 - преимущества использования структурБазовые сведения про STM32 микроконтроллеры и объяснение основных принципов их программирования через CMSIS. Полезные и всякие ссылки: Файлы CMSIS, которые описаны в конце видоса: https://disk.yandex.ru/d/Eb3jUfG-mg1b1Q; Среда разработки STM32CubeIDE: https://www.st.com/en/development-tools/stm32cubeide.html; ST-Link Server для работы программатора: https://www.st.com/en/development-tools/st-link-server.html; STM32F401xC datasheet (распределение периферии по шинам, карта альтернативных функций выводов и прочее): https://www.st.com/resource/en/datasheet/stm32f401cc.pdf; STM32F401xC reference manual (регистры и всё, что с ними связано): https://www.st.com/resource/en/reference_manual/rm0368-stm32f401xbc-and-stm32f401xde-advanced-armbased-32bit-mcus-stmicroelectronics.pdf; Cortex-M4 MCU programming manual (функционал ЦПУ, в частности - SysTick): https://www.st.com/resource/en/programming_manual/pm0214-stm32-cortexm4-mcus-and-mpus-programming-manual-stmicroelectronics.pdf. Тайм-коды: 00:00 - Представление 00:22 - Применение микроконтроллеров 01:48 - Семейства микроконтроллеров 02:14 - Сравнение STM32 и AVR 05:16 - Классификация STM32 06:51 - Архитектура STM32F401xC 08:55 - Отладочная плата STM32 Black Pill 11:28 - Тактирование STM32F401xC 13:42 - Конфигурирование в CubeMX 15:03 - Чем прошивать STM32? 17:14 - В чём писать код под STM32? 18:42 - Описание CMSIS и HAL 20:37 - Применение CMSIS 23:46 - Программируем STM32 без регистрации 25:19 - Зависимости между файлами CMSISРазбираемся с преимуществами среды разработки (которая таковой не является) Visual Studio Code и системы контроля версий git в лице GitHub. VSCode - это незаменимый инструмент, если вы хотите программировать AVR микроконтроллеры, но у вас нет компьютера с Windows, а также если вы просто хотите использовать среду разработки, которая помогает вам лучше узнать про AVR-GCC и AVRDude, а также подталкивает вас писать код более грамотно (с разбивкой на файлы и вот это всё). Git - незаменимый инструмент, если вам необходимо писать код не в одиночку или вы просто хотите удобно пользоваться несколькими компьютерами для своего программирования. Тайм-коды: 00:00 Введение 00:05 Что есть Visual Studio Code? 01:20 Интерфейс VSCODE 06:06 Утилиты для программирования AVR 08:08 Компилятор AVR-GCC, прошивальщик AVRDude и репозитория Homebrew 09:46 Как пользоваться Homebrew (для macOS и Linux) 12:16 Опиши AVR-GCC и AVRDude 12:42 Расширения VSCODE - AVR Helper 14:22 Расширения VSCODE - Serial Monitor и C/C++ Extension Pack 15:25 Моя первая программа в VSCODE для AVR 20:30 Система контроля версий git и GitHub 22:30 Базовые команды git 25:35 Мой первый репозиторий в GitHub 28:19 Коммитим и пушим (commit and push) изменения в коде в GitHub 30:31 Подготовка к пулу (pull) изменений в коде из GitHub 32:40 Разбираемся с задачами (issues) и ветками (branches) 34:40 Слияние веток (merge) 36:05 Действия на локальном компе после слияния веток в GitHub 36:31 Немного про место git в процессе разработкиРазбираемся с такими сущностями в языке СИ, как указатели, структуры, а также разбиваем код на отдельные файлы, что позволит нам вывести наше программирование на новый уровень удобства и красоты. Тайм-коды: 00:00 Введение 00:09 Указатели в СИ 04:04 Пример применения указателей 10:25 Структуры в СИ, объявление структур 16:53 Указатели на структуры 19:42 Стрелочный оператор в указателях на структуры 21:28 Преимущества использования структур 22:55 Разбивка программы на файлы (.h и .c) 24:53 Пример дерева программы 25:29 Пример .h файла 27:21 Пример .c файла 30:21 Пример кода из VSCodeРассмотрим такой модуль внутри МК как таймер-счётчик. У него есть много особенностей, но нас будет интересовать в основном его способность к ШИМ-модуляции сигнала. ШИМ-модуляция - это способ кодирования аналогового сигнала с помощью дискретных импульсов постоянного периода, но переменного коэффициента заполнения. Тайм-коды: 00:00 Введение 00:27 Что такое таймер-счётчик? 02:40 Счётный регистр TCNT 03:27 Двухсоставные регистры -H и -L 04:13 Регистр сравнения OCR 05:30 Инвертированный быстрый ШИМ 07:11 Прямой быстрый ШИМ 11:19 Прямой ШИМ с ФК 13:13 Инвертированный ШИМ с ФК 14:43 Регистр(ы) настройки TCCR 15:32 Биты COM 16:51 Биты WGM 18:22 Биты CS 19:01 Повторим определение ШИМ-модуляции 20:55 Шаги для включения ШИМ на таймере 23:29 Моделируем ДПТ и светодиод в Proteus 24:26 Пишем код для ШИМа 30:04 Демонстрация работы ДПТ и светодиода IRLРазбираемся с системой прерываний в AVR на примере внешних прерываний. Источником сигнала внешнего прерывания в данном случае выступит кнопка. Рассмотрим регистры настройки внешних прерываний, функции-обработчики прерываний и примеры. Тайм-коды: 00:00 Введение 00:24 Определение прерываний 02:40 Источники сигнала прерываний 03:56 Базовые вектора (источники) прерываний 05:33 Определение кнопки 06:02 Условия для выполнения ISR 07:15 Регистр разрешения внешних прерываний 09:29 Настройка типа сигнала прерывания 13:11 Моделируем кнопку в Proteus 13:11 Пишем программу для прерывания 21:02 Демонстрация работы кода в реальной жизни 21:08 Демонстрация работы кнопки с LED матрицейВ этом видео разбираемся как работает механическая клавиатура, боремся с эффектом дребезга контактов, пишем алгоритм опроса клавиатуры и вывода цифр (и значков) на символьный жидкокристаллический дисплей. Делаем скромные попытки написать свой собственный калькулятор с одним математическим действием. Тайм-коды: 00:00 Введение 00:14 Что ты такое - кнопка? 03:16 Схема соединений кнопок клавиатуры 06:15 Регистр ввода-вывода PINx 07:58 Эффект дребезга контактов 09:21 Алгоритм опроса клавиатуры 11:38 Код опроса клавиатуры из 12 кнопок 14:38 Моделируем клавиатуру в Proteus 19:36 Демонстрация особенности опроса клавиатуры 20:05 Демонстрация работы клавиатуры IRL 20:16 Попытка написать калькулятор 26:08 Демонстрация работы кода калькулятораРазбираемся, что можно сделать с LCD экраном на плате со своим собственным микроконтроллером, подключённым к Atmega по параллельному порту. Посмотрим и разберём схему подключения, напишем функции для инициализации контроллера дисплея, посылки команды и ASCII кодов символов на дисплей. Немного бросим взгляд на работу с указателями, когда будем работать со строками. Тайм-коды: 00:00 Введение 00:06 Схема подключения 07:07 Функции для посылки команд и данных 11:25 Список команд контроллера дисплея 15:28 ASCII таблица 16:37 Функция инициализации "дисплея" 18:05 Выводим Hello, world! на экран 20:12 Моделируем экран в Proteus 20:55 Используем указатели 22:52 Демонстрация работы кода 22:58 Код, демонстрация которого былаРазберёмся, как работает и как подключается к микроконтроллеру звуковой излучатель и RGB светодиод. Напишем программу для вывода слова с использованием азбуки Морзе и световой индикации. Тайм-коды: 00:00 Введение 00:08 Схема подключения динамика и RGB диода 02:28 Сигнал на динамик 04:13 Азбука Морзе 05:41 Трёхцветный светодиод 06:39 Вырабатываем с потенциометра ШИМ на диоде в Proteus 12:26 Программируем динамик и диод в реальной жизни 13:44 Динамик "орёт" 13:48 Дополним звук светом 15:27 Звучит точка и тире 15:33 Пишем main() 17:58 Демонстрация работы программыРассказывается про устройство, подключение и управление вращением ротора шагового мотора. Рассказывается про драйвер управления шаговым мотором и про режимы его работы. Тайм-коды: 00:00 Введение 00:05 Применение шаговых моторов 01:51 Схема подключения шаговика 04:55 Режимы работы шаговика 08:49 Алгоритм программы 11:13 Моделириуем мотор в Proteus 13:17 Программный код для полушагового режима 19:08 Микрошаговые режимы на драйверах 25:54 Блок управления шаговым моторомВ видео рассказывается про работу со светодиодными сборками типа матрицы. Рассказывается процедура программирования через параллельный порт микроконтроллер, а также - описывается процесс вывода информации на матрицу посредством протокола TWI, но для этого нужна не просто светодиодная матрица, а матрица с драйвером, обеспечивающим общение по TWI. Тайм-коды: 00:00 Введение 00:11 Применение светодиодных матриц 00:53 Подключение светодиодной матрицы 04:04 Микросхема деширатора 04:57 Микросхема драйвера 07:57 Алгоритм вывода изображения на матрицу 11:56 Моделируем матрицу в Proteus 17:50 Программируем матрицу в реальной жизни 19:41 Демонстрация работы программы 20:34 Подключение матрицы по протоколу TWI 22:11 Регистры аппаратного TWI 24:09 Регистры драйвера матрицы 27:08 Алгоритм вывода изображения на матрицу (TWI) 30:15 Демонстрация работы программы (TWI)В видео рассказывается про работу с семисегментными индикаторами как с устройствами вывода цифро-буквенной информации. Рассматриваются способы подключения индикаторов к микроконтроллеру и о способах программирования, включая процедуру передачи данных по протоколу SPI. Тайм-коды: 00:00 Введение 00:04 Применение семисегментников 00:52 Устройство семисегментника 03:12 Схема включения семисегментной сборки 07:05 Микросхема-защёлка 12:38 Драйвер светодиодной сборки 13:28 Алгоритм вывода числа на семисегментники 17:34 Моделируем семисегментники в Proteus 18:42 Программируем семисегментники 21:50 Подключение семисегментников по SPI 26:28 Регистры аппаратного SPI микроконтроллера 29:47 Алгоритм вывода числа на семисегментники (SPI)Рассматривается реализация САУ на микроконтроллере. Раскрывается понятие САУ, зачем оно существует. Даются подробности о ПИД-регуляторе, об их настройке и особенностях. Приводится пример регулирования левитации магнитного подвеса с программным кодом. Тайм_коды: 00:00 Введение 00:19 Что такое "система управления"? 03:44 Примеры САУ (шар на столе) 07:06 ПИД-регулятор 09:36 Пропорциональный коэффициент (П) 10:59 Интегральный коэффициент (И) 11:58 Дифференциальный коэффициент (Д) 12:55 Подбор коэффициентов ПИД-регулятора 13:37 Как влияют коэффициенты на переходный процесс 15:20 Цифровая реализация САУ 18:04 Метод Зиглера-Никольса 19:13 Магнитный подвес, схема 21:44 Магнитный подвес, программная реализацияВ лекции рассматривается протокол обмена данным 1-Wire или Microlan и его программная реализация. Зрителю даётся представление о структуре и характеристиках этого протокола, рассматриваются его отличия и особенности по сравнению с протоколами, рассмотренными ранее. Приводятся примеры применения этого протокола, а также приводится конкретный программный пример общения с датчиком температуры/влажности по протоколу 1-Wire на основе микроконтроллера семейства AVR. Тайм-коды: 00:00 Введение 00:07 Аппаратный уровень 1-Wire 05:10 основные команды коммуникации 10:03 Пример работы с датчиком DHT11 12:55 ВременнАя диаграмма 1-Wire 13:21 Пишем программный 1-Wire 18:41 Демонстрация работы программы 19:28 Примеры применения 1-Wire 20:39 Достоинства и недостатки 1-WireВ лекции рассматривается протокол обмена данным Universal Asynchronous Receiver/Transmitter - UART и его аппаратная реализация. Рассматриваются правила обмена данными, регистры AVR микроконтроллера, ответственные за работу протокола, а также примеры применения данного протокола. В конце лекции даётся общее представление о более общем проколе обмена - USART. Тайм-коды: 00:00 Введение 00:11 Описание UART 01:13 ВременнАя диаграмма 02:56 Регистры аппаратного UART 14:18 Регистры скорости UART и интересное 16:27 Обмен данным с компьютером 17:55 Пишем программу для обмена данными 21:04 Примеры применения UART 22:11 Преимущества и недостатки UART 22:41 Начальные сведения про USARTВ лекции рассматривается протокол обмена данным Serial Peripheral Interface - SPI, в частности - его программная и аппаратная реализации. Рассматриваются правила обмена данными, регистры AVR микроконтроллера, ответственные за работу протокола, а также примеры применения данного протокола. Тайм-коды: 00:00 Введение 00:10 Аппаратный уровень SPI 03:00 4 режима работы SPI 05:53 Датчик температуры TC72 07:37 Моделируем датчик температуры в Proteus 09:03 Пишем программный SPI 18:21 Демонстрация работы кода - программный SPI 21:58 Регистры аппаратного SPI 28:39 Пишем аппаратный SPI 34:59 Демонстрация работы кода - аппаратный SPI 36:43 Семисегментник на SPI 41:36 Достоинства и недостатки SPIЛекция вводит понятие "протокола обмена данными" между микроконтроллером (микроконтроллерами) и периферийными устройствами. Протокол - это способ кодирования сообщений между ведущим и ведомым устройством, которые могут передаваться по ограниченному количество проводов. Работа с каждым устройством, работающим на том или ином протоколе обмена должна рассматриваться отдельно, так как упомянутые выше "сообщения" достаточно индивидуальны для каждого отдельно взятого устройства. В лекции рассматривается программная и аппаратная реализация протокола I2C или TWI. Рассматриваются примеры использования этого протокола, регистры МК для реализации аппаратного типа TWI. Тайм-коды: 00:00 Введение 00:22 Что такое протоколы обмена данными? 01:52 Последовательные и параллельные протоколы 03:10 Хардварный уровень TWI 04:33 Временная диаграмма протокола TWI 08:15 Использование TWI с датчиком температуры 14:42 Моделируем датчик в Proteus 15:47 Пишем программный TWI 25:13 Демонстрация работы кода - программный TWI 25:45 Аппаратные регистры TWI 34:03 Пишем аппаратный TWI 38:52 Демонстрация работы кода - аппаратный TWI 40:08 Применение TWI протокола - расширители портов 42:45 Пример расширителя портов на ARM 44:40 Устройства, использующие TWI протокол 44:54 Достоинства и недостатки TWIЛекция расскажет про то, для каких целей и как используются дальномеры или датчики расстояния. Рассматриваются три дальномера, основанный на ультразвуковом, инфракрасном и лазерном принципах измерения. Приводятся примеры программных кодов для работы с каждым типом датчика. Тайм-коды: 00:00 Введение 00:09 Ультразвуковой дальномер 00:39 Характеристики дальномер HC-SR04 01:35 Подключение УЗ дальномера 02:58 Дисклеймер по поводу обращения с 16-битными регистрами 03:03 Регистр таймера TCNT и регистры пребываний EIMSK и EICRB 04:24 Пересчёт расстояния с дальномера в человеческую размерность 05:46 Моделируем УЗ дальномер в Proteus 12:51 Программируем УЗ дальномер в реальной жизни и демонстрируем 15:04 Инфракрасный дальномер 16:38 Программируем ИК дальномер в реальной жизни и демонстрируем 20:05 Лазерный дальномер (плюс измеритель яркости - в подарок) 22:26 Алгоритм работы с лазерным дальномером 24:23 Программируем лазерный дальномер в реальной жизни и демонстрируемЛекция расскажет о том, чем отличается сервомашинка от двигателя постоянного тока и как ей управлять при помощи таймера/счётчика AVR микроконтроллера. Сервомашинка - это двигатель постоянного тока, помещенный в один корпус с управляющей электроникой и датчиком обратной связи (потенциометром). Таким образом при работе с сервомашинкой программист управляет углом поворота вала машинки (а не скоростью вращения вала, как в случае двигателя постоянного тока). Одним из вопросов, который ставится в данном видео (и в нем же разрешается) - это вопрос формирования несущего сигнала заранее заданной частоты (и, соответственно, периода), который необходим для работы с сервомашинкой. Лекция более подробно раскрывает возможности таймеров-счётчиков микроконтроллера. Тайм-коды: 00:00 Введение 00:08 Устройство сервомашинки 02:04 Управление сервомашинкой 03:29 Режимы работы таймера (в частности - переменный верхний предел) 04:54 Регистры таймера OCR и ICR 06:17 Расчёт верхнего предела (регистр ICR) 08:54 Моделируем сервомашинку и потенциометр в Proteus 13:32 Программируем сервомашинку в реальной жизни 15:42 Демонстрация работы программы 15:52 Усложнение задания 18:14 Демонстрация работы усложнённой программы 18:27 Пробуем настроить другую несущую частоту - 333 Гц