Видеокурс "Программирование микроконтроллеров STM32 базовый курс"

Видеокурс "Программирование микроконтроллеров STM32 базовый курс"

E-mail Печать PDF
Видеокурс Программирование микроконтроллеров STM32 базовый курс

Что за видеокурс.

Авторский обучающий видеокурс по программированию микроконтроллеров stm32. 100 видеоуроков, общей продолжительностью 37 часов, в которых раскрыты самые важные основы микроконтроллеров stm32.

Автор курса Максим Селиванов.

Что вошло в видеокурс.

Содержание видеокурса.

1. Введение в курс (9 минут).

Из этого видео Вы узнаете особенности курса. Так же получите несколько полезных советов, связанных с изучением видеокурса, следуя которым, вы сэкономите свое время и качественнее усвоите материал.

02. Микроконтроллеры STM32 от ST (9 минут).

История компании ST Microelectronics. Место компании в современном мире. Достижения компании в сфере электронных компонентов и технологий. Обзор продукции от компании. История появления микроконтроллеров stm32. Развитие семейств stm32. Отладочные платы для микроконтроллеров.

03. Преимущества микроконтроллеров STM32 (17 минут).

Наглядный пример преимущества производительности 32-разрядного ядра по сравнению с ядрами с меньшей разрядностью. Набор специальных команд ядра Cortex. Преимущества в объемах Flash- и RAM-памяти. Высокая тактовая частота работы и возможность запуска RTOS. Наличие большого количество разнообразной периферии. Преимущества и недостатки, а так же области применения 8 и 32 разрядных микроконтроллеров.

04. История компании ARM (16 минут).

История создания компании. Разработка собственного процессора и компьютера. Процессоры CISC и RISK, преимущества и недостатки. Развитие архитектуры ARM. Причины низкой популярности персональных компьютеров на базе ARM. Области применения процессоров ARM. Бизнес модель по продаже интеллектуальной собственности в виде микропроцессорных ядер. Разработки компании ARM.

05. Обзор семейства ядер Cortex (6 минут).

Разделение ядер на 3 подсемейства Cortex-A, Cortex-R, Cortex-M. Основные сферы применения ядер. Хронология разработки ядер. Причины популярности использования Cortex-M в микроконтроллерах. Развитие семейства ядер Cortex-M. Линейка ядер М0, М0+, М3, М4, М7.

06. Преимущество ядер от ARM (24 минуты).

Причины, по которым компании предпочитают использовать в микроконтроллерах технологию ядер от ARM. Демонстрация сложности ядер микроконтроллеров. Схема 4-битного АЛУ. Внутренняя структура процессора. Понятие ядра и внутренней периферии микроконтроллера. Требования к ядру микроконтроллера. Причины, по которым в микроконтроллерах используются ядра Cortex-M.

07. Обзор микроконтроллеров STM32 (46 минут).

Семейства и линейки микроконтроллеров stm32. Причины разделения на семейства ядер. Семейства с низким потреблением, базовыми характеристиками и высокой производительностью. Обзор программы MCU Finder. Параметры поиска микроконтроллеров. Хронология появления семейств микроконтроллеров stm32. Карта поддерживаемых команд ядер Cortex-M. Основные характеристики микроконтроллеров из базовых семейств (STM32F0, STM32F1, STM32F3), мало потребляющих семейств (STM32L0, STM32L1, STM32L4) , высокопроизводительных семейств (STM32F2, STM32F4, STM32F7, STM32H7). Преимущества и недостатки STM32F103C8T6. Отладочная плата под микроконтроллер.

08. Обзор отладочной платы (35 минут).

Отладочная плата на базе stm32f103c8t6. Принципиальная схема и распиновка платы. Компоненты отладочной платы. Система питания, тактирования и программирования платы. Тип линейного стабилизатора платы с низким падением напряжения RT9193, XC6204, XC6205. Максимальные нагрузочные токи платы. Подача и снятие питания с платы. Интерфейс SWD. Режимы загрузки. Линии для управления загрузки. Выводы, допускающие подачу 5В. Нагрузочные способности выводов.

09. Клоны и подделки STM32 (24 минуты).

Микроконтроллеры с обозначениями CH32, CS32, CKS32, GD32. Примеры где продаются аналоги микроконтроллеров. Методы позволяющие определить поддельные МК. Маркировки клонов. Проблемы с программированием не оригинальных микроконтроллеров. Обзор поставщиков микроконтроллеров. Внешние признаки поддельных микроконтроллеров.

10. Обзор других отладочных плат (14 минут).

Обзор разных отладочных плат на stm32. Отличия в распиновке и схемотехнике плат. Преимущества и недостатки отладочных плат.

11. Обзор программаторов STM32 (44 минуты).

Виды программаторов. Программаторы на отладочных платы. Разные версии st-link. Форм факторы программатора st-link v.2 Фирменные программаторы от ST. Распиновка разъемов программаторов. Интерфейс JTAG и SWD. Отличия интерфейсов, основные преимущества и недостатки. Отличия в программаторах разной ценовой категории. Подключение программатора к микроконтроллеру. Важное правило при использовании питания от программатора. Версия программатора st-link v.2.1. Виртуальный СОМ-порт и виртуальный диск. Переделка программатора v2 в версию v2.1. Расширенные функции версии программатора v.3. Обзор программаторов на aliexpress. Рекомендации перед покупкой. Программатор J-Link от Segger.

12. Прошивка STM32 через UART (30 минут).

Таблица загрузки STM32. Расположение и назначение выводов BOOT0 и BOOT1. Понятие встроенного загрузчика. Адресное пространство микроконтроллера. Расположение flash памяти и системной памяти. Механизм переключения на загрузку из разных областей памяти. Преобразователи USB-UART для перепрошивки. Подключение преобразователя к микроконтроллеру. Выбор скорости обмена данными. Программа Flash Loader Demonstrator. Установка и снятие защиты памяти программ.

13. Прошивка через ST-Link (19 минут).

