Skip to content

Latest commit

 

History

History
314 lines (232 loc) · 24.2 KB

README.md

File metadata and controls

314 lines (232 loc) · 24.2 KB

Курс "Микропроцессорные устройства"

Кафедра Промышленная электроника НИУ МЭИ.

Оглавление

Преподаватели

Александр Николаевич Смирнов

Электронная почта: smirnovalnik@mpei.ru

Практические занятия и лабораторные работы проводятся преподавателями выпускающих кафедр.

Обзор курса

Курс предназначен для студентов бакалавриата четвертого года обучения факультета электронной техники. Курс знакомит с основами микропроцессорной техники, программированию микроконтроллеров на языке Ассемблер и C.

Предварительные требования

Студент должен обладать навыками программирования на хотя бы одном языке высокого уровня, знать основы аналоговой и цифровой схемотехники.

Структура курса

Курс состоит из двух частей: осенний семестр (часть 1) и весенний семестр (часть 2).

Цели

Цели первой части курса:

  • изучение принципов построения микропроцессорных устройств;
  • изучение языка программирования Ассемблер и его применения для встраиваемых микропроцессорных систем.

Цели второй части курса:

  • изучение периферийных модулей микроконтроллеров на примере STM32F072RBT6;
  • изучение языка программирования C и его применения для встраиваемых микропроцессорных систем.

Часть 1 Основы микропроцессорной техники

  • Лекции
    • Лекция №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: Логическая функция (пример)
  • Зачет с оценкой

Часть 2 Микроконтроллер и периферийные модули

  • Лекции
    • Лекция №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: Язык программирования C (пример)
    • Лабораторная работа №2: Подсистема аналогового ввода/вывода МК (пример)
    • Лабораторная работа №3: Подсистема реального времени МК (пример)
    • Лабораторная работа №4: Подсистема последовательного ввода/вывода МК: UART (пример)
  • Экзамен

Лекции

На лекциях изучаются теоретические вопросы работы микропроцессорных систем, периферийных модулей, а также некоторые практические вопросы по программированию этих систем.

Практические занятия

Практические занятия проводятся преподавателями выпускающих кафедр. Порядок проведения занятий, темы занятий и их содержание могут отличаться от приведенного здесь.

Лабораторные работы

Лабораторные работы проводятся преподавателями выпускающих кафедр. Порядок проведения занятий, темы занятий и их содержание могут отличаться от приведенного здесь.

Выполнение лабораторных работ предполагает предварительную самостоятельную подготовку: изучение примеров, создание проекта и написание исходных текстов программы.

Лабораторные работы №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 # "подтянуть" обновления

Загрузка репозитория в виде zip архива

Перечень директорий репозитория

  • 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-е издание.

Полезные ссылки

Учебный стенд

Стенд состоит из нескольких плат с электронными компонентами: отладочная плата STM32F072B-DISCO, основная плата, ЖК индикатор, модуль беспроводной передачи данных.

Основная плата содержит исполнительные устройства и устройства ввода для микроконтроллера. Основная плата разработана на кафедре Промышленной Электроники НИУ МЭИ.

Отладочная плата STM32F072B-DISCO содержит изучаемый МК STM32F072RBT6, а также программатор ST-LINK/V2. Программатор позволяет загружать код программы, который подготовлен на персональном компьютере в постоянную память МК и затем наблюдать на экране монитора за исполнением этой программы.

Плата STM32F072RBT6 содержит небольшое количество устройств ввода и вывода. Основная плата расширяет возможности по вводу и выводу, что позволяет создать множество различных учебных заданий, используя индикаторы и всевозможные кнопки и переключателями.

  1. Отладочная плата STM32F072B-DISCO
  2. Цифро-буквенный ЖК индикатор со встроенным контроллером
  3. Переключатели для смены периферийных устройств
  4. Выходы ЦАП с разъемом BNC
  5. Вход АЦП по SPI с разъемом BNC
  6. Вход АЦП с разъемом BNC
  7. 16 RGB светодиодов (D1-D16)
  8. Переключатели для выбора канала АЦП между входами BNC и потенциометрами POT1, POT2
  9. Потенциометры (POT1 и POT2)
  10. Клавиатура, состоящая из 16 тактовых кнопок без фиксации
  11. Тактовые кнопки без фиксации (SB1-SB4)
  12. Переключатели (SW1-SW4)
  13. 4-х разрядный семисегментный индикатор
  14. Разъем для SD карты
  15. Разъем CAN
  16. Разъем USB-UART
  17. Разъем питания
  18. Модуль передачи данных (ZigBee, Wi-Fi, Bluetooth)

Установка и настройка инструментов разработки

Keil uVision5

Разработка программ для микроконтроллера проводится в интегрированной среде разработки (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.

Создание нового проекта для языка Ассемблер в Keil uVision5

Создание нового проекта для языка C в Keil uVision5

Настройка подключения ST-Link в Keil uVision5

Настройка симулятора

Работа в отладчике

Исправление ошибки загрузки программы в Keil uVision5

vscode и gcc

Разрабатывать программы также можно в редакторе кода с наборов инструментов gcc.

Скачать шаблон проекта для gcc и vscode с подробным описанием можно по ссылке.

💡 Примечание: Использование инструментов gcc и vscode не обязательно. Все примеры практических задач и лабораторных работ сопровождаются проектом для Keil uVision5.

Ошибки и опечатки

Если вы нашли ошибки или опечатки просьба сообщать о них через issues в GitHub или писать на почту smirnovalnik@mpei.ru.

Если вы хотите улучшить содержание репозитория, то можете создать pull request на добавление ваших изменений.