- Титульный лист, на котором указывается следующая информация: – название университета; – название факультета, кафедры; – название дисциплины; – номер и тема лабораторной работы; – вариант задания; – фамилия, инициалы и номер группы каждого исполнителя; – фамилия и инициалы преподавателя; – текущий год.
- Задание к лабораторной работе в соответствии с вариантом.
- Описание организации программы и структуры драйверов, блок-схема прикладного алгоритма.
- Дополнительные материалы, если они требуются по заданию конкретной лабораторной работы (руководство по использованию и т. п.).
- Исходные коды собственной разработки: основная программа, разработанные драйверы и библиотеки (если есть). Коды из стандартных и сторонних библиотек, а также созданные генератором STM32CubeMX, приводить не следует. При большом объеме исходных кодов можно включать только наиболее значимые в данной работе части (например, не включать код, разработанный для предыдущей лабораторной работы). Дополнительно, но не вместо исходных кодов, можно привести ссылку на репозиторий с полной версией проекта.
- Выводы, сделанные в процессе выполнения лабораторной работы.
- Получить базовые знания об интерфейсе
$I^{2} \mathrm{C}$ и особенностях передачи данных по данному интерфейсу. - Получить базовые знания об устройстве и принципах работы контроллера интерфейса
$I^{2} \mathrm{C}$ в микроконтроллерах и получить навыки его программирования.
Разработать программу, которая использует интерфейс
Подсистема опроса клавиатуры должна удовлетворять следующим требованиям:
- реализуется защита от дребезга;
- нажатие кнопки фиксируется сразу после того, как было обнаружено, что кнопка нажата (с учетом защиты от дребезга), а не в момент отпускания кнопки; если необходимо, долгое нажатие может фиксироваться отдельно;
- кнопка, которая удерживается дольше, чем один цикл опроса, не считается повторно нажатой до тех пор, пока не будет отпущена (нет переповторов);
- распознается и корректно обрабатывается множественное нажатие (при нажатии более чем одной кнопки считается, что ни одна кнопка не нажата, если это не противоречит требованиям к программе);
- всем кнопкам назначаются коды от 1 до 12 (порядок на усмотрение исполнителей).
Программа должна иметь два режима работы, переключение между которыми производится по нажатию кнопки на боковой панели стенда:
- режим тестирования клавиатуры;
- прикладной режим.
Уведомление о смене режима выводится в UART. В режиме тестирования клавиатуры программа выводит в UART коды нажатых кнопок. В прикладном режиме программа обрабатывает нажатия кнопок и выполняет действия в соответствии с вариантом задания.
- Изучить:
- разделы учебного пособия:
○ 1.6. Интерфейс
- электрическую принципиальную схему стенда в части сигналов интерфейса
$I^{2} \mathrm{C}$ и подключения к нему внешних микросхем, а также других устройств, если они требуются по варианту задания; - разделы справочного руководства RM0090:
о Inter-integrated circuit (I2C) interface;
- состав стандартных драйверов
$I^{2} \mathrm{C}$ из библиотеки HAL и содержимое создаваемых генератором файлов i2c.c/.h (появляются в проекте после настройки соответствующих блоков).
- Подготовить шаблон проекта для STM32CubeIDE, настроить тактовые частоты.
- Настроить входы и выходы микроконтроллера, таймеры, контроллеры I²
${ }^{2}$ и UART. - Разработать подсистему опроса клавиатуры и протестировать ее.
- Разработать необходимые драйверы управляемых светодиодов и/или излучателя звука (зависит от варианта).
- Разработать прикладную программу согласно варианту задания и протестировать ее.
Задания аналогичны вариантам лабораторной работы №3, за исключением того, что ввод символов должен выполняться не с клавиатуры через UART, а с помощью клавиатуры стенда. Выбор кнопок клавиатуры стенда, играющих роль кнопок клавиатуры компьютера должен выполняться по усмотрению исполнителей. В отчете необходимо привести описание функций кнопок в реализованной программе.