Подключение программатора и установка драйверов. Программа st-link utility. Обновление прошивки программатора при помощи встроенной программы обновления. Работа с программаторами с устаревшей прошивкой. Пример обновления прошивки. Разбор частых ошибок при программировании через программатор. Основные параметры программируемого микроконтроллера. Пример программирования тестовых прошивок.

14. Программирование с отключенным SWD (20 минут).

Причины, по которым может быть отключен интерфейс программирования SWD. Управление интерфейсом SWD через конфигуратор. Настройка соединения через st-link utility. Тестовые прошивки с активным и неактивным интерфейсом SWD. Использование программаторов с выводом сброса для прошивки.

15. Прошивка и отладка аналогов STM32 (16 минут).

Обзор подделок и аналогов stm32 на aliexpress. Влияние частоты и кабеля на связь программатора с микроконтроллером. Ошибка неверного идентификатора микроконтроллера. Редактирование файла конфигурации для устранения ошибки неверного идентификатора. Причины и возможные решения ситуации когда микроконтроллер не переходит в режим загрузки из системной памяти.

16. Обзор сред программирования (33 минуты).

Популярные средв программирования и отладки STM32. Среды программирования Keil и IAR, преимущества и недостатки. Понятие компилятора и интегрированной среды разработки. Компилятор GCC, Keil и IAR. Среда разработки CooCox. Понятие платформы Eclipse. Среды разработки System WorkBench, Atolic True Studio. Среда разработки CubeIDE. Преимущества и недостатки CubeIDE. Другие среды разработки STM32.

17. Установка и настройка CubeIDE (15 минут).

Требования к компьютеру для среды CubeIDE. Основные ошибки при установке среды. Путь установки workspace. Краткий обзор среды. Первый запуск среды. Основные настройки, которые нужно сделать сразу после установки.

18. Изменение темы оформления CubeIDE (10 минут).

Настройка внешнего вида среды. Установка и настройка новой темы. Настройка текстового редактора.

19. Кодировка символов в CubeIDE (17 минут).

Причины нечитаемного текста на русском языке. Принцип кодирования символов в таблице UTF-8. Пример кодировки текста в кодировочной таблице UTF-8. Кодировочная таблица Windows-1251. Пример некорректного вывода надписей при проблемах с кодировкой текста. Исправление кодировки программы, если не настроена кодировка проекта.

20. Обзор документации (часть 1) (27 минут).

Основные документы для микроконтроллера. Расположение папки репозитория. Коды документации. Особенности документации на stm32. Обзор Datasheet. Краткие характеристики микроконтроллеров. Некоторые особенности в маркировке микроконтроллеров. Информация по внутреннему строению, распиновке выводов. Типы выводов, основные и альтернативные функции выводов, ремап выводов. Предельные параметры микроконтроллера. Токи потребления при разных режимах работы. Характеристики портов ввода-вывода. Логические уровни напряжения для разных выводов. Внутренние подтягивающие резисторы. Вывод RESET.

21. Обзор документации (часть 2) (41 минуты).

Обзор Reference Manual. Особенности описания периферии. Обзор разделов документации. Память и архитектура шины, питание микроконтроллера, выводы для питания, монитор питания, бэкап регистры. Регистр в котором хранится указание на размер flash-памяти. Отладочные интерфейсы. Обзор документов из раздела Programming Manual. Обзор Errata Sheet. Ошибки ядра и периферии. Аппаратные и программные ошибки. Раздел Application Mode. Подключение линий питания микроконтроллера. Разбор типовой схемы подключения микроконтроллеров stm32. Обзор варинатов загрузки микроконтроллера.

22. Категории density линеек stm32 (06 минут).

Разделение stm32 на low-, medium-, high-, XL- density devices. Разделение документации в зависимости от категорий.

23. Обзор документа HAL UM1850 (14 минут).

Ревизии документа. Причины появления разных ревизий. Отличия между ревизиями документов. Описание библиотек HAL и LL. Функции из библиотеки HAL. Разбор функции задержки и функции управление выводами порта. Разбор описания функций.

24. Создание первого проекта (часть 1) (30 минут).

Этапы создания проекта. Разбор базовых возможностей среды CubeIDE. Вкладка выбора микроконтроллера. Вкладка выбора отладочной платы. Пример работы с функцией замены микроконтроллера. Функции выбора микроконтроллера по ядру, серии, линейки, корпусу, объемам памяти и набору периферии. Краткие характеристики из таблицы параметров. Выбор имени и папки до проекта и тип проекта.

25. Создание первого проекта (часть 2)(42 минуты).

Разбор встроенного конфигуратора в среде CubeIDE. Разбор вкладок конфигуратора. Настройка выводов на вход/выход. Горячие клавиши конфигуратора. Поиск выводов. Сброс конфигурации. Категории периферии. Настройка выводов на режимы работы периферии. Перенос функций периферии на другие выводы. Функция закрепления выводов. Ограничения режимов периферии. Система тактирования микроконтроллера. Работа от внутреннего генератора и внешнего кварцевого резонатора. Низкочастотный и высокочастотный кварцевые резонаторы. Включение отладочного интерфейса. Запуск генерации кода. Краткий обзор кода.

26. Создание первого проекта (часть 3)(46 минут).

Работа с файлами проекта. Настройка отображения окон с кодом проекта. Управление окнами проекта. Понятие перспективы в среде CubeIDE. Настройка перспективы проекта. Добавление перспективы отладки проекта. Настройка перспективы для написания программы. Обзор файлов входящих в состав проекта. Открытие, закрытие, удаление и импорт проекта. Открытие нескольких проектов. Определение местоположения файлов проекта и переход к файлам. Состав проекта. Файл линкера. Файл сатртапа на ассемблере. Комментарии в файле main и их назначение. Заголовки комментариев. Переход к месту определения функции. Краткий обзор основных функций созданных при генерации проекта. Компиляция проекта. Обзор окна затрачиваемых ресурсов окна Build Analyser. Процесс компиляции и перепрошивки микроконтроллера. Функции управления выводами и функции задержки.

27. Создание первого проекта (часть 4)(44 минуты).

