创建两个任务但是共用一个任务函数,通过传递不同参数打印不同信息。

1、头文件声明

#include "FreeRTOS.h"
#include "task.h"
#include "supporting_functions.h"

// 延时
#define mainDELAY_LOOP_COUNT        ( 0xffffff )

2、声明任务函数

// 任务函数声明
void vTaskFunction( void *pvParameters );

3、定义任务参数

const char *pcTextForTask1 = "Task 1 is running\r\n";
const char *pcTextForTask2 = "Task 2 is running\r\n";

4、创建任务

int main( void )
{

   // 创建任务1,并传递参数 
    xTaskCreate(    vTaskFunction,            /* 指向任务函数 */
                    "Task 1",                               /* 任务名 */
                    1000,                                    /* 任务堆栈 */
                    (void*)pcTextForTask1,        /*任务参数 */
                    1,                                          /* 优先级. */
                    NULL );                                 /*任务 handle. */

    // 创建任务2,并传递参数
    xTaskCreate( vTaskFunction, "Task 2", 1000, (void*)pcTextForTask2, 1, NULL );

    // 启动任务调度
    vTaskStartScheduler();   
    for( ;; );
    return 0;
}

5、定义任务

void vTaskFunction( void *pvParameters )
{
   char *pcTaskName;
   volatile uint32_t ul;

    // 强制类型转换
    pcTaskName = ( char * ) pvParameters;
    for( ;; )
    {
        // 打印传递的参数
        vPrintString( pcTaskName );

        // 延时
        for( ul = 0; ul < mainDELAY_LOOP_COUNT; ul++ )
        {}
    }
}