Keil, Milandr, FreeRTOS. Нет ничего проще.
Создаем и проект для Миландр и подключаем с помощью Manage Run-Time Environment операционную систему FreeRTOS

Вы также часто пользуетесь кейлом как и я? Программируете микроконтроллеры компании Миландр? Вы хотите легко и просто подключить и использовать в своём проекте FreeRTOS? Тогда эта маленькая заметка для вас.
План действий:
- создаём проект;
- выбираем используемые пакеты;
- конфигурируем операционку;
- запускаем и пользуемся.
Создаём проект
Прежде чем начать я надеюсь вы уже установили Keil и скачали все необходимые пакеты?
Должно быть как-то так. Всё что мы будем использовать обведено красным.
Если да - продолжаем.
Черед меню Project -> New uVision Project...
Создаём проект и в качестве устройства выбираем свой микроконтроллер, в моём случае это Cortex-M3 -> MDR1986BE92
Выбираем используемые пакеты
После выполнения предыдущего пункта плана сразу открывается окно Manage Run-Time Environment
, которое и позволяет выбрать необходимые пакеты.
Минимальный набор показан на картинке.
Клацаем ОК и переходим к следующему пункту плана
Конфигурируем операционку
Для настройки необходимо открыть файл FreeRTOSConfig.h
и изменить несколько значенией:
configTOTAL_HEAP_SIZE
- указывает размер кучи в байтах, по-умолчанию установлено4096
, чего для простеньких проектов хватит;configMINIMAL_STACK_SIZE
- указывает минимальный размер стека для задачи, по-умолчанию установлено130
, для большенства задачь хватает;configUSE_TIMERS
- странно почему он изначально выставлен в1
, хотя мы таймеры не планировали использовать, устанавливаем0
;configLIBRARY_LOWEST_INTERRUPT_PRIORITY
- здесь устанавливается значение минимального приоритета аппаратных прерываний, в данном случае нам нужно число15
, нужно понимать что меньше номер - выше приоритет, это можно почитать в спецификации на микроконтроллер в разделе Прерывания и исключения;configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY
- прерывания с приоритетом от0
до(configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY-1)
не должны использовать обычные RTOS функции, только с суфиксомISR
.
Необходимо сразу после #include <stdint.h>
добавить #include "MDR32Fx.h"
иначе макросы для вычисления приоритетов не подхватят значение __NVIC_PRIO_BITS
и сработают неправильно. Код скомпилируется, но операционка не запустится.
Запускаем и пользуемся.
Тут уж всё просто и литературы предостаточно.
Я писал про работу FreeRTOS на микроконтроллере Миландр: Подключаем FreeRTOS к Миландр.
Настоятельно советую почитать два документа опубликованых на сайте FreeRTOS: