我试图将一组参数传递给任务。所以我创建了一个结构并将其传递给我的任务,如下所示:
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)
提前致谢!