Основные ошибки, которые могут возникнуть на этапе создания, конфигурирования и компиляции. Предлагаемые варианты исправления ошибок. Автодополнение кода. Функция переключения вывода в противоположение состояние. Настройка вкладки Debugger. Программирование через программатор с устаревшей прошивкой. Обновление прошивки программатора через CubeIDE. Автоматизация функции перепрошивки программы. Обзор горячих клавиш на различные действия в среде CubeIDE. Конфигурация построения проекта. Отличия конфигурации Release от Debug. Уровни оптимизации компилятора и дебаггера. Изучения информации из консоли. Разбор заполнения секции памяти. Включение генерации файлов прошивки в разных форматах. Расположение файлов прошивки в папках проекта.

28. Настройка тактирования. Теория (40 минут).

Программная задержка через пустой цикл декремента переменной. Встроенные RC генераторы в микроконтроллерах. Линии прохождения сигнала тактирования. Коммутаторы тактовых сигналов. Делители частоты с изменяемым и неизменным коэффициентами. Модуль умножения частоты PLL и принцип его работы. Описание модулей и регистров для настройки системы тактирования. Подключение высокочастотного кварцевого резонатора для тактирования. Подключение низкочастотного резонатора для часов реального времени. Частота SYSCLK и HCLK. Частота такирования ядра, памяти и других элементов. Понятие шин обмена данными. Тактирование шин AHB, APB1, APB2. Предельные частоты тактирования модулей. Разгон микроконтроллера по частоте. Тактирование микроконтроллера от внешнего сигнала тактирования. Кварцевый резонатор и кварцевый генератор.

29. Настройка тактирования. Практика (15 минут).

Настройка системы тактирования на практике. Программная задержка в виде пустого цикла. Настройка системы тактирования на увеличение и уменьшение тактовой частоты. Превышение частоты тактирования модулей микроконтроллера. Автоматическая и ручная настройка системной частоты. Сброс системы тактирования.

30. Настройка тактирования. CSS модуль (12 минут).

Модуль защиты от сбоя в работе системы тактирования. Преимущества и недостатки внутреннего RC-генератора. Причины и последствия отказа кварцевого резонатора. Работа модуля PLL при отказе кварцевого резонатора. Пример зависания микроконтроллера при тактировании частотой напрямую от кварцевого резонатора.

31. Настройка тактирования. Вывод частоты MCO (08 минут).

Вывод тактовой частоты на выход MCO. Настройка на тактирование от внешнего источника тактового сигнала.

32. Обзор библиотек HAL, LL, SPL, CMSIS (37 минут).

Обзор библиотек CMSIS, SPL, HAL, LL и LibOpenCm3. Преимущества и недостатки каждой из библиотек. Стандартная и вендор-зависимая часть библиотеки CMSIS. Функции-обертки CMSIS. Стандартная библиотека периферии SPL. Пример фрагмента кода с использованием SPL. Причины отказа от поддержки и развития библиотеки SPL. Преимущества и недостатки библиотеки HAL. Отличия библиотеки HAL от SPL и CMSIS. Причины широкого распространения библиотеки HAL. Низкоуровневая библиотека LL. Причины создания библиотеки LL. Отличия от CMSIS и HAL. Преимущества и недостатки. Фрагмент кода с использованием библиотеки LL.

33. Порты ввода-вывода. Работа на выход (29 минут).

Обозначение портов ввода-вывода. Разрядность портов. 8 режимов работы выводов портов. Конфигурация выводов по умолчанию. Понятие альтернативных функций выводов портов. Максимальный втекающий и вытекающий ток вывода порта. Уровни логического нуля и логической единицы. Максимальный ток по линиям питания VСС и GND. Использование режима Open Drain. Формирование на выходе сигнала с напряжением выше, чем напряжение питания. Понятие скорости изменения сигнала на выходе. Влияние скорости изменения сигнала на характеристики устройства на микроконтроллере. Регистры для настройки выводов порта.

34. Порты ввода-вывода. Работа на вход (45 минут).

Режимы работы вывода на вход. Плавающий вход, вход с подтягивающим и стягивающим резисторами, аналоговый вход. Особенности работы вывода в режиме плавающего входа. Параметры встроенных подтягивающего и стягивающего резисторов. Токи утечки и емкости выводов. Понятие триггера Шмитта и его применение в составе вывода. Применение режима аналогового входа. Уровни логических сигналов. Ограничения напряжений сигналов для выводов разных типов. Логические уровни сигналов для вывода RESET. Понятие и предназначение встроенных защитных диодов. Инжектированные токи выводов. Использование защитных диодов в схемах согласования сигналов. Причины и последствия протекания токов через внутренние защитные диоды. Характеристики и схемотехника FT-выводов микроконтроллера. Максимальное напряжение, которое допустимо подавать на FT-вывод. Регистры для настройки выводов. Особенности регистра для считывания состояний с выводов.

35. Библиотека HAL (часть 1)(16 минут).

Пример использования библиотеки HAL для простого проекта. Создание проекта. Настройка выводов во встроенном конфигураторе. Группировка выводов по периферии. Уровень вывода по умолчанию. Настройки Project Manager. Имя проекта, расположение проекта, настройка размера стека и кучи. Версия прошивки конфигуратора. Настройка выбора библиотеки. Работа с интерфейсом конфигуратора. Переключение из перспективы конфигуратора в перспективу написания кода.

36. Библиотека HAL (часть 2) (30 минут).

Обзор файлов и папок входящих в состав проекта. Файлы проекта, файлы библиотеки и файлы описаний. Защитные комментарии в проекте. Инициализация библиотеки HAL. Системный таймер для работы функции задержки в библиотеке HAL. Функция для конфигурирования системы тактирования микроконтроллера. Функция для настройки выводов портов. Структура настроек для конфигурации выводов. Константы для заполнения настроек выводов. Настройка выводов в ручном режиме с заполнением структуры. Тактирование модулей портов ввода-вывода. Функция задания уровня на выводе порта. Выбор аргументов функции для настройки вывода. Прошивка проекта в микроконтроллер.

