An open API service indexing awesome lists of open source software.

https://github.com/hummel009/embedded-systems-software

ПОВС - лабораторные работы, конспект БГУИР
https://github.com/hummel009/embedded-systems-software

bsuir bsuir-labworks labs rust stm32f103rbt6

Last synced: 3 months ago
JSON representation

ПОВС - лабораторные работы, конспект БГУИР

Awesome Lists containing this project

README

        

Мои лабораторные работы для BSUIR/БГУИР (белорусский государственный университет информатики и радиоэлектроники).

Предмет - POVS/ПОВС (программное обеспечение встроенных систем).

## Полезная информация

* https://github.com/Ilyat1337/stm32-rust-template — репозиторий преподавателя с инструкцей по установке, настройке и т. д., одним словом, всё необходимое для разработки и сдачи лаб.
* https://github.com/stm32-rs/stm32f1xx-hal/tree/master/examples — репозиторий с образцами кода на Расте.
* Если лаба не работает, значит, я испортил её воплощением рекомендаций преподавателя после сдачи (работать вслепую без платы неудобно). Вернитесь на коммиты до 1 декабря 2024.

## Условия

### Лабораторная работа 1

По истечении некоторого времени после нажатия кнопки включается светодиод (led). Использование прерываний обязательно.

### Лабораторная работа 2

Суть игры состоит в том, чтобы запомнить случайную последовательность мигания светодиодов и воспроизвести её, нажимая на соответствующие кнопки. В начале каждого уровня воспроизводится последовательность мигания светодиодов, которые были выбраны на предыдущих уровнях. Далее случайным образом выбирается и мигает один из трёх светодиодов (LED_1, LED_2, LED_3). Игрок должен воспроизвести данную последовательность, нажимая на кнопки BTN_1, BTN_2 и BTN_3. Если игрок воспроизвёл последовательность правильно, он переходит на следующий уровень. Если допустил ошибку – игра заканчивается.

Программа может находиться в следующих состояниях:

* Ожидание начала игры. Горит светодиод LED_4. На дисплее отображается рекорд – максимальный номер уровня, который игрок успешно завершил. При нажатии на кнопку BTN_1 начинается игра, светодиод LED_4 отключается.
* Игра. Отображение последовательности. На дисплее отображается номер текущего уровня (начиная с 1). Осуществляется отображение последовательности, которую должен запомнить игрок, путём поочерёдного мигания светодиодами. На каждом уровне к последовательности добавляется один случайный светодиод (на первом уровне мигает всего 1 светодиод). Любые нажатия на кнопки в данном состоянии игнорируются.
* Игра. Ввод запомненной последовательности. Игрок вводит запомненную последовательность, нажимая на кнопки. При нажатии на кнопку загорается соответствующий ей светодиод. Первое неправильное нажатие переводит программу в состояние «Отображение результата уровня».
* Игра. Отображение результата уровня. Если игрок корректно воспроизвёл последовательность, загораются и гаснут три светодиода (символизируя переход на следующий уровень), номер уровня увеличивается на 1 и программа переходит в состояние «Отображение последовательности». Иначе на дисплее выводится надпись «Err» (символизируя то, что пользователь допустил ошибку), и программа переходит в состояние «Ожидание начала игры».

Использование прерываний обязательно.

### Лабораторная работа 3

Необходимо разработать программу, которая будет непрерывно генерировать дискретные значения сигнала заданной формы (в зависимости от варианта) и отправлять их на компьютер по интерфейсу USART, модуль USART2. Для отображения сигнала на компьютере можно использовать готовые решения (например, программу SerialPlot, лежит в папке “ПОВС/программы”).

Предусмотреть возможность изменять параметры генерируемого сигнала. Набор параметров определяется вариантом задания (частоту дискретизации изменять не требуется). Текущий изменяемый параметр выбирается с помощью кнопки BTN_1. Порядковый номер изменяемого параметра отображается с помощью светодиодов (если выбран первый параметр, горит светодиод LED_1, если выбран второй – LED_2, и т.д.). Нажатие кнопки BTN_3 увеличивает значение выбранного параметра на заданный шаг, нажатие на кнопку BTN_2 уменьшает. Шаг изменения параметра, а также минимальные и максимальные значения выбираются студентом. Отображаемый на компьютере сигнал должен изменять свою форму в реальном времени.

При работе с модулем USART необходимо использовать механизм прямого доступа к памяти (DMA, Direct Memory Access).

Главный цикл программы не должен содержать постоянного опроса состояния пинов (или постоянной проверки значений переменных) и задержек. Для обработки нажатия кнопок необходимо использовать прерывания. Увеличение номера дискретного значения должно производиться по прерыванию таймера. Обработчики прерываний должны содержать минимум кода (в идеале только помечать, что прерывание произошло). Код, содержащий логику по обработке, должен вызываться из главного цикла. Пока прерываний нет, микропроцессор должен переходить в экономичный режим работы путём выполнения инструкции WFI.

### Лабораторная работа 4

Изменение цвета RGB светодиода с помощью инфракрасного пульта (подойдёт пульт от телевизора или ИК-порт телефона). Использование ШИМ обязательно.

## Приложения

В папке docs лежит конспект моего авторства. Самый полный конспект (на момент 2024 года), содержащий почти все слайды с лекций и текст.