小编Sar*_*a M的帖子

为什么我可以传递整数作为任务参数,但无法传递结构变量?

我试图将一组参数传递给任务。所以我创建了一个结构并将其传递给我的任务,如下所示:

my_type_t parameters_set;

//... assigning values to parameters_set

xTaskCreate( vMyTask, "MyTask", STACK_SIZE, (void*)parameters_set, 2,
 &xHandle);
Run Code Online (Sandbox Code Playgroud)

在我的任务中,我尝试执行以下操作来检索结构值:

my_type_t received_parameters = (my_type_t) pvParameters;
Run Code Online (Sandbox Code Playgroud)

任务创建行在编译时触发以下错误:“无法转换为指针类型”,结构检索行触发“请求转换为非标量类型”错误。我知道如果我使用指针而不是变量本身,它会编译,但我不能这样做,因为创建任务的函数将会终止,并且任务将引用一个不再存在的变量。最后我将使用全局结构变量。

但我真正想理解的是为什么任务接受 int 值(不是通过引用),而不接受 typedef 结构?例如,以下代码片段可以毫无问题地构建和运行:

//Inside the function that creates the task
int x = 0;

xTaskCreate( vMyTask, "MyTask", STACK_SIZE, (void*)x, 2,
 &xHandle);

//Inside the Task
int received_parameter = (int) pvParameters;
Run Code Online (Sandbox Code Playgroud)

提前致谢!

c operating-system task freertos

1
推荐指数
1
解决办法
6120
查看次数

标签 统计

c ×1

freertos ×1

operating-system ×1

task ×1