37. Библиотека HAL (часть 3) (25 минут).

Функция переключения вывода. Функция считывания состояния вывода. Возвращаемые значения из функции. Пользовательские метки вывода микроконтроллера. Преимущество использования меток при программировании. Подробный разбор функции инициализации библиотеки HAL. Настройки предвыборки FLASH памяти. Настройка системного таймера на период 1 мс. Функция настройки интерфейса программирования. Конфигурация системы тактирования. Конфигурация выводов портов в ручном режиме. Работа вывода в режиме открытого стока на примере мигания светодиода.

38. Библиотека LL (часть 1)(25 минут).

Использование функций библиотеки LL для создания проекта. Отличие функций библиотеки LL от функций библиотеки HAL. Разбор состава проекта использующего библиотеку LL. Разбор функций и структур библиотеки LL. Использование библиотеки HAL и LL в одном проекте. Особенности функций библиотеки LL. Разбор функций сгенерированных в проекте. Разделение кода для управления периферией по отдельным файлам. Размещение пользовательских функций в файлах периферии.

39. Библиотека LL (часть 2) (17 минут).

Обзор документации с описанием библиотеки LL. Разбор функций и параметров передаваемых в функции. Функции установки и сброса выводов. Ошибки при программировании через программатор из среды CubeIDE. Назначение меток для выводов портов. Размещение пользовательских функций в файлах для работы с периферией. Создание констант управления через оператор enum. Подключение прототипа функций через заголовочный файл.

40. Библиотека LL (часть 3) (24 минуты).

Функция оценки состояния вывода из библиотеки LL. Передаваемые и принимаемые значения. Расположение пользовательских определений меток. Разбор работы функций библиотеки LL. Макросы для работы с регистрами. Развертывание функций из библиотеки LL. Понятие встраиваемой статической функции. Использование спецификатора static. Ошибки на стадии линковки программы. Регистр обеспечивающий атомарную операцию управления выводами. Принцип работы функции задержки из библиотеки LL. Одновременное управление несколькими выводами при помощи функций LL.

41. Сравнение библиотек HAL и LL (18 минут).

Сравнение затрачиваемых ресурсов при использовании библиотек HAL и LL. Секции .text, .data, .bss. Понятие стека и кучи. Настройка размера стековой памяти и кучи. Динамическое выделение памяти. Информация по распределению памяти между функциями. Распределение памяти по секциям памяти. Объяснение результатов по объемам памяти для проекта с LL и HAL.

42. Библиотека CMSIS (часть 1) (34 минуты).

Создание проекта без использования встроенного конфигуратора. Обзор кода генерируемого по умолчанию. Очистка проекта от дополнительного кода. Регистры тактирования периферии. Шины AHB, APB1, APB2 в составе микроконтроллера. Распределение периферии по шинам. Разряды из регистра тактирования портов. Доступ к полям структуры через указатель. Использование информации из Reference Manual для обращения к регистрам периферии. Регистры для записи/чтения, только для чтения и только для записи. Регистры для настройки портов ввода-вывода. Значения по-умолчанию в регистрах. Программная задержка в виде пустого цикла.

43. Библиотека CMSIS (часть 2) (14 минут).

Дополнение программы определениями разрядов. Пример поиска подходящего определения в файле описания для разрядов регистра. Корректная настройка разрядов регистров. Функция программной задержки.

44. Библиотека CMSIS (часть 3) (26 минут).

Использование регистров для считывания состояния выводов. Настройка выводов в различные режимы работы. Усложнение работы программы. Удаление и восстановление лишних файлов из программы. Подключение файла библиотеки CMSIS. Изменение настроек проекта для подключения библиотечный файлов. Зависимость настроек проекта от выбранной конфигурации. Очистка проекта от предупреждений на несуществующие файлы.

45. Карта памяти (часть 1) (17 минут).

Обзор карты памяти микроконтроллера. Адресное пространство ядер Cortex-M. Сегменты адресного пространства. Адреса расположения загрузчика, программной и оперативной памяти, регистров периферии. Расположение байт опций. Расположение в памяти регистров для работы с регистрами ядра микроконтроллера. Отражение адресов памяти в зависимости от режима загрузки микроконтроллера. Механизм перехода к различным областям памяти в зависимости от выбранного режима загрузки.

46. Карта памяти (часть 2) (28 минут).

Обзор памяти микроконтроллера через stm32CubeProgrammer. Элементы навигации и отображения памяти в программе программатора. Форматы отображения памяти. Считывание памяти за пределами объема Flash-памяти. Считывание зарезервированной памяти. Изменение программной памяти в ручном режиме. Считывание оперативной памяти. Обзор места расположения глобальных и статических переменных и стековой памяти. Обзор памяти для работы с регистрами периферии. Определение адресов расположения регистров периферии. Базовый адрес периферии и адреса смещения. Считывание адресов расположения регистров ядра Cortex-M.

47. Карта памяти (часть 3) (25 минут).

Обзор сегмента памяти в котором расположены Flash память, системный загрузчик и байты опций. Байты опций. Изменение байт опций в ручном режиме и в автоматическом режиме при помощи специального меню. Байты защиты памяти программ от считывания. Пользовательские байты. Байты защиты отдельных секторов flash-памяти. Регистр показывающий размер flash-паямти. ID-номер микроконтроллера. Код семейства микроконтроллера. Демонстрация на практике механизма выбора источника загрузки. Механизм начала выполнения программы. Инициализация стека, адрес перехода на начало программы. Влияние адреса на режим работы ядра Cortex. Механизм перехода к выполнению программы из оперативной памяти.

48. Программирование с адресами (22 минуты).

Обращение к регистрам через указатели языка Си. Очистка проекта от лишних файлов. Удаление подключений файлов из настроек проекта. Доступ к регистру через базовый адрес и смещение регистра. Адрес смещения для разных регистров периферии. Программа без использования библиотеки CMSIS.

49. Использование среды Proteus (30 минут).

