创建两个任务但是共用一个任务函数,通过传递不同参数打印不同信息。
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++ )
{}
}
}