Готова очередная публикация обзора возможностей RTOS MAX. В предыдущей статье мы разобрались с теорией, а сегодня пришло время практики.
Часть 1. Общая информация Часть 2. Ядро RTOS MAX Часть 3. Структура простейшей программы Часть 4. Полезная теория Часть 5. Первое Приложение (данная статья) Часть 6. Инструменты синхронизации потоков Часть 7. Средства обмена данными между задачами Часть 8. Работа с прерываниями Приступая к работе с контроллерами принято мигать светодиодами.
Я нарушу эту традицию.
Во-первых, это просто скучно.
Во-вторых, светодиоды потребляют слишком большой ток.
Не спешите думать, что я экономлю каждый милливатт, просто по ходу работы эта экономия будет для нас крайне важна.
Опять же, то, что мы увидим ниже, практически невозможно увидеть на светодиодах.
Итак, пока генератора проектов нет, берем проект по умолчанию для нашей макетки и любимого компилятора (я взял .
\maksRTOS\Compilers\STM32F4xx\MDK-ARM 5\Projects\Default) и скопируйте его под другим именем (мне удалось .
\maksRTOS\Compilers\STM32F4xx\MDK-ARM 5\Projects\Test1) .
Вам также следует удалить атрибут «Только для чтения» со всех файлов.
Каталог файлов проекта довольно спартанский.
DefaultApp.cpp DefaultApp.h main.cpp MaxConfig.h Файл main.cpp относится к каноническому примеру, файлы DefaultApp.cpp и DefaultApp.h описывают пустой класс, наследуемый от Application. Мы будем использовать файл MaksConfig.h для изменения параметров системы.
Если вы откроете проект, то обнаружите, что к нему подключено огромное количество файлов операционной системы.
В свойствах проекта также имеется сумасшедшее количество настроек.
Так что не стоит даже надеяться создать проект с нуля.
Вам придется смириться с тем, что его нужно либо скопировать из пустого проекта по умолчанию, либо создать с помощью автоматических утилит. Чтобы уточнить, я разрываюсь между «правильным» и «читабельным».
Дело в том, что правильно будет начать создавать файлы для задач, с отдельным файлом заголовка и отдельным файлом кода.
Однако читатель будет в замешательстве относительно того, что сделает автор.
Этот подход хорош при создании видеоуроков.
Поэтому я пойду другим путём — начну добавлять новые классы в файл DefaultApp.h. Это в корне неверно в практической работе, но в документе код получится более-менее читабельным.
Так.
Мы не будем мигать светодиодами.
Мы изменим состояние пары контактов контроллера и посмотрим результаты на осциллографе.
Давайте создадим класс задачи, который занимается этим движением.
Драйверами пользоваться пока не умеем, поэтому будем обращаться к портам по старинке.
Выделим на плате пару свободных портов.
Пусть это будут PE2 и PE3. О том, что они свободны, я сделал вывод из следующей таблицы, содержащейся в описании платы STM32F429-DISCO:
Сначала сделаем класс, перемещающий ножку PE2, потом переделаем его в шаблонную форму.
Перейдем к файлу DefaultApp.h (как мы помним, для реальной работы это неверно, но для текста понятно) и создадим класс, наследуемый от Task. Что туда следует добавить? Правильно, конструктор и функция Execute().
Отлично, пишем (первая и последняя строки оставлены как опорные, чтобы было понятно, где именно пишем):
Теги: #OSRV max rtos #Программирование микроконтроллеров#include "maksRTOS.h" class Blinker : public Task { public:
-
Чек, Томас
19 Oct, 24 -
Микроблоги На Mail.ru Набирают Популярность
19 Oct, 24 -
Основные Законы Информационной Безопасности
19 Oct, 24 -
Компания Folding@Home Заработала Петафлопс
19 Oct, 24