Подходящая версия Proteus для симуляции работы stm32. Модель платы BluePill для симуляции в протеусе. Отличия между STM32F103C8T6 и STM32F103C6T6. Создание схемы для симуляции. Выбор прошивки для симуляции микроконтроллера. Ошибки отсутствия питания по линиям VDDA и VSSA. Настройка тактирования на внешний кварцевый резонатор. Причины медленной симуляции проекта в протеусе. Добавление модели платы BluePill в протеус. Недостатки среды Proteus для симуляции stm32.

50. Проект кодовый замок (13 минут).

Реализация матричной клавиатуры. Принцип работы и алгоритм опроса матричной клавиатуры для stm32. Создение проекта в протеусе. Настройка микроконтроллера в конфигураторе проекта. Подготовка проекта к написанию кода.

51. Опрос клавиатуры (28 минут).

Три основные функции для реализации опроса матричной клавиатуры. Реализация функции для управления линиями столбцов. Функция для чтения линии строк. Реализация возврата ascii кода нажатой кнопки. Защита от дребезга и защита от нажатия нескольких кнопок. Функция проверки правильности ввода пароля с клавиатуры. Демонстрация работы программы на практике.

52. Особенности работы программы (30 минут).

Влияние частоты работы микроконтроллера на работу программы. Пример аппаратной метки для контроля сигналов на вводах микроконтроллера. Анализ осциллограммы сигналов на выводах микроконтроллера. Аппаратные и программные решения проблемы реакции выводов на изменение сигналов. Демонстрация преимуществ использования меток для выводов микроконтроллеров. Преимущество использования нативных типов данных. Случаи негативного эффекта от использования некоторых типов данных. Последствия запрета на оптимизацию переменных. Ошибки в работе конфигуратора проекта. Использование различных версий конфигуратора кода. Причины, по которым программы в новой версии среды могут перестать правильно работать. Пример ошибки при скачивании и распаковке старой версии конфигуратора. Возможные варианты исправления ошибки распаковки скаченного конфигуратора.

53. Перенос и запуск проектов CubeIDE (22 минуты).

Управление проектами в среде CubeIDE. Импорт и перенос проектов. Удаление проекта. Работа с несколькими проектами. Изменение имени проекта. Задание корректного имени и пути до проекта. Создание проекта на основе существующего файла конфигурации. Несовместимость версий файла конфигуратора и программы конфигуратора. Миграция файла конфигурации проекта в новую версию.

54. Модульное программирование (часть 1) (28 минут).

Две основные причины, по которым следует разбивать проект на отдельные файлы. Теория построения проекта, который разбит на отдельные модули. Основные стадии построения проекта. Файл листинга программы. Раздельная компиляция. Очистка проекта. Создание новых папок и файлов в проекте. Файлы с кодом Си и заголовочные файлы. Правила создания, оформления и включения заголовочных файлов в проекте. Перенос функций в отдельные файлы. Вынос прототипов функций в заголовочные файлы.

55. Модульное программирование (часть 2) (19 минут).

Перенос кода из файла main.c в другие файлы. Основное неудобство размещения программ в main.c Повышение читабельности программы за счет функций-оберток и пользовательских констант. Перенос функций оберток в отдельные файлы.

56. Символьный дисплей HD44780. Подключение (38 минут).

Преимущества и недостатки символьных дисплеев. Обзор проекта для работы с символьным дисплеем и матричной клавиатурой. Подключение дисплея к микроконтроллеру. Обзор библиотеки для HD44780. Простой способ настройки необходимой контрастности. Функция для тестирования библиотеки дисплея. Группировка файлов в отдельную папку библиотеки. Два способа подключения библиотечных файлов к проекту. Подключение заголовочных файлов к проекту из отдельных папок. Задание пути до заголовочных файлов в настройках проекта. Пример нарушения инкапсуляции функций библиотек.

57. Символьный дисплей HD44780. Библиотека (39 минут).

Разбор низкоуровневых функций для управления дисплеем. Функция инициализации дисплея. Переход на заданное знакоместо строки. Функция для печати байта в HEX формате. Функция для печати строки символов. Функция декодирования Windows1251 в кодировочную таблицу дисплея. Разбор двух вариантов функций вывода на дисплей десятичных чисел из диапазона типа int.

58. Символьный дисплей и кодовый замок (12 минут).

Разбор функции для вывода дробных чисел типа float. Вспомогательная функция возведения в степень. Экспоненциальная запись числа. Преимущество и недостатки использования экспоненциальной записи числа. Разбор работы программы проверки набранного кода.

59.01. Интерфейс CubeIDE . Обзор среды (38 минут).

Подробная демонстрация различных функций текстового редактора. Обзор и настройка компонентов на панели инструментов. Настройка перспектив среды: программирование, отладка конфигурирование. Конфигурация среды файлами .metadata. Выделение и редактирование блоков кода, многострочное редактирование. Переход между примечаниями в программе. Установка закладок и точек останова. Встроенный анализатор кода. Переход меду отредактированными строками. Переход между недавно просмотренными строками программы.

59.02. Интерфейс CubeIDE . Система поиска (37 минут).

Простой вариант поиска. Настройка результатов поиска. Замена через поиск. Быстрый переход к элементам программы. Поиск и открытие файлов проекта. Поиск файлов по расширению. Поиск по фрагментам в названии. Поиск и открытие элементов программы. Инструмент поиска по программе File Search и C/C++ Search. Работа в окне найденных элементов. Фильтрация результатов поиска. Поиск по файлам проекта. Использование фрагментов при поиске. Использование инструмента исключения.

59.03. Интерфейс CubeIDE. Закладки и задачи (15 минут).

Установка закладок в программе. Задание имени закладки. Окно закладок. Переход между закладками. Удаление закладок. Инструмент задач. Приоритеты задач. Окно задач. Переход между задачами. Редактирование и удаление задачи. Установка задачи при помощи комментариев. Окно Markers.

59.04. Интерфейс CubeIDE . Окна (9 минут).

Обзор окон Include Browser. Окно Outline, элементы окна. Группировка элементов окна.

