Меню курса

Скриншоты:

Нажмите на миниатюры изображений для просмотра

Список тем курса с кратким описанием и длительностью видео

1. Введение (17 минут)

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

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

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

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

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

4. Среда разработки 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. Точки останова. Задание программных условий точек останова. Программные закладки.

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

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

Разбор ассемблерного кода пустой программы.

06. Константы (15 минут)

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

 

 

07. Переменные (40 минут)

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

 

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

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

09. Логические операции (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)

Понятие прототипов функций.

Статические переменные и их приминение в функциях

Автоматические переменные в функциях.

Создание и инициализация переменных в функциях.

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

18. Массивы (часть 1)

Введение в понятие массивов. Инициализация массивов.

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

19. Массивы (часть 2)

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

20. Строки

Понятие строк в языке Си. Связь строк и символов. Управляющие символы.

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

Запись длинной строки символов с разбиением на несколько строк.

Вывод на терминальную программу ПК строк с кириллическими символами.

21. Макросы

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

22. Условная компиляция

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

23. Модульное программирование. Теория

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

24. Создание библиотек и подключение заголовочных файлов

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

Заголовочный файл головного модуля.

25. Спецификатор extern

Понятие спецификатора класса памяти extern и внешней переменной.

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

26. Указатели

26.1 Адресация памяти

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

26.2 Понятие указателей

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

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

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

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

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

Доступ к отдельным байтам переменной с использованием операции приведения к указателю. Понятие нетипизированного указателя.

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

Копирование памяти по блокам. Понятие константы 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. Структуры

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. Встроенные библиотеки

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

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

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

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

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

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

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

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

32.4.1 Введение (8 минут)

Понятие статического и динамического распределения памяти.

Преимущества и недостатки статического и динамического выделения памяти.

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

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

Понятие массивов с переменным размером.

Практическое применение массивов с переменным размером.

Пример программы с массивом создаваемым в процессе выполнения.

Правила использования массивов переменной длины.

Недостатки массивов переменной длины.

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

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

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

56 видеоуроков

общей длительностью 23 часа 20 минут!

Приобретая этот курс, вы получите:

Очень глубокое изучение языка Си

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

Подробный разбор каждой темы на конкретных примерах

Благодаря этому программу можно сразу применять для решения конкретных задач. Большинство примеров можно сразу применять на практике, так как примеры взяты из реальных программ.

От простого к сложному

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

Видеоформат позволяет намного лучше усваивать информацию

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

Позволяет обучаться в любое время

Вы сможете изучать курс в любое время дня и ночи. И на работе и дома.

Разобраны почти все темы языка Си от простых до самых сложных, описание которых сложно найти в учебниках

Благодаря хорошему знанию языка С, Вы сможете в своих устройствах создавать более сложную функциональность. А благодаря универсальности языка Си Вы сможете понимать чужие программы, корректировать их  и писать свои программы почти под любые микроконтроллеры от младших моделей AVR и PIC до самых "навороченных" STM32 и MSP430.

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

Вам не нужно больше обращаться к другим учебникам или видео. Все что нужно уже собрано в одном месте, проверено и адаптировано для применения на практике.

Личная ответственность за качество материала

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

Бесплатные консультации

Без поддержки не останется ни один покупатель курса. На все вопросы по материалам курса вы получаете ответ в течение 1..3 суток. Таким образом, Вам не нужно больше пытаться задавать вопросы на форумах, а получать почти хамский ответ с предложением внимательно почитать 1000 страничный стандарт языка С.

По вопросам заказа и оплаты курса вы можете обращаться

на e-mail: support@micro-controller.ru или через форму обратной связи (справа на странице)

Партнерская программа

Данное учебное пособие предназначено исключительно для частного пользования. Учебное пособие запрещено к приобретению в коллективное пользование.

Любое незаконное использование учебного пособия (копирование, обмен, публичное вещание, несанкционированное распространение и прочее) запрещено и преследуется согласно действующему законодательству!