Старт ARM. RTOS часть 2-ая.

Доброе время суток продолжаем серию уроков по программированию микроконтроллеров ARM, сегодня продолжаем говорить про ОСРВ, то есть про FreeRTOS и ChibiOS. Снова для узания у нас STM32F429zi-DISCO. Речь сегодня пойдет об динамической изменении приоритетов задачи. Приоритет задачи — это важность задачи для планировщика, чем выше приоритет, тем планировщик быстрее ее начнет выполнять и тем меньше система потратить процессорного времени на выполнении задачи. Минимальный приоритет для задачи — 0, данный приоритет имеет задача бездействия. Дефолтная задача в наше программе будет иметь приоритет равный 1, а задача для обработки реакции от нажатия кнопки будет иметь приоритет равный 2. Соответственно при условии, что у нас вытесняющая многозадачность задачи с приоритетом равным 1 никогда не получат процессорного времени и не начнет своего выполнения. Для того что бы задача не висели в бездействии, мы с вами уровняем силы, и переопределим приоритеты задачи с приоритетами равными 1 на приоритеты равными 2. Что ж, приступим)
FreeRTOS + STM32F4

У нас есть 3 хэндела xTask1Handle, xTask2Handle и хэндел для кнопки. С помощью функции uxTaskPriorityGet мы берем значение дефолтных приоритетов от Task 1 и Task2 и пере присваиваем их с помощью функции vTaskPrioritySet на 2.
Динамическое изменение приоритетов для задач ChibiOS, имеет небольшую особенность так там нет дескриптора на задачу, а приоритет можно изменять только той задачи в которой вы в данный момент находитесь, которая имеет процессорное время выполнение.

В данном примере мы понижая и повышая приоритет задачи для обработки события нажатия кнопки, позволяем получить процессорное время задаче с более низким приоритетом.
На сегодня все!, всем пока!) увидимся на просторах mcu.by, как всегда вопросы оставляйте в коментах.

Отправить ответ

Оставьте первый комментарий!

Уведомлять о
avatar
wpDiscuz