59.05. Интерфейс CubeIDE. 05 Инструменты SFR, Stack Analyzer (13 минут).

Окно регистров SFR, информация и поиск по регистрам. Окно Stack Analyzer, обзор вкладок окна. Разбор информации из окна. Скрытие и отображение элементов мертвого кода. Поиск по элементам. Глубина вызовом функций, размер стека для функций.

59.06. Интерфейс CubeIDE. Minimap, Templates, History (21 минута).

Окно Minimap. Окно шаблонов кода. Применение шаблонов при написании кода программы. Создание и редактирование шаблонов. Инструмент локальной истории. Сравнение файлов с файлами истории. Работа с окнами сравнения. Перенос изменений. Настройки инструмента локальной истории. Путь до файлов истории. Настройки перспективы и другие настройки среды.

59.07. Интерфейс CubeIDE. Другие функции (13 минут).

Функция переименования элементов в проектах. Автоматическое форматирование кода. Настройка шаблонов форматирования. Работа с вкладками в среде CubeIDE. Переключение между файлами с кодом Си и заголовочным файлом. Горячие клавиши для работы с текстом программы.

60.01. Режим отладки CubeIDE. Введение (13 минут).

Введение в понятие отладки программы. Демонстрация некоторых инструментов отладки. Обзор модулей системы отладки. Технология CoreSight. Отладочные интерфейсы JTAG и SWD. Поддержка отладочных инструментов в разных ядрах Cortex. Обзор интерфейса SWD. Регистры для управления SWD. Вывод для передачи отладочной информации. Функции контроля выполнения программы. Другие возможности системы отладки.

60.02. Режим отладки CubeIDE. Режимы отладки и прошивки (11 минут).

Важное замечание про режимы отладки и прошивки. Настройка функций запуска отладки и прошивки. Выбор файлов для прошивки и отладки программы. Создание и настройка разных конфигурация для прошивки и отладки. Настройка выбора прошивки для разных программаторов.

60.03. Режим отладки CubeIDE. Запуск отладки (32 минуты).

Требование для успешной отладки программы. Обзор и настройка перспективы отладки. Режим работы программы. Настройка точки останова на main. Информация о текущем положении в программе. Инструменты и функции для контроля хода выполнения программы. Горячие клавиши для управления выполнением программы. Обзор стека вызовов. Окно для отображения локальных переменных в функциях. Сброс микроконтроллера. Запуск выполнения программы до курсора. Функция перезапуска отладки. Окно дизассемблера. Разбор элементов окна дизассемблера. Перемещение по отдельным ассемблерным инструкциям.

60.04. Режим отладки CubeIDE. Отладка программы (21 минута).

Обзор дополнительных функций и инструментов системы отладки. Пауза программы после запуска отладки. Запуск программы с помощью файла без отладочной информации. Уровни отладки проекта. Отладка микроконтроллера с отключенным интерфейсом SWD. Функция перехода на заданный участок программы. Настройка панели инструментов в перспективе отладки.

60.05. Режим отладки CubeIDE. Окно Variables (27 минут).

Отображение локальных переменных. Настройка окна локальных переменных. Адреса расположения переменных. Расположение переменных в зависимости от их типов. Изменение переменных в окне. Формат отображения переменных. Приведение к типам данных. Поиск переменных. Просмотр фрагмента памяти расположения переменных. Отображение массивов в окне локальных переменных. Отображение переменных как массивов.

60. 06. Режим отладки CubeIDE. 06 Окно SFR (14 минут).

Окно регистров специальных функций. Периферия настраиваемая при помощи регистров. Разряды регистров. Настройка отображения регистров. Адрес расположения регистров. Считывание регистров в режиме выполнения. Корректное изменение регистров.

60.07. Режим отладки CubeIDE. Окно Registers (10 минут).

Окно регистров ядра Cortex. Типы регистров. Рабочие регистры, Регистр стека, связи, программный счетчик. Регистр статуса. Регистр control. Привилегированный и непривилегированный режимы работы. Регистры указателя стека. Понятие регистра основного стека и стека процесса. Пример изменения регистра в процессе работы программы. Работа программы в окне дизассемблера. Пример работы стека и регистра связи при вызове функций. Установка младшего разряда адреса в 1.

60.08. Режим отладки CubeIDE. Окно Memory Browser (28 минут).

Окно обозревателя памяти. Данные в окне. Настройка отображения данных в окне. Порядок отображения байт данных. Работа с адресной строкой. Открытие нескольких вкладок и нескольких экземпляров окна. Окно поиска и замены по памяти. Особенности размещения данных в программной памяти. Редактирование содержимого памяти в процессе отладки программы. Функции импорта и экспорта данных из памяти.

60.09. Режим отладки CubeIDE. Окно Memory (19 минут).

Отличия и преимущества окна Memory по сравнению с окном Memory Browser. Выбор адреса памяти для отображения данных. Просмотр содержимого массивов. Редактирование памяти в режиме реального времени. Настройка внешнего вида окна. Выбор вариантов отображения данных в памяти. Группировка отображения байт данных.

60.10. Режим отладки CubeIDE. Expressions (14 минут).

Универсальное окно для отображения переменных в программе. Изменение формата отображения данных. Отображение массива в окне. Изменение отображения в окне. Скрипты для отображения данных в окне. Дополнительные элементы для настроек окна. Настройка отображения окна. Добавление регистров и локальных переменных. Особенности изменения переменных в памяти.

60.11. Режим отладки CubeIDE. Окно Live Expressions (16 минут).

Отображение переменных в процессе выполнения программы. Добавление переменных в окно. Требования к переменным отображаемых в окне. Изменение формата отображения. Скрипы для корректировки отображения переменных. Демонстрация бага при отображении переменных, варианты решения проблемы.

60.12. Режим отладки CubeIDE. Точки останова (часть 1) (17 минут).

Понятие точек останова. Окно BreakPoints, работа с точками в окне. Пример установки и использования точек останова. Режим дезактивации точек останова. Влияние уровня оптимизации программы на работу точек останова. Причины игнорирования точек останова. Максимальное количество точек останова. Правила расстановки точек останова в программе. Неявная точка останова в программе.

