Що нового?

Придбаний Программирование микроконтроллеров stm32. Базовый курс [Базовая версия курса + Раздел 63 (SWV)] [Максим Селиванов]

Інформація про покупку
Тип покупки: Складчина
Ціна: 5000 ГРН
Учасників: 1 з 107
Організатор: Відсутній
Статус: Набір учасників
Внесок: 48.6 ГРН
1%
Основний список
Резервний список

Gadzhi

Модератор
Программирование микроконтроллеров stm32. Базовый курс [Базовая версия курса + Раздел 63 (SWV)] [Максим Селиванов]



118 видеоуроков, общей продолжительностью 43 часа, в которых раскрыты самые важные основы микроконтроллеров stm32.
  • Схемотехника подключения микроконтроллеров stm32
  • Работа в фирменной среде CubeIDE
  • Использование встроенного конфигуратора для генерации кода
  • Работа с ядром Cortex
  • Использование инструментов отладки программы
Кому подойдет этот курс?

Разработчикам электроники

Если вы начинающий или среднего уровня разработчик, то данный курс вам будет особенно полезен. В настоящее время многие фирмы используют в своих разработках микроконтроллеры STM32. Во многих странах СНГ, использование STM32 в профессиональной сфере стало почти стандартом де факто. Знание этих микроконтроллеров позволит вам претендовать на гораздо более высокий оклад.

Фрилансерам
Современные проекты требуют больших вычислительных ресурсов и больших объемов памяти. Благодаря очень широкой линейке STM32 как нельзя лучше подходят для решения самых сложных современных задач, за которые заказчики готовы платить больше всего.
Чем лучше вы будете владеть инструментами для работы с stm32, тем быстрее и качественнее сможете решать самые сложные задачи. А глубокое понимание основ позволит избежать трудноуловимых ошибок, которые, как это не редко бывает, появляются уже после сдачи проекта заказчику.

Студентам
В настоящее время во многих вузах преподают основы архитектуры ARM на примере ядер Cortex-M и практику программирования stm32.
Основная сложность при изучении stm32 и ядер Cortex-M состоит в том, что очень мало литературы на русском языке, а та литература, которая есть слишком теоритезированна. Изучение ядра Cortex в отрыве от практики имеет очень низкую эффективность. Если теория из книги никак не подкреплена практикой, то большая часть материала остается совершенно непонятной.
В данном курсе есть много видео, которые посвящены изучению работы ядра Cortex. Большая часть теории сопровождается практическими примерами использования. Такой подход позволяет намного глубже понять основы работы ядер Cortex.

Ардуинщикам
Если вы увлекаетесь электроникой и Arduino и хотите вывести свое хобби на новый уровень, то вам не обойтись без использования stm32. Возможностей AVR микроконтроллеров сегодня хватает только на самые простые проекты.
Да, существуют платы на stm32, которые так же поддерживаются средой arduino, но этих плат очень мало по сравнению с более чем 1800 различных микроконтроллеров stm32, что значительно сужает окно выбора подходящего микроконтроллера. А из-за требований совместимости кода, среда arduino сильно урезает возможности STM32.
Возможно, вы опасаетесь, что переход будет слишком сложным, но это не так. Среда CubeIDE со встроенным конфигуратором начальной настройки и библиотека HAL позволяет значительно упростить порог вхождения в STM32. Программирование в среде CubeIDE становится таким же простым как и в среде Arduino!

Что вы получите, изучив данный курс?
  • Освоите мощный и современный инструмент для решения большинства современных задач
  • Пропадет неуверенность перед использованием всех микроконтроллеров stm32
  • Значительно повысете квалификацию в области разработки встраиваемых систем
  • Упорядочите свои занния по теме программирования STM32
  • Значительно ускорите разработку и отладку программ
  • Повысите надежность работы программ на stm32
Что особенного в этом курсе?
  • Последовательное изучение от простого к сложному. Такой подход позволяет освоить даже самые сложные темы.
  • Очень глубокое изучение внутреннего устройства микроконтроллеров stm32 и ядра Cortex в частности
  • Закрепление теоретических знаний на практике. Даже самая сложная для понимания теория станет простой после изучения нескольких практических примеров
