Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

suspended task deletion program stops and does not switch to another task #4

Open
rohank27696 opened this issue Jun 1, 2021 · 0 comments

Comments

@rohank27696
Copy link

Board = ESP32
version = 1.0.6

CODE

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#if CONFIG_FREERTOS_UNICORE
static const BaseType_t app_cpu = 0 ;
#else
static const BaseType_t app_cpu = 1;
#endif

//const char msg[] = "qwerty is aqsws"; //STATEMENT - 1
const char msg[] = "qwqwmqkqkw kkwmdkwdksd ksmdksmdks ksmdksmd"; //STATEMENT - 2
//static const int led_pin = 2;

//TAsk Handlers
static TaskHandle_t task_1 = NULL;
static TaskHandle_t task_2 = NULL;

void startTask1( void *parameters)
{
int msg_len = strlen(msg);

while(1)
{
Serial.println();
for(int i =0 ; i < msg_len ;i++)
{
Serial.print(msg[i]);
}
Serial.println();
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}

void startTask2( void *parameters)
{

while(1)
{
Serial.print('*');
vTaskDelay(100 / portTICK_PERIOD_MS);
}
}

void setup() {
// put your setup code here, to run once:
// pinMode( led_pin ,OUTPUT );
Serial.begin(300);

vTaskDelay(1000 / portTICK_PERIOD_MS);

Serial.println("----FREE RTOS DEMO ----");

Serial.println("setup and loop task running on core ");
Serial.print(xPortGetCoreID());
Serial.print(" with priority ");
Serial.println(uxTaskPriorityGet(NULL));

//task to run forever
xTaskCreatePinnedToCore( //USE xTaskCreate() in vanilla FreeRTOS
startTask1, //Function to be called
"Task 1", //NAME of Task
1024, //Stack Size ( bytes in esp32 ,words in vanilla)
NULL, //Parameters to pass to function,
1, //Task priority ( 0 to configMAX_priorites(25 for esp32 ) -1 i.e 0 to 24)
&task_1, //parameters to pass to functions
app_cpu); //Run on One Core for demo purpose

xTaskCreatePinnedToCore( //USE xTaskCreate() in vanilla FreeRTOS
startTask2, //Function to be called
"Task 2", //NAME of Task
1024, //Stack Size ( bytes in esp32 ,words in vanilla)
NULL, //Parameters to pass to function,
2, //Task priority ( 0 to configMAX_priorites(25 for esp32 ) -1 i.e 0 to 24)
&task_2, //parameters to pass to functions
app_cpu); //Run on One Core for demo purpose
}

void loop() {
// put your main code here, to run repeatedly:

for( int i = 0 ; i < 3 ; i++ )
{
vTaskSuspend(task_2);
vTaskDelay(2000 / portTICK_PERIOD_MS);
vTaskResume(task_2);
vTaskDelay(2000 / portTICK_PERIOD_MS);

}

if( task_1 != NULL ){
vTaskDelete(task_1);
task_1 =NULL;
}

}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Problem :
when statement 1 is selected program run smoothly i.e task 2 keeps printing "*" continously after deletion of task 1,
but if statement 2 is selected program gets stuck .
whats happens if suspended task is deleted in free rtos?
STATEMENT1
STATEMENT2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant