Видеокурс "Программирование микроконтроллеров на языке С"
3490
1121
0
1121

Видеокурс "Программирование микроконтроллеров на языке С"

  • Цена:
    3490

    ПОДРОБНОЕ ОПИСАНИЕ

    Автор: Максим Селиванов

    Авторский обучающий видеокурс по программированию микроконтроллеров на языке C. Узнайте как грамотно использовать все возможности языка Си для программирования микроконтроллеров! В чем главная сложность написания программ под микроконтроллеры или Arduino по сравнению с традиционным программированием для персональных компьютеров? Микроконтроллеры – это как промежуточное звено между программой и реальным миром. Все ошибки программы тут же становятся реальными! И цена ошибок возрастает многократно!


    Программирование микроконтроллеров на языке С. Введение в понятие указателей. (Максим Селиванов)
  • Урок №1. Введение (17 минут)

    • Из этого видео Вы узнаете особенности курса. Так же получите несколько полезных советов, связанных с изучением видеокурса, следуя которым, вы сэкономите свое время и качественнее усвоите материал.

    Урок №2. История языка С (36 минут)

    • Эволюция языков программирования: от машинных кодов и ассемблера до высокоуровневых языков. Особенности применения разных языков, их преимущества и недостатки. История создания и развития языка С. Основные причины популярности. Стандарты языка С.

    Урок №3. Язык С для микроконтроллеров (22 минуты)

    • Понятие встраиваемой системы. Отличия в архитектуре персональных компьютеров от архитектуры микроконтроллеров. Особенности программирования на языке С под разные архитектуры. Компиляторы и среды разработки. Отличия в компиляторах. Интегрированная среда Atmel Studio и компилятор GCC.

    Среда разработки Atmel Studio

    Урок №4.1 Установка среды программирования (17 минут)

    • Установка Atmel Studio 6.2. Стартовое окно Atmel Studio. Начальные настройки интерфейса. Открытие нескольких окон среды.
    • Открытие проектов из дополнительных материалов.
    • Пример переноса проекта созданного в Atmel Studio в среду AVR Studio

    Урок №4.2 Создание проекта (33 минуты)

    • Пример создания нового проекта в Atmel Studio. Различные типы проектов. Краткий обзор основных настроек Atmel Studio.
    • Краткий обзор настроек интерфейса. Свойства проекта. Обзор пунктов меню среды. Окно Solution Explorer. Краткий обзор элементов панели инструментов. Файлы проекта.Режимы Debug и Release. Настройки компилятора.

    Урок №4.3 Работа со встроенной утилитой программирования (38 минут)

    • Обзор возможностей встроенной программы для взаимодействия с программаторами. Настройка частоты прогамматора. Считывание и запись калибровочных коэффициентов. Автоматическая очистка и верификация FLASH - памяти. Считывание памяти. Окно настройки FUSE бит. Понятие загрузчика. Изменение вектора начального сброса. Встроенный детектор напряжения. Биты блокировки доступа к Flash и EEPROM памяти микроконтроллера. ELF формат прошивки.

    Урок №4.4 Некоторые полезные функции Atmel Studio (16 минут)

    • Подробный обзор полезных функций Atmel Studio. Функции стартовой страницы. Изменение цвета и шрифтов текстового редактора. Свойства проекта. Настройка оптимизации компилятора. Особенности отладки программ при включенной оптимизации. Настройка создаваемых файлов.
    • Запуск программы на симуляцию. Предупреждения и ошибки компиляции.
    • Автоматическая перепрошика после компиляции.

    Урок №4.5 Полезные функции текстового редактора (37 минут)

    • Возможности текстового редактора. Полезные сочетания клавиш. Возможности среды Atmel Studio. Горячие клавиши и функции текстового редактора, которые значительно упрощают и ускоряют работу при написании программ. Многострочное редактирование.
    • Работа с снипетами. Создание заготовок кода. Окна поиска и замены.

    Урок №4.6 Отладка программ в симуляторе (58 минут)

    • Запуск отладки. Указатель положения отладчика. Переход в тело функции, пропуск отладки функции, досрочный выход. Сброс программы. Выполнение до курсора. Пауза симуляции. Окно дизассемблера. Окна различных типов памяти микроконтроллера. Секции загрузчика FLASH-памяти. Окно процессор. Время выполнения команд. Регистры ввода-вывода. Инструмент отслеживания переменных Data Tips. Точки останова. Задание программных условий точек останова. Программные закладки.

    Урок №5. Создание первого проекта (20 минут)

    • Основные этапы и правила создания проекта. Заготовка проекта. Однострочные и многострочные комментарии. Горячие клавиши для комментирования. Подключение файла описаний. Назначение файла описаний. Подключение к проекту сторонних файлов. Назначение функции main. Возврат значения из функции. Выход из функции main.
    • Разбор ассемблерного кода пустой программы.

    Урок №6. Константы (15 минут)

    • Директива препроцессора define. Определение констант и имен. Файл описаний микроконтроллера. Заголовочные файлы, включаемые в проект. Синтаксис языка Си.

    Урок №7. Переменные (40 минут)

    • Понятие переменных в языке Си. Определение и объявление переменных. Типы данных в языке Си. Размер типов данных в памяти. Положительные и отрицательные числа. Хранение целых и дробных чисел. Тип данных char и его особенности. Правила задания имен для переменных. Задание пользовательских имен типов данных. Пользовательские типы заданные в файле stdint.h. Задание типа константы. Глобальные и локальные переменные. Определение переменных и задание начальных значений. Оптимизация переменных. Квалификатор volatile. Приведение типов переменных.

    Урок №8. Арифметические и поразрядные операции (27 минут)

    • Арифметические операции: сложение, вычитание, умножение, деление, остаток от деления. Сокращенная запись арифметических операций. Операции инкремента и декремента (префиксные и постфиксные формы операций). Поразрядные операции: поразрядное умножение, сложение, исключающее или, инверсия, сдвиг влево, сдвиг вправо. Сокращенная запись поразрядных операций. Переполнение переменных. Приведение типов переменных в операциях. Инверсия разрядов портов микроконтроллера.

    Урок №9. Логические операции (19 минут)

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

    Урок №10. Оператор цикла while (15 минут)

    • Оператор цикла while. Оформление конструкций циклов.
    • Задение условия выполнения цикла. Бесконечные циклы. Пустые циклы.
    • Префиксные и постфиксные операции в цикле. Оператор досрочного завершения цикла.
    • Оператор досрочного завершения текущей итерации цикла.

    Урок №11. Оператор цикла do while (5 минут)

    • Цикл do while
    • Задание условия. Однократное выполнение тела цикла.
    • Оператор досрочного завершения цикла.
    • Оператор досрочного завершения текущей итерации цикла.

    Урок №12. Оператор цикла for (16 минут)

    • Задание условий начала и продолжения цикла. Задание условий в теле цикла. Выполение тела цикла. Создание и использование локальной переменной в цикле. Эквивалентный цикл while. Досрочный выход из цикла. Досрочное завершение текущей итерации цикла

    Урок №13. Оператор ветвления if else (15 минут)

    • Разные типы конструкций с использованием операторов if else
    • Объединение нескольких условий в конструкции if.
    • Конструкция для выбора нескольких условий if-else-if

    Урок №14. Условная операция (11 минут)

    • Условная или тернарная операция.
    • Несколько вариантов записей условной операции.
    • Примеры использования условной операции.
    • Исполнение различных операций в условной операции.
    • Возврат из функции с использованием условной операции.

    Урок №15. Оператор множественного выбора switch (15 минут)

    • Описание конструкции оператора switch case.
    • Завершение конструкции оператором break.
    • Аналог конструкции в виде if-else-if.
    • Выполнение нескольких операторов в конструкции switch case.
    • Задание одинаковых действий для нескольких значений.

    Урок №16. Функции в языке Си (часть 1) (32 минуты)

    • Понятие функций. Преимущества и недостатки.
    • Оформление функций в языке Си. Возвращаемые и принимаемые значения. Досрочное завершение функций. Функция main( ). Программная задержка с использованием функций. Глобальные и локальные переменные в функциях. Вывод цифр на семисегментный индикатор.

    Урок №17. Функции в языке Си (часть 2) (31 минута)

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

    Урок №18. Массивы (часть 1) (14 минут)

    • Введение в понятие массивов. Инициализация массивов.
    • Нумерация элементов массива. Понятие размера массива. Считывание и запись элементов массива. Изменение массивов. Копирование массивов

    Урок №19. Массивы (часть 2) (36 минут)

    • Инициализация массива набором констант. Инициализация отдельных элементов. Передача массива в функцию. Сортировка массива. Выход за границы массива при чтении и записи. Определение размера переменной в памяти. Определение размера массива и количества элементов. Многомерные массивы. Инициализация многомерных массивов. Указание неполных списков инициализации. Доступ к многомерным массивам при помощи одномерных

    Урок №20. Строки (23 минуты)

    • Понятие строк в языке Си. Связь строк и символов. Управляющие символы.
    • Признак конца строки. Передача символьной строки в функцию. Функция вывода строк на терминальную программу ПК. Отличие символьного массива и строки символов. Символы возврата каретки и переноса строки.
    • Запись длинной строки символов с разбиением на несколько строк.
    • Вывод на терминальную программу ПК строк с кириллическими символами.

    Урок №21. Макросы (28 минут)

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

    Урок №22. Условная компиляция (17 минут)

    • Понятие условной компиляции. Директивы препроцессора. Применение условной компиляции. Использование директив определения/не определения идентификаторов. Комментирование участков кода при помощи условной компиляции. Директивы условной компиляции с несколькими условиями. Специальные директивы остановки компиляции с ошибкой и предупреждением.

    Урок №23. Модульное программирование. Теория (23 минуты)

    • Понятие модульного программирования. Преимущества разбиения на отдельные модули. Заголовочный файл и файл с исполняемым кодом. Построение проекта из нескольких модулей. Понятие библиотеки. Компиляция отдельных модулей. Этапы препроцессинга, компиляции, линковки и создания загрузочного модуля. Создание объектных файлов. Линковка программы.

    Урок №24. Создание библиотек и подключение заголовочных файлов (42 минуты)

    • Практика разбиения проекта на отдельные модули. Работа директивы #include. Создание заголовочных файлов. Создание пользовательских файлов с кодом Си. Включение заголовочных файлов в проект. Подключение к проекту пользовательских файлов. Назначение прототипов функций. Правила использования заголовочных файлов.
    • Заголовочный файл головного модуля.

    Урок №25. Спецификатор extern (41 минута)

    • Понятие спецификатора класса памяти extern и внешней переменной.
    • Правила использования внешних переменных. Глобальное переменные в модулях программы. Доступ к переменным в различных модулях программы. Понятие внешних функций.

    Указатели

    Урок №26.1 Адресация памяти (52 минуты)

    • Адресация переменных в ОЗУ микроконтроллера. Размещение памяти под переменные различных типов. Важное правило выбора разрядности переменных в программе. Типы памяти в микроконтроллере. Размещение переменных и массивов различных типов в ОЗУ микроконтроллера. Примеры использования памяти микроконтроллера при выполнении различных операций. Оператор взятия адреса переменных. Важное правило размещения элементов массива в памяти. Различия в расположении локальных и глобальных переменных в памяти микроконтроллера.

    Урок №26.2 Понятие указателей (38 минут)

    • Понятие переменных-указателей в языке Си. Создание указателей в программе. Указатели на различные типы переменных. Запись адреса в указатель. Операция разыменование указателя. Доступ к переменным различных типов через указатели. Использование указателей в функциях. Передача адресов переменных в функции.

    Урок №26.3 Сложные примеры использования указателей (часть 1) (28 минут)

    • Стандартные и нестандартные методы использования указателей в языке Си. Считывание и запись переменных через указатели на различные типы переменных. Выход за пределы адресов переменных
    • Несовместимые типы переменных и указателей. Побайтовый доступ к переменным через указатели. Приведение к типу указателя. Понятие адресной арифметики. Изменение адресов при инкременте указателя в зависимости от его типа. Сравнение указателей.

    Урок №26.4 Сложные примеры использования указателей (часть 2) (46 минут)

    • Доступ к отдельным байтам переменной с использованием операции приведения к указателю. Понятие нетипизированного указателя.
    • Применение нетипизированного указателя. Приведение нетипизированного указателя к переменным разных типов. Запись в указатель прпоизвольного адреса. Считывание памяти по произвольному адресу. Запись памяти по произвольному адресу.
    • Копирование памяти по блокам. Понятие константы NULL. Инициализация указателей значением NULL. Указатели на указатели.

    Урок №26.5 Указатели и регистры ввода-вывода (13 минут)

    • Доступ к регистрам ввода-вывода через указатели. Адреса регистров ввода-вывода. Разбор встроенных макросов для доступа к регистрам ввода-вывода. Обращение к регистрам ввода-вывода как к ячейкам ОЗУ. Приведение адреса к указателю на тип данных unsigned char.

    Урок №26.6 Указатели и функции (19 минут)

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

    Урок №26.7 Указатели и массивы (19 минут)

    • Связь между массивами и указателями в языке Си. Имя массива как адрес начала массива в памяти. Доступ к элементам массива при помощи указателя. Разыменование имени массива. Передача адреса массива в функцию.

    Урок №26.8 Указатели и строки (26  минут)

    • Доступ к строкам через указатель. Размещение строк в памяти.
    • Отличия в использовании массивов, указателей и директивы #define для хранения адресов начала строк в памяти. Использование указателей и массивов в функциях для обработки строки посимвольно.
    • Передача в функцию строк при помощи массивов, указателей и директивы #define. Передача в функцию адреса размещения строки с произвольного символа. Изменение строк. Защита от изменения строк.

    Урок №26.9 Массивы указателей (24 минуты)

    • Понятие массивов указателей. Инициализация массивов указателей.
    • Применение массивов указателей и размещение в памяти элементов массива. Массивы строк. Расположение адресов начала строк в оперативной памяти. Использование массивов указателей для печати строк. Передача в функцию массива указателей

    Урок №26.10 Указатели на функции (24 минут)

    • Понятие указателей на функции. Адреса расположения функции в программной памяти. Создание указателя на функции. Пример вызова функции через указатель. Создание и использование массива указателей на функции. Использование указателей на функции для перехода по произвольному адресу программной памяти.

    Урок №26.11. Примеры использования указателей на функции (19 минут)

    • Практические примеры использования указателей на функции. Использование указателей на функцию для перехода в секцию загрузчика. Понятие загрузчика. Расположение программы-загрузчика в программной памяти. Понятие конечных автоматов. Создание конечных автоматов с использованием указателей на функции.

    Структуры

    Урок №27.1 Понятие структур в языке С (20 минут)

    • Введение в понятие структурных типов данных в языке Си. Применение структур. Описание структуры. Создание переменной структурного типа.
    • Поля структуры. Инициализация переменной структурного типа. Расположение переменных структурного типа в памяти. Доступ к полям структуры. Основные операции с полями структур. Размер переменной структурного типа.

    Урок №27.2 Сложные примеры использования структур (13 минут)

    • Использование описания структур в заголовочных файлах. Задание пользовательского типа данных для создания переменных структурного типа. Совмещение описания структуры и создания переменной структурного типа. Инициализация переменных структурного типа.
    • Создание и использование локальных переменных структурного типа.
    • Использование в полях структур перменных структурного типа.

    Урок №27.3 Массивы структур и битовые поля (17 минут)

    • Понятие массива структур. Работа со структурами как элементами массива. Понятие битовых полей. Примеры в которых целесообразно использовать битовые поля. Примеры использования битовых полей.
    • Битовые поля в памяти микроконтроллера.

    Урок №27.4 Указатели на структуры (17 минут)

    • Понятие указателей на структуры. Создание указателей на переменные структурного типа. Запись адреса и разыменование указателя.
    • Специальная операция доступа к полям структуры через указатели.
    • Считывание элементов массива через указатель на структуру.

    Урок №27.5 Структуры и функции (16 минут)

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

    Урок №28. Перечисления (13 минут)

    • Понятие перечислений в языке С. Примеры их использования. Преимущество использования перечислений для создания именованных констант. Инициализация первого элемента в списке констант. Задание произвольных значений в середине списка. Создание нового типа данных перечисление. Создание переменных типа перечисление.

    Урок №29. Константы в программной памяти (47 минут)

    • Размещение констант в программной памяти микроконтроллера.
    • Проблема размещения и считывания констант из программной памяти.
    • Понятие Гарвардской и Фон Неймоновской архитектуры. Специальные макросы для сохранения констант в программной памяти и считывания констант из программной памяти. Адреса расположения констант в программной памяти. Работа с массивами и строками в программной памяти. Массивы строк в программной памяти.

    Урок №30. Прерывания (40 минут)

    • Обработка прерываний в языке Си. Подключение библиотеки обработки прерывания. Использование специальных макросов. Расположение векторов прерываний. Оформление процедур обработки прерывания. Специальные атрибуты макросов обработки прерывания.
    • Понятия кодов пролога и эпилога. Отключение генерации кода пролога и эпилога. Глобальное запрещение и разрешение прерываний. Важное правило использования глобальных переменных в процедурах обработки прерываний. Разрешение прерываний в теле процедуры обработки прерывания. Пример выполнения прерываний для которых не прописан индивидуальный обработчик.

    Урок №31. Оператор goto (20 минут)

    • Оператор безусловного перехода GOTO. Применение оператора. Понятие метки перехода. Основные правила использования оператора goto. Случаи оправдывающие использование оператора goto
    • Другие операторы безусловного перехода. Конструкции позволяющие заменить оператор goto.

    Встроенные библиотеки

    Урок №32.1 Программная задержка (16 минут)

    Пустые программные циклы. Подключение заголовочного файла библиотеки программной задержки.  Константа тактовой частоты. Основные правила использования функций библиотек. Факторы влияющие на точность программной задержки. Задержки в милисекундах и микросекундах. Некорректные величины задержек. Функции задержки в ассемблерных командах.

    Урок №32.2 Математические операции (23 минуты)

    • Специальные математические функции. Подключение математической библиотеки. Часто используемые математические константы. Возведение числа в степень, вычисление квадратного корня. Тригонометрические функции. Вычисление натурального и десятичного логарифмов. Функция округления до целых значений.

    Урок №32.3 Атомарные операции (33 минуты)

    • Понятие атомарных операций. Пример некорректного выполнения программы при обращении к переменной из прерывания. Подробный разбор в окне дизассемблера причин неправильной работы программы.
    • Варианты защиты операций с переменными в случае использования прерываний. Специальные макросы для атомарных и неатомарных операций.

    Выделение памяти

    Урок №32.4.1 Введение (8 минут)

    • Понятие статического и динамического распределения памяти.
    • Преимущества и недостатки статического и динамического выделения памяти.
    • Ситуации в которых используется динамическое выделение памяти.

    Урок №32.4.2 Массив с переменным размером (10 минут)

    • Понятие массивов с переменным размером.
    • Практическое применение массивов с переменным размером.
    • Пример программы с массивом создаваемым в процессе выполнения.
    • Правила использования массивов переменной длины.
    • Недостатки массивов переменной длины.

    Урок №32.4.3 Специальные функции выделения памяти (33 минуты)

    • Динамическое выделение памяти при помощи специальных средств языка С. Подробный разбор основных функций malloc(), calloc(), realloc(), free(). Важные правила использования выделенной памяти.
    • Сохранение информации о размере выделенного сегмента. Пример записи и чтения выделенного сегмента памяти. Понятие сегментации памяти. Возвращаемые значения функций выделения памяти. Изменение размера выделенной памяти.

  • Программирование микроконтроллеров на языке С. Введение в понятие указателей. (Максим Селиванов)

ПОХОЖИЕ ТОВАРЫ