Кафедра Промышленная электроника НИУ МЭИ.
- Курс "Микропроцессорные устройства"
Александр Николаевич Смирнов
Электронная почта: smirnovalnik@mpei.ru
Практические занятия и лабораторные работы проводятся преподавателями выпускающих кафедр.
Курс предначен для студентов бакалавриата четвертого года обучения факультета электронной техники. Курс знакомит с основами микропроцессорной техники, программированию микроконтроллеров на языке Ассемблер и C.
Целями первой части курса являются:
- изучение принципов построения микропроцессорных устройств
- изучение языка программирования Ассемблер и его применения для встраиваемых микропроцессорных систем
Целями второй части курса являются:
- изучение периферийных модулей микроконтроллера STM32F072RBT6
- изучение языка программирования C и его применения для встраиваемых микропроцессорных систем
Студент должен обладать навыками программирования на одном языке высокого уровня, знать основы аналоговой и цифровой схемотехники.
Курс состоит из двух частей: осенний семестр (часть 1) и весенний семестр (часть 2).
- Лекции
- Лекция №1: Принципы организации цифровых систем управления и преобразования цифровых сигналов
- Лекция №2: Структура микропроцессорной системы
- Лекция №3: Память в микропроцессорной системе
- Лекция №4: Память в микропроцессорной системе
- Лекция №5: Устройства ввода/вывода
- Лекция №6: Система команд центрального процессора
- Лекция №7: Система команд центрального процессора
- Лекция №8: Структура центрального процессора
- Лекция №9: Структура центрального процессора
- Лекция №10: Структура центрального процессора
- Лекция №11: Карта памяти и селектор адреса
- Лекция №12: Исключения и прерывания
- Лекция №13: Прямой доступ к памяти
- Лекция №14: Модульный принцип построения микроконтроллера
- Лекция №15: Системные модули микроконтроллера
- Лекция №16: Подсистема тактирования микроконтроллера
- Практические занятия
- Практическое занятие №1: Команды загрузки данных (пример)
- Практическое занятие №2: Команды обработки данных (пример)
- Практическое занятие №3: Команды ветвления (пример)
- Практическое занятие №4: Команды вызова подпрограмм (пример)
- Практическое занятие №5: Поиск наибольшего элемента в массиве (пример)
- Практическое занятие №6: Сортировка массива (пример)
- Практическое занятие №7: Порт ввода/вывода общего назначения (пример)
- Практическое занятие №8: Мигающий светодиод (пример)
- Лабораторные работы
- Зачет с оценкой
- Лекции
- Лекция №1: Микроконтроллер
- Лекция №2: Порты ввода/вывода общего назначения
- Лекция №3: Подсистема прерываний
- Лекция №4: Аналоговый ввод/вывод
- Лекция №5: Таймер-счетчик общего назначения
- Лекция №6: Каналы выходного сравнения таймера-счетчика
- Лекция №7: Каналы входного захвата таймера-счетчика
- Лекция №8: Последовательный ввод/вывод: UART
- Лекция №9: Последовательный ввод/вывод: SPI
- Лекция №10: Последовательный ввод/вывод: I2C
- Лекция №11: Последовательный ввод/вывод: CAN
- Лекция №12: Контроллер прямого доступа к памяти
- Лекция №13: Подсистема тактирования
- Практические занятия
- Практическое занятие №1: Язык программирования C (пример)
- Практическое занятие №2: Порты ввода/вывода МК (пример)
- Практическое занятие №3: Подсистема аналогового ввода/вывода МК (пример)
- Практическое занятие №4: Подсистема прерываний МК (пример)
- Практическое занятие №5: Подсистема реального времени МК: "бегущий огонь" (пример)
- Практическое занятие №6: Подсистема реального времени МК: регулирование яркости (пример)
- Практическое занятие №7: Подсистема последовательного ввода/вывода МК: UART (пример)
- Дополнительное практическое занятие №1: Подсистема последовательного ввода/вывода МК: I2C (пример)
- Дополнительное практическое занятие №2: Подсистема последовательного ввода/вывода МК: SPI (пример)
- Лабораторные работы
- Экзамен
На лекциях изучаются теоретические вопросы работы микропроцессорных систем, периферийных модулей, а также некоторые практические вопросы по программированию этих систем.
Практические занятия проводятся преподавателями выпускающих кафедр. Порядок проведения занятий, темы занятий и их содержание могут отличаться от приведенного здесь на усмотрение преподавателя.
Лабораторные работы проводятся преподавателями выпускающих кафедр. Порядок проведения занятий, темы занятий и их содержание могут отличаться от приведенного здесь на усмотрение преподавателя.
Выполнение лабораторных работ предполагает предварительную самостоятельную подготовку: создание проекта и написание исходных текстов программы.
Лабораторные работы №1, №2, №3 первой части и №1 второй части могут быть выполнены на симуляторе. Остальные работы выполняются на учебном стенде.
Первая часть курса заканчивается зачетом с оценкой, вторая - экзаменом.
Материалы курса размещены на сайте GitHub,
который является большим хранилищем программ (исходных текстов)
под управлением системы контроля версий git
.
Репозиторий непрерывно обновляется и поэтому рекомендуется периодически "подтягивать" изменения.
Если вы не знакомы с git
, то можете скачивать архив проекта по указанной ниже инструкции.
git clone https://github.com/smirnovalnik/microprocessor-units-course.git
- docs - различная документация
- arm_official - официальная документация (технические описания, руководства и т.д.) на процессор ARM Cortex-M0
- asm_lang - шпаргалка по ассемблеру ARM
- c_lang - шпаргалка по языку C
- learning_stand - документация (спецификации, схемы электрические принципиальные, сборочные чертежи) на Учебный стенд
- mcu_st_official - официальная документация (технические описания, руководства и т.д.) на МК STM32F072RBT6 на английском языке
- peripheral - описание регистров специальных функций МК STM32F072RBT6
- misc - различные полезные документы
- exam - вопросы к зачету и экзамену, примеры билетов
- examples - примеры лабораторных работ и задачи для практических занятий
- hardware - исходные файлы проекта Учебный стенд в Altium Designer
- img - различные картинки используемые в README файлах
- lectures - слайды и тексты программ лекций
- programs - программы для установки на ПК
- tests - проекты для тестирования Учебного стенда
- templates - шаблоны проектов
- Харрис Сара Л., Харрис Дэвид М. "Цифровая схемотехника и архитектура компьютера: RISC-V"
- Харрис Сара Л., Харрис Дэвид М. "Цифровая схемотехника и архитектура компьютера. Дополнение по архитектуре ARM"
- Угрюмов Е. П. "Цифровая схемотехника"
- Joseph Yiu "The Definitive Guide to ARM Cortex-M0 and Cortex-M0+ Processors 2nd Edition"
- Козаченко В.Ф., Алямкин Д.И., Анучин А.С., Жарков А.А., Лашкевич М.М., Савкин Д.И., Шпак Д.М. "Практический курс микропроцессорной техники на базе процессорных ядер ARM-Cortex-M3/M4/M4F"
- Для обучения программированию на языке C обязательна к прочтению и решению всех упражнений книга Керниган Б., Ритчи Д. "Язык программирования C" 2-е издание.
Конструктивно стенд состоит из нескольких плат с электронными компонентами: отладочная плата STM32F072B-DISCO, основная плата, ЖК индикатор, модуль беспроводной передачи данных.
Основная плата содержит исполнительные устройства и устройства ввода для микропроцессорного контроллера. Эта плата разработана на кафедре Промышленной Электроники НИУ МЭИ.
Отладочная плата STM32F072B-DISCO содержит изучаемый МК STM32F072RBT6, а также программатор ST-LINK/V2. Программатор позволяет загружать коды программы для микроконтроллера, которые подготовлены в ПК, в постоянную память МК и затем наблюдать на экране монитора ПК за исполнением этой программы микроконтроллером.
Плата STM32F072RBT6 содержит небольшое количество устройств ввода и вывода информации. Плата с внешними элементами расширяет возможности по вводу и выводу, что позволяет создать множество различных учебных заданий, используя индикацию и всевозможные кнопки и переключателями.
- Отладочная плата STM32F072B-DISCO
- Цифро-буквенный ЖКИ индикатор со встроенным контроллером
- Переключатели для смены периферийных устройств
- Выходы ЦАП с разъемом BNC
- Вход АЦП по SPI с разъемом BNC
- Вход АЦП с разъемом BNC
- 16 RGB светодиодов (D1-D16)
- Переключатели для выбора канала АЦП между входами BNC и потенциометрами POT1, POT2
- Потенциометры (POT1 и POT2)
- Клавиатура, состоящая из 16 тактовых кнопок без фиксации
- Тактовые кнопки без фиксации (SB1-SB4)
- Переключатели (SW1-SW4)
- 4-х разрядный семисегментный индикатор
- Разъем для SD карты
- Разъем CAN
- Разъем USB-UART
- Разъем питания
- Модуль передачи данных (ZigBee, Wi-Fi, Bluetooth)
Разработка программ для микроконтроллера проводится в интегрированной среде разработки (Integrated Development Environment - IDE) Keil MDK Lite Edition. Для загрузки потребуется регистрация на сайте Keil. Процесс установки ничем не отличается от установки любой другой программы для Windows.
💡 Примечание: Избегайте русскоязычных названий директорий как в пути установки программы, так и в путях к вашим проектах. Некоторые компоненты среды разработки могут не работать.
Эта версия обладает практически полной функциональностью профессиональной версии, но с ограничением на размер скомпилированной программы в 32 кБайта. Для лабораторных работ и практических занятий данного курса этого более чем достаточно.
В Keil MDK Lite Edition
есть симулятор, поэтому работу программы
можно проверить без отладочной платы. Однако данный симулятор поддерживает
только центральный процессор, но не периферийные модули микроконтроллера.
Keil MDK Lite Edition изначально ничего не знает о микроконтроллерах
фирмы ST. Поэтому потребуется скачать и установить пакет с библиотеками для stm32f0
по ссылке
Keil.STM32F0xx_DFP.2.1.0.pack.
💡 Примечание: Использование инструментов
gcc
иvscode
не обязательно. Все примеры практических задач и лабораторных работ сопровождаются проектом вKeil uVision5
.
Установка всех компонентов будет происходить в командной строке. Последовательность действий зависит от операционной системы.
Для работы потребуется кросс-компилятор arm-none-eabi-gcc
, утилита сборки make
, отладчик openocd
и
текстовый редактор Visual Studio Code
с расширениями.
Открыть командную строку в режиме администратора.
-
Скачать и установить пакетный менеджер
Chocolatey
Пакетный менеджер позволит быстро устанавливать необходимые программы не прибегая к поиску установочных файлов в интернете.
Установка выполняется командой:
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
Проверить установку следует командой:
choco --version
Если установка прошла успешно, то в командной строке напечатается версия программы, например
0.10.15
-
Установить кросс-компилятор
arm-none-eabi-gcc
и другие инструмент:choco install gcc-arm-embedded choco install make choco install openocd
Проверка правильности установки:
make --version arm-none-eabi-gcc --version openocd --version
Каждая команда должна вернуть свою версию.
-
Скачать и установить текстовый редактор vscode.
-
Установка в системах с пакетным менеджером
apt
:sudo apt install bin-utils sudo apt install arm-none-eabi-gcc sudo apt install openocd
Проверка правильности установки:
make --version arm-none-eabi-gcc --version openocd --version
Каждая команда должна вернуть свою версию.
-
Скачать и установить текстовый редактор vscode.
-
Установка в системах с пакетным менеджером
brew
:brew tap ArmMbed/homebrew-formulae brew install arm-none-eabi-gcc brew install openocd
Проверка правильности установки:
make --version arm-none-eabi-gcc --version openocd --version
Каждая команда должна вернуть свою версию.
-
Скачать и установить текстовый редактор vscode.
Инструкция применима для всех операционных систем.
Загрузить и установить с сайта версию Visual Studio Code в соответствие с вашей операционной системой.
Установить расширения (extensions):
-
Для работы с кодом на языке C/C++ - C/C++ for Visual Studio Code
-
Для визуализации отладки - Cortex-Debug
-
Для подсветки синтаксиса ассемблера - Arm Assembly
-
Для подсветки синтаксиса скрипта компоновщика - LinkerScript
Если вы нашли ошибки или опечатки просьба сообщать о них через issues в GitHub
или писать на почту smirnovalnik@mpei.ru.
Если вы хотите улучшить содержание репозитория, то можете создать pull request
на добавление ваших изменений.