Что вы найдете в курсе?
  • 100 видео по самым разным темам прямо или косвенно связанным с STM32
  • Шпаргалки по внутренней организации stm32, схемотехнике, настройке периферии и т.д
  • Исходные коды проектов из видео с подробными комментариями
Всего в курсе 118 видеоуроков Общей продолжительностью 43 часа

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.

Дополнительный раздел
Отладка c использованием вывода SWO

63.1 Введение в отладку через SWO (22 минуты)
Понятие вывода SWO. Активация вывода SWO. Модуль ITM ядра Cortex. Варианты использования вывода SWO: передача строковых данных, построение графиков, профилирование программы. Функция printf() и ее возможности. Программы для взаимодействия c выводом SWO. Программаторы и микроконтроллеры, подходящие для передачи данных через SWO. Переделка программатора для поддержки вывода SWO. Отличия в параметрах передачи данных по линии SWO для программаторов ST-Link версий 2, 2.1 и 3. Преимущества и недостатки использования отладки через вывод SWO.

63.2 Простой пример передачи текста (15 минут)
Простой практический пример для передачи текстовых сообщений через вывод SWO. Настройка программы через конфигуратор для передачи данных через вывод SWO. Настройка среды программирования CubeIDE и отладчика для приема данных через вывод SWO программатора. Настройка программного кода для работы функции printf(). Особенности передачи строки в функцию printf().

63.3 Вывод текстовой информации (13 минут)
Пример использования программы ST-Link Utility и Cube Programmer для приема данных через вывод SWO. Параметры соединения через вывод SWO. Пример передачи строк c кириллическими символами. Назначение символа переноса строки для передачи данных. Пример накопления данных в оперативной памяти при использовании функции printf(). Пример использования функции puts(). Пример оформления текстовых сообщений принимаемых через программу Cube Programmer. Ведение логов принимаемых сообщений.

63.4 Вывод переменных (37 минут)
Использование спецификаторов формата для вывода разных типов переменных. Вывод целочисленных беззнаковых и знаковых переменных. Некорректное использование спецификаторов формата. Вывод чисел в шестнадцетиричном формате. Вывод нескольких переменных в разных форматах. Вывод на консоль строк и символов. Отображение кириллических символов в кодировке unicode. Вывод переменных как символов. Вывод массивов из символов. Вывод адресов памяти. Вывод переменных c плавающей точкой. Вывод переменных в экспоненциальном представлении.

63.5 Форматирование текста (17 минут)
Вывод на консоль специальных символов. Применение экранирующих символов. Использование табуляции. Префикс 0x для вывода шестнадцетиричных чисел. Выравнивание по знакоместам положительных и отрицательных чисел. Выравнивание по левому и правому краю. Дополнение чисел ведущими нулями и пробелами. Выравнивание чисел c плавающей точкой. Выравнивание смешанных типов данных.

63.6 Особенности использования printf (13 минут)
Недостатки использования printf(). Объем занимаемой памяти. Объем кода при выводе чисел c плавающей точкой. Ассемблерный код printf(). Механизм передачи данных от функции printf() в модуль ITM. Функция _write(). Атрибут weak компилятора GCC. Функции ядра для взаимодействия c модулем ITM.

63.7 Отправка данных через ITM (21 минута)
Использование функций ядра для прямого взаимодействия c модулем ITM для отправки данных. Сравнение объемов памяти при отправке данных через printf() и напрямую через функции ядра. Разбор функции ядра Cortex для отправки данных через модуль ITM. Использование альтернативной функции отправки строковых данных для уменьшения размера программы. Тестирование трех способов отправки отладочных данных. Использование логического анализатора для тестировани скорости отправки отладочных данных. Отправка данных посимвольно и в виде строки. Скорость затрат на отправку данных при отключенной отладке. Проверки модуля ITM перед отправкой данных. Переполнение буфера данных ITM.

63.8 Отправка данных в разных форматах через ITM (15 минут)
Функция отправки символа через модуль ITM. Отправка строк. Разбор функции отправки данных в шестнадцетиричном формате. Разбор функции отправки данных в десятичном формате со знаком и без знака. Функции вывода данных c ведущими нулями и ведущими пробелами. Разбор функции для вывода чисел c плавающей точкой: выделение и вывод целой и дробной части.

