1 xTaskCreate( vTaskCode, "NAME", STACK_SIZE, &ucParameterToPass, tskIDLE_PRIORITY, &xHandle );
创建任务,具体参数有任务函数入口指针即函数名,任务名字,分配栈大小,任务函数参数,任务优先级,任务句柄等参数。
1 void vTaskCode( void * pvParameters ) 2 { 3 for( ;; ) 4 { 5 // Task code goes here. 6 } 7 }
上面的格式是具体任务函数的写法。
1 vTaskDelete( xHandle );
也可以用vTaskDelete删除任务,释放掉任务所占资源。
1 static xQueueHandle xQueueHandle1=NULL; 2 xQueueHandle1=xQueueCreate(1,10);
创建一个队列总长为1,项长为10,这样可以存储10个字节。
1 xQueueSend(xQueueHandle1,(void *)&data,10/portTICK_PERIOD_MS);
这是向队列发送,参数有队列句柄,发送数据指针,延时设置
1 if(xQueueReceive(xQueueHandle1,&datarecv,portMAX_DELAY)) 2 { 3 printf("datarec=%s\n",datarecv); 4 fflush(stdout); 5 }
队列数据接收时,用接收函数,判断是否收到数据,如果收到数据可以通过指针对数据进行处理。
1 xQueueSendFromISR( xQueue, pvItemToQueue, pxHigherPriorityTaskWoken ) 2 xQueueReceiveFromISR( QueueHandle_t xQueue, void * const pvBuffer, BaseType_t * const pxHigherPriorityTaskWoken )
当不是在任务中发送和接收队列时而是在中断中,需要用到的是以上两个函数