Chapter 2. API Reference
(continued from previous page)
( 1UL | portPRIVILEGE_BIT ),// uxPriority - task priority, set the␣
,→portPRIVILEGE_BIT if the task should run in a privileged state.
cStackBuffer,// puxStackBuffer - the buffer to be used as the task stack.
// xRegions - Allocate up to three separate memory regions for access by
// the task, with appropriate access permissions. Different processors have
// different memory alignment requirements - refer to the FreeRTOS␣
,→documentation
// for full information.
{
// Base address Length Parameters
{ cReadWriteArray, 32, portMPU_REGION_READ_WRITE },
{ cReadOnlyArray, 32, portMPU_REGION_READ_ONLY },
{ cPrivilegedOnlyAccessArray, 128, portMPU_REGION_PRIVILEGED_READ_
,→WRITE }
}
};
int main( void )
{
TaskHandle_t xHandle;
// Create a task from the const structure defined above. The task handle
// is requested (the second parameter is not NULL) but in this case just for
// demonstration purposes as its not actually used.
xTaskCreateRestricted( &xRegTest1Parameters, &xHandle );
// Start the scheduler.
vTaskStartScheduler();
// Will only get here if there was insufficient memory to create the idle
// and/or timer task.
for( ;; );
}
Only available when configSUPPORT_STATIC_ALLOCATION is set to 1.
xTaskCreateRestrictedStatic() should only be used in systems that include an MPU implementation.
Internally, within the FreeRTOS implementation, tasks use two blocks of memory. The first block is used to
hold the task’s data structures. The second block is used by the task as its stack. If a task is created using
xTaskCreateRestricted() then the stack is provided by the application writer, and the memory used to hold the
task’s data structure is automatically dynamically allocated inside the xTaskCreateRestricted() function. If a
task is created using xTaskCreateRestrictedStatic() then the application writer must provide the memory used
to hold the task’s data structures too. xTaskCreateRestrictedStatic() therefore allows a memory protected
task to be created without using any dynamic memory allocation.
return pdPASS if the task was successfully created and added to a ready list, otherwise an error code defined
in the file projdefs.h
Parameters
• pxTaskDefinition: Pointer to a structure that contains a member for each of the normal
xTaskCreate() parameters (see the xTaskCreate() API documentation) plus an optional stack buffer
and the memory region definitions. If configSUPPORT_STATIC_ALLOCATION is set to 1 the
structure contains an additional member, which is used to point to a variable of type StaticTask_t -
which is then used to hold the task’s data structure.
• pxCreatedTask: Used to pass back a handle by which the created task can be referenced.
Example usage:
// Create an TaskParameters_t structure that defines the task to be created.
// The StaticTask_t variable is only included in the structure when
(continues on next page)
Espressif Systems 856
Submit Document Feedback
Release v4.4