63.9 Использование других каналов модуля ITM (25 минут)
Обзор регистров модуля ITM. Алгоритм отправки данных через модуль ITM. Регистры stimulus port для отправки данных. Доступ к регистрам через адреса. Аналог функции отправки символов через модуль ITM для ядер cortex-M. прием данных через разные каналы модуля ITM. Настройка панели ITM Stimulus Ports. Работа функции при отключенной отладке. Настройка CubeIDE для приема данных на разные каналы отладочного интерфейса. Быстрое добавление каналов в оконо Data Console. Очистка и сохранение данных из консоли.

63.10 Протокол передачи данных через вывод SWO (10 минут)
Состояние вывода SWO при разных состояниях системы отладки. Разбор протокола передачи данных на выводе SWO. Определение скорости передачи данных.

63.11 Скорость передачи данных через SWO (16 минут)
Обзор кода проекта для опеределения скорости передачи данных через вывод SWO. Время выполнения кода отправки данных. Время отправки пакета данных через вывод SWO. Накопительный буфер данных модуля ITM. Проверка заполнения буфера данных. Использование буфера данных для ускорения передачи данных.

63.12 Обзор других компонентов SWV (19 минут)
Меню инструментов SWV. Краткий обзор инструментов: Timeline Graph, Statistical Profiling, Exception Trace Log, Data Trace. Обзор проекта, который будет использоваться для демонстрации инструментов: работа c цифровым акселерометром и гироскопом. Обзор документации.

63.13 Окно настроек SWV (30 минут)
Окно настроек набора инструментов SWV. Разбор параметров панелей Clock Settings, Trace Events. Параметры PC Sampling, Timestamps, Data Trace, ITM Stimulus Ports. Параметры панели Trace Events: Cycle per instruction, Sleep cycles, Folded instruction, Exception overhead, Load Store Unit Cycles, Trace exceptions. Подробный разбор инструмента SWV Trace Log. Задержки и потери в пакетах временных меток. Указание количества циклов. Параметр выборки программного счетчика. Отслеживание моментов входа/выхода из прерываний. Определение времени между прерываниями. Подсчет количества циклов между двумя выборками программного счетчика. Подсчет времени выполнения обработчика прерывавния.

63.14 Инструмент SWV Exception Trace Log (22 минуты)
Предназначение инструмента. Обзор изменений в проекте для демонстрации инструмента. Настройка Trace exceptions и Timestamps. Типы событий в окне Trace exceptions. Некорректные временные метки. Пакеты Overflow. Периферия, которая вызывает прерывание. Причины задежки временной метки события возврата к программе. Вкладка статистики по прерываниям. Характеристики прерываний. Корректное и некорретное время на обработку прерываний. Пропускная способность линии SWO.

63.15 Инструмент SWV Statistical Profiling (13 минут)
Включение и настройка инструмента. Накопление данных программного счетчика. Анализ результатов сбора программного счетчика. Адреса расположения и размеры функций. Функии без исходного кода на языке Си. Изменение разрешения семплирования программного счетчика. Влияние скорости семплирования на колличество overflow пакетов. Сохранение накопленных результатов профилирования.

63.16 Инструмент SWV Data Trace (19 минут)
Основное назначение инструмента. Обзор изменений в проекте для демонстрации инструмента. Обзор окна Data Trace. Добавление переменных на отслеживание. Доступ на чтение и запись переменных. Добавление значения переменной и программного счетчика. Сбор данных по отслеживаемым переменным. Переход по адресу программы, где произошло изменение переменной. Опреедление времени между изменением переменной. Изменение параметров трассировки данных. Добавление на отслеживание локальной статической переменной. Добавление адресов памяти для отслеживания. Особенности отображения состояния переменных в окне Data Trace.

63.17 Инструмент SWV ITM Timeline Graph (12 минут)
Основное назначение инструмента. Настройка инструмента. Недостатки и особенности работы инструмента. Конфликт инструмента c темой оформления среды CubeIDE, варианты решений проблемы. Причины потери данных при построении графиков. Автоматическое масштабирование графика. Сохранение графика. Изменение временной шкалы.
Базовая версия курса + Раздел 63 (SWV)
Курс "Программирование микроконтроллеров stm32. Базовый курс" (темы 01..62)
+ Раздел 63. Отладка c использованием системы SWV (передача данных через вывод SWO)

Цена: 7500 руб.
https://stm32start.ru/main_page.html
 
Угорі