Компоненты и технологии • №2 '2011 компоненты



Pdf көрінісі
бет15/129
Дата28.09.2023
өлшемі4.1 Mb.
#478975
1   ...   11   12   13   14   15   16   17   18   ...   129
Kurniz

xTaskCreate(), а уничтожаются xTaskDelete()
Функция xTaskCreate() является одной 
из наиболее сложных API-функций. Ее про-
тотип:
portBASE_TYPE xTaskCreate(pdTASK_CODE pvTaskCode,
const signed portCHAR * const pcName,
unsigned portSHORT usStackDepth,
void *pvParameters,
unsigned portBASE_TYPE uxPriority,
xTaskHandle *pxCreatedTask
);
xTaskCreate() в случае успешного созда-
ния задачи возвращает pdTRUE. Если же 
объема памяти кучи недостаточно для раз-
мещения служебных структур данных 
и стека задачи, то xTaskCreate() возвращает 
errCOULD_NOT_ALLOCATE_REQUIRED_
MEMORY. Функции xTaskCreate() передают-
ся следующие аргументы:
1. pvTaskCode — указатель на функцию, реа-
лизующую задачу (фактически — иденти-
фикатор функции в программе).
2. pcName — нуль-терминальная (заканчива-
ющаяся нулем) cтрока, определяющая имя 
функции. Ядром не используется, а служит 
лишь для наглядности при отладке.
3. usStackDepth — глубина (размер) собствен-
ного стека создаваемой задачи. Размер зада-
ется в словах, хранящихся в стеке, а не в бай-
тах. Например, если стек хранит 32-битные 
слова, а значение usStackDepth задано рав-
ным 100, то для размещения стека задачи 
будет выделено 4100 = 400 байт. Размер 
стека в байтах не должен превышать мак-
симального значения для типа size_t. Размер 
стека, необходимый для корректной работы 
задачи, которая ничего не делает (содержит 
только пустой бесконечный цикл, как за-
дача ATaskFunction выше), задается макро-
сом configMINIMAL_STACK_SIZE. Не ре-
комендуется создавать задачи с меньшим 
размером стека. Если же задача потребляет 
большие объемы стека, то необходимо за-
дать большее значение usStackDepth. Нет 
простого способа определить размер сте-
ка, необходимого задаче. Хотя возможен 
точный расчет, большинство програм-
мистов находят золотую середину между 
требованиями выделения достаточного 
размера стека и эффективного расхода па-
мяти. Существуют встроенные механизмы 
экспериментальной оценки объема ис-
пользуемого стека, например API-функция 


Достарыңызбен бөлісу:
1   ...   11   12   13   14   15   16   17   18   ...   129




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет