Hi,
have the xTaskCreate()-function always be started out of the main()-function? I cant start both tasks by using my DCLTASK()-function in similar way to the code snippet below.
I assume there is a problem with my DCLTASK()-function because if I will use the xTaskCreate()-function out from the main()-function, everything works fine
Can someone give me a hint?
# header file
struct rtosTask
{
pdTASK_CODE pvTaskCode;
signed portCHAR pcName;
unsigned portSHORT usStackDepth;
void *pvParameters;
unsigned portBASE_TYPE uxPriority;
xTaskHandle *pxCreatedTask;
};
typedef struct rtosTask RTOSTASK;
void DCLTASK(RTOSTASK task);
# function DCLTASK
void DCLTASK(RTOSTASK task)
{
xTaskCreate(task.pvTaskCode, task.pcName, task.usStackDepth, task.pvParameters, task.uxPriority, task.pxCreatedTask);
}
# main()-function
RTOSTASK task1, task2;
// Task 1
xTaskHandle xHandle1;
task1.pcName = "Task1";
task1.pvTaskCode = vTask1;
task1.uxPriority = 1;
task1.pxCreatedTask = NULL;
task1.usStackDepth = 1000;
task1.pvParameters = NULL;
// Task 2
xTaskHandle xHandle2;
task2.pcName = "Task2";
task2.pvTaskCode = vTask2;
task2.uxPriority = 2;
task2.pxCreatedTask = NULL;
task2.usStackDepth = 1000;
task2.pvParameters = NULL;
// dont work!
// DCLTASK(task1);
// DCLTASK(task2);
// works! but I dont understand the difference to DCLTASK()
xTaskCreate(task1.pvTaskCode, task1.pcName, task1.usStackDepth, task1.pvParameters, task1.uxPriority, task1.pxCreatedTask);
xTaskCreate(task2.pvTaskCode, task2.pcName, task2.usStackDepth, task2.pvParameters, task2.uxPriority, task2.pxCreatedTask);