• Source
    1. void vBlinkRedLed(void* parameters) {
    2. int a;
    3. for(;;) {
    4. HAL_GPIO_TogglePin(LD4_GPIO_Port,LD4_Pin); // Toggle red LED.
    5. //vTaskDelay(250/portTICK_RATE_MS); // Delay 250mS.
    6. for(a=0;a<2000000; a=a+1); // Delay ??? sec.
    7. }
    8. }
    9.  
    10. void vBlinkGreenLed(void* parameters) {
    11. int a;
    12. for(;;) {
    13. HAL_GPIO_TogglePin(LD3_GPIO_Port,LD3_Pin); // Toggle green LED.
    14. //vTaskDelay(500/portTICK_RATE_MS); // Delay 500mS.
    15. for(a=0;a<1000000; a=a+1); // Delay ??? sec.
    16. }
    17. }
    18.  
    19. void vMainTask(void* parameters) {
    20. // Initial.
    21. xTaskCreate(vBlinkRedLed, "vBlinkRedLed", configMINIMAL_STACK_SIZE, NULL, 1, NULL);
    22. xTaskCreate(vBlinkGreenLed, "vBlinkGreenLed", configMINIMAL_STACK_SIZE, NULL, 1, NULL);
    23.  
    24. // Run forever.
    25. for(;;) {
    26. }
    27.  
    28. // Below code should NOT be executed.
    29. vTaskDelete(NULL); // To delete current task.
    30. }
    31.  
    32. int main(void) {
    33. ...
    34.  
    35. // Create the main task and start scheduler if pass.
    36. if(xTaskCreate(vMainTask,"vMainTask",configMINIMAL_STACK_SIZE,NULL,0,NULL)!=pdPASS) {
    37. // Failed to create main task, to alert or do something...?
    38. }
    39. else {
    40. // Start scheduler.
    41. vTaskStartScheduler();
    42. }
    43.  
    44. while(1);
    45. ...
    46. }