Кафедра Промышленная электроника НИУ МЭИ.
- Курс "Микропроцессорные устройства"
Александр Николаевич Смирнов
Электронная почта: smirnovalnik@mpei.ru
Практические занятия и лабораторные работы проводятся преподавателями выпускающих кафедр.
Курс предназначен для студентов бакалавриата четвертого года обучения факультета электронной техники. Курс знакомит с основами микропроцессорной техники, программированию микроконтроллеров на языке Ассемблер и C.
Студент должен обладать навыками программирования на хотя бы одном языке высокого уровня, знать основы аналоговой и цифровой схемотехники.
Курс состоит из двух частей: осенний семестр (часть 1) и весенний семестр (часть 2).
Цели первой части курса:
- изучение принципов построения микропроцессорных устройств;
- изучение языка программирования Ассемблер и его применения для встраиваемых микропроцессорных систем.
Цели второй части курса:
- изучение периферийных модулей микроконтроллеров на примере STM32F072RBT6;
- изучение языка программирования C и его применения для встраиваемых микропроцессорных систем.
- Лекции
- Лекция №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
cd ./microprocessor-units-course # перейти в директорию с репозиторием
git reset --hard # если вы меняли файлы, то необходимо "сбросить" репозиторий
git pull # "подтянуть" обновления
- docs - различная документация
- 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-е издание.
- Страница по stm32072rb от производителя
- Страница по stm32f072-disco от производителя
- Курс по системам на кристалле – SoC 101
Стенд состоит из нескольких плат с электронными компонентами: отладочная плата 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)
Разработка программ для микроконтроллера проводится в интегрированной среде разработки (IDE - Integrated Development Environment) 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
.
Скачать шаблон проекта для gcc
и vscode
с подробным описанием можно по ссылке.
💡 Примечание: Использование инструментов
gcc
иvscode
не обязательно. Все примеры практических задач и лабораторных работ сопровождаются проектом дляKeil uVision5
.
Если вы нашли ошибки или опечатки просьба сообщать о них через issues в GitHub
или писать на почту smirnovalnik@mpei.ru.
Если вы хотите улучшить содержание репозитория, то можете создать pull request
на добавление ваших изменений.