60.13. Режим отладки CubeIDE. Точки останова (часть 2) (25 минут).

Дополнительные параметры для настроек точек останова. Понятие типов точек останова. Временные точки останова. Аппаратные и программные точки останова. Программаторы для установки программных точек останова. Счетчик игнорирования для точек останова. Задание условий для точек останова. Задание сложных условий с логическими выражениями для точек останова. Особенности программы при задании задания точек останова. Влияние оптимизации на точки останова.

60.14. Режим отладки CubeIDE. Точки наблюдения (22 минуты).

Инструмент точек наблюдения. Добавление точек наблюдения. Установка точки останова при обращении к переменной или области памяти. Особенности задания точек наблюдения.

61.01. Прерывания в STM32. Прерывания. Введение (23 минуты).

Понятие прерываний, событий и исключений. Случаи, в которых используются прерывания. Внешние прерывания на выводах. Модуль NVIC. Системные исключения. Исключения отказов. Понятие приоритетов прерываний. Вложенные прерывания. Сохранение и извлечение данных в стековой памяти. Механизм работы прерываний. Таблица векторов прерываний. Исключение HardFault.

61.02. Прерывания в STM32. Таблица векторов прерываний (29 минут).

Понятие таблицы векторов прерываний. Понятие потока и обработчика. Адреса в памяти микроконтроллера для прерываний. Процесс начала работы микроконтроллера. Разбор файла с ассемблерным кодом startup. Задание вершины стека из файла линкера. Понятие слабого связывания. Вектор обработчика прерываний по умолчанию. Разбор содержимого начала программной памяти. Адреса переходов в программной памяти.

61.03. Прерывания в STM32. Пример настройки внешних прерываний (24 минуты).

Последовательность настройки прерываний. Настройка прерываний в ручном режиме через регистры, библиотеку LL. Настройка через конфигуратор. Вектора внешних прерываний. Мультиплексоры для сигналов внешних прерываний. Общие вектора прерываний для нескольких линий. Настройка мультиплексора через регистры. Тактирование модулей альтернативной функций. Выбора фронта срабатывания прерывания. Регистр маскирования прерывания. Настройка модуля NVIC. Разрешение и запрещение прерываний через регистр NVIC.

61.04. Прерывания в STM32. Внешние прерывания. Практика (16 минут).

Демонстрация работы внешних прерываний на практике. Этапы настройки внешнего прерывания. Пример перехода по вектору прерывания, установленному по-умолчанию. Пример создания функции для обработки прерывания. Зацикливание программы в обработчике прерывания. Флаг ожидания для обработки прерывания. Регистр ожидания обработки внешнего прерывания. Сброс разряда ожидания.

61.05. Прерывания в STM32. Механизм вызовов прерываний (16 минут).

Процесс вызова функции обработчика прерывания. Источник вызова функции. Стек вызовов прерывания. Сохранение в регистре связи специального кода возврата для выхода из прерывания. Механизм возвращения в программу из обработчика прерывания. Определение режима (Handle или Thread) и стека (основной или стек процесса) после возврата из обработчика прерывания. Настройка внешнего прерывания при помощи функций библиотеки LL. Этапы настройки внешних прерываний при помощи функций библиотеки LL. Настройка модуля NVIC.

61.06. Прерывания в STM32. Функции библиотеки LL для прерывания (13 минут).

Подробный обзор функций библиотеки LL для работы с прерываниями. Сброс флага прерывания в регистре ожидания. Пример некорректного сброса флага прерывания, который может стать причиной возникновения трудноуловимой ошибки. Включение/отключение прерывания на отдельных линиях. Проверка включения прерывания. Программная генерация прерывания.

61.07. Прерывания в STM32. Настройка прерывания через конфигуратор (25 минут).

Настройка вывода на внешнее прерывание. Пример автоматического переноса внешнего прерывания на другие выводы. Настройка выводов через раздел GPIO. Настройка прерываний через раздел NVIC. Настройка количества разрядов под приоритет и субприоритет. Разбор функции инициализации вывода и настройки внешних прерываний. Обзор файла для обработчиков прерываний. Пример обработки прерываний с общим вектором обработки. Размещение пользовательского кода в обработчиках прерываний.

61.08. Прерывания в STM32. Дополнительные настройки конфигуратора (13 минут).

Включение и отключение генерации кода обработчиков прерываний. Управление генерацией дополнительного кода в обработчике прерываний. Управление последовательностью инициализации прерываний. Пример переноса функции внешнего прерывания на другой вывод. Пример переноса кода обработки прерывания из обработчика прерывания в пользовательский файл.

61.09. Прерывания в STM32. Функции NVIC (19 минут).

Переобъявления функций. Задание и считывание групп и подгрупп прерываний. Отключение и включение прерываний. Установка и сброс флага ожидания прерывания в контроллере NVIC. Генерация прерывания через контроллер NVIC. Задание приоритета прерывания. Программный сброс микроконтроллера. Функции для разрешения и запрета прерываний через регистр PRIMASK.

61.10. Прерывания в STM32. Приоритеты. Теория (15 минут).

Понятие приоритета прерывания, упреждающего приоритета и субприоритета. Разделение приоритета прерывания на приоритет группы и приоритет подгруппы. Уровни разбиения на группы и подгруппы. Функция разбиения приоритетов на группы и подгруппы. Разбор ситуаций, на которые влияет упреждающий приоритет и субприоритет. Обработка прерываний возникающих одновременно. Положение прерывания в таблице прерываний на приоритет.

61.11. Прерывания в STM32. Приоритеты. Практика (16 минут).

Практический пример использование приоритетов прерываний. Одновременное и разное по времени возникновение прерываний. Влияние субприоритета на одновременное возникновение прерываний.

61.12. CallBack функции HAL (часть 1) (14 минут).

