include <Arduino_FreeRTOS.h>
include <FreeRTOSConfig.h>
include <FreeRTOSVariant.h>
include <task.h>
TaskHandlet TaskHandle1; TaskHandlet TaskHandle2; TaskHandlet TaskHandle3; TaskHandlet TaskHandle4; void setup() { // put your setup code here, to run once: Serial.begin(115200); Serial.println(F(“*****Setup function*****”)); Serial.println(F(“************************”)); delay(2000); xTaskCreate(TaskReadCalcPID, “Task1”, configMINIMALSTACKSIZE, NULL, 4, &TaskHandle1); // paramètre de la TASK ici. //xTaskCreate(TaskNxtParamP0ConsMes, “Task2”, configMINIMALSTACKSIZE, NULL, 4, &TaskHandle2); //xTaskCreate(TaskReadCalcPID, “Task3”, configMINIMALSTACKSIZE, NULL, 3, &TaskHandle3); //xTaskCreate(TaskNxtParamP0PID, “Task4”, configMINIMALSTACKSIZE, NULL, 1, &TaskHandle4); } void loop() { Serial.println(F(“Loop function”)); delay(4000); } /////////////////////////////// TASKS//////////////////////////////////////////////////// //************************************************1******************************************************************************* void TaskReadCalcPID(void *pvParameters) // Ici c’est la tache avec le rappel de ses paramètres: TaskReadCalcPID , Priorité=6/7 { while(1) { Serial.println(“*****START****TASK 1***********”); Serial.println(“*******************************”); Serial.println(“1ReadCalcPID : reafect priority 4 at: 1ReadCalcPID”); vTaskPrioritySet(TaskHandle_1,4); //Now task1 has priority 4 Serial.println(“1ReadCalcPID run: Creating Task2(ParamP0ConsMes)”); xTaskCreate(TaskNxtParamP0ConsMes, “Task2”, configMINIMALSTACKSIZE, NULL, 7, &TaskHandle2); } } //***********************************************2********************************************************************************** void TaskNxtParamP0ConsMes(void *pvParameters) // Ici c’est la tache : TaskNxtParamP0ConsMes Priorité=5/7 { while(1) { Serial.println(“2ParamP0ConsMes : Suspend 1ReadCalcPID”); vTaskSuspend(TaskHandle1); Serial.println(“2ParamP0ConsMes s’octroie Prorité=6″); vTaskPrioritySet(TaskHandle_2,6); //Now task2 has priority 6 Serial.println(“2ParamP0ConsMes run: Creating Task3(CourbP0)”); xTaskCreate(TaskNxtCourbP0, “Task3”, configMINIMALSTACKSIZE, NULL, 7, &TaskHandle_3); } } //***********************************************3*********************************************************************************** void TaskNxtCourbP0(void *pvParameters) // Ici c’est la tache : TaskNxtCourbP0 Priorité=4/7 { while(1) { Serial.println(“3CourbP0 delete 2ParamP0ConsMes”); vTaskDelete(TaskHandle2); Serial.println(“3CourbP0 s’octroie Prorité=6″); vTaskPrioritySet(TaskHandle3,6); //Now task3 has priority 6 Serial.println(“3CourbP0 run: Creating Task4(ParamP0PID)”); xTaskCreate(TaskNxtParamP0PID, “Task4”, configMINIMALSTACKSIZE, NULL, 6, &TaskHandle4); } } //*********************************************4************************************************************************************* void TaskNxtParamP0_PID(void *pvParameters) // Ici c’est la tache : TaskNxtParamP0 Priorité=3/7 { while(1) { Serial.println(“4ParamP0PID delete 3CourbP0″); vTaskDelete(TaskHandle3); Serial.println(“4ParamP0PID run: Make Resume task1(ReadCalcPID)”); vTaskResume(TaskHandle_1); Serial.println(“4ParamP0PID autodelete”); vTaskDelete(TaskHandle_4); } } ~~~ Serial Line Response : *****Setup function**********START****TASK 1***********
1ReadCalcPID : reafect priority 4 at: 1ReadCalcPID 1ReadCalcPID run: Creating Task2(ParamP0ConsMes) 2ParamP0ConsMes : Suspend 1ReadCalcPID 2ParamP0ConsMes s’octroie Prorité=6 2ParamP0ConsMes run: Creating Task3(CourbP0) 3CourbP0 delete 2ParamP0ConsMes 3CourbP0 s’octroie Prorité=6 3CourbP0 run: Creating Task4(ParamP0PID) 4ParamP0PID delete 3CourbP0 4ParamP0PID run: Make Resume task1(ReadCalcPID) 4ParamP0PID autodelete *****START****TASK 1***********
1ReadCalcPID : reafect priority 4 at: 1ReadCalcPID 1ReadCalcPID run: Creating Task2(ParamP0ConsMes) Loop function Loop function Loop function Loop function Loop function Loop function Loop function Loop function Loop function And blocked on Loop …. :-/ I do not understand too much about memory and stack management. the size of the stack here is configMINIMALSTACKSIZE, but must not agree? Thanks for all for my study Jeff