Работа с прерываниями с использованием библиотеки HAL. Пониятие CallBack функций. Обзор функций настройки прерываний с использованием HAL функций. Разбор кода обработчика прерывания с использованием библиотеки HAL. Правила использования переопределенных callback функций. Модификатор weak. Вызов callback функции по умолчанию. Переопределение callback функций. Пример размещения пользовательского кода в callback функции. Макрос UNUSED().

61.13. CallBack функции HAL (часть 2) (12 минут).

Описание CallBack функций. Три типа CallBack функций. Пример CallBack функций для разных внутренних модулей периферии. Преимущества и недостатки использования CallBack функций.

62.01 Исключения отказов. Введение. (20 минут).

Понятие исключения отказов. Четыре типа отказов. Отказ HardFault. Источник возникновения отказов. Вектора обработчика исключения отказов. Приоритеты исключения отказов. Обработчики исключений. Запрет обработчиков по умолчанию. Пример возникновения отказа деления на ноль. Разбор четырех типов отказов и регистров статусов отказов. Usage Fault, Bus Fault, Memory Management Fault, Hard Fault. Модуль защиты памяти. Основные причины разных типов отказов. Функции разрешений исключений. Встроенный инструмент Fault Analyzer в среде CubeIDE.

62.02 Исключения отказов. Исключения (часть 1) (15 минут).

Подробный разбор различных ситуаций, которые приводят к возникновению отказов. Отказ деления на ноль. Подробный разбор встроенного инструмента Fault Analyzer. Переход в строку и область в памяти, где произошел отказ. Переход в точку отказа при помощи стека вызовов. Анализ отказов по разрядам в регистрах статуса отказов. Остановка на паузу при отладке в момент возникновения отказа.

62.03. Исключения отказов. Исключения (часть 2) (18 минут).

Подробный разбор причин возникновения отказа Bus Fault. Понятие точного и неточного отказа. Пример чтения и записи по некорректному адресу. Попытка перехода к неподдерживаемому адресу. Разбор причин возникновения отказа Usage Fault. Отказ при переходе ядра Cortex в режим ARM. Отказ Memory Managment Fault при попытке выполнения команды из непредназначенной для этого памятью. Понятие невыровненного доступа. Включение исключения при невыровненным доступом.

62.04. Исключения отказов. Исключения (часть 3) (21 минута).

Разрешение перехода к обработчикам Usage Fault, Bus Fault и Memory Management Fault. Блокировка всех исключений кроме Reset и NMI. Регистр FAULTMASK. Функция для блокировки исключений. Наиболее частая причина, которая приводит к возникновению различных отказов в программе. Демонстрация некорректной работы с памятью при помощи массива. Анализ причин не корректной работы с памятью. Частые причины hardFault при использовании RTOS. Содержание кода, который должен быть прописан в обработчике HardFault.

B01.01 ST-Link Utility. Обзор программы (часть 1) (37 минут).

Преимущества STLink Utility. Обзор дополнительных программ в составе программы. Обновление прошивки программатора. Основы работы с программой. Обзор интерфейса. Подключение к микроконтроллеру. Контрольная сумма файла прошивки. Открытие файла прошивки в формате bin. Адрес размещения файла в памяти. Пример открытия и сохранения файла. Функция сравнения двух файлов. Подключение к микроконтроллеру. Разбор сообщений в консоли. Начальный адрес считывания памяти. Размер памяти для считывания. Группировка байт данных и отображение в окне. Функция редактирования памяти. Удаление, копирование, вырезка и вставка отдельных ячеек памяти. Функция заполнений памяти. Функция поиска данных в памяти.

B01.02 ST-Link Utility. Обзор программы (часть 1) (30 минут).

Сохранение считанных данных. Сравнение содержимого памяти с локальным файлом. Объем считанных данных. Определение размера программы. Считывание всего объема памяти микроконтроллера. Считывание за пределами объема памяти. Стирание всей памяти и стирание по секторам. Проверка памяти на чистоту. Подсчет контрольной суммы памяти. Прошивка бинарного файла в память. Верификация прошивки. Байты опций. Защита памяти от чтения. Три уровня защиты от чтения. Блокирование микроконтроллера установкой уровня доступа Level 2. Обновление прошивки программатора. Вывод отладочной информации в консоль.

B01.03 ST-Link Utility. Функции MCU Core и Live Update (12 минут).

Просмотр состояния и управление ядром Cortex. Останов, запуск и сброс ядра. Пошаговое выполнение программы. Изменение программного счетчика. Сброс ядра и системный сброс микроконтроллера. Наблюдение состояния микроконтроллера при помощи функции LiveUpdate. Редактирование памяти в режиме реального времени.

B01.04 ST-Link Utility. Функция Automatic Mode (4 минуты).

Функция автоматического программирования для нескольких микроконтроллеров.

B01.05 ST-Link Utility. Настройки программирования (18 минут).

Важные настройки для связи с микроконтроллером. Отображение основных данных по подключенному программатору. Выбор порта для подключения к микроконтроллеру. Выбор частоты для подключения к микроконтроллеру. Нормальное подключение, подключение под сбросом и горячее подключение. Нормальное подключение через системный сброс. Генерация LOG файла для сообщений из консоли. Комбинация настроек для подключение к микроконтроллеру у которого отключен интерфейс SWD.


Дополнительную информацию смотрите на сайте видеокурса:
 
Узнать подробности (перейти на страницу видеокурса)

   Карточка курса: *
Название:Программирование микроконтроллеров STM32 базовый курс
Автор(ы):Селиванов Максим
Формат курса:Видеокурс
Только базовая версия курса5399 руб.
Базовая версия курса + поддержка в закрытом чате5599 руб.
Партнерская программа:Есть
*-данные карточки курса могут не соответствовать текущим данным о курсе, подробную информацию смотрите на сайте курса

   Другие курсы автора(ов), издателя:
Ссылки на страницы автора(ов), издателя: Селиванов Максим
 

Все распродажи и скидки на видеокурсы:

Видеокурсы TeachVideo:

Все видеокурсы

Случайный видеокурс

Видеокурс Азбука татуировки

Видеокурс "Азбука татуировки"