大概的格式如下:
int main( void )
{
if(xTaskCreate(test1, (const char*)"test1", 1024, NULL,5, NULL)!=pdPASS){
Printf(“create task error\n”);
}
/* 启动调度器,任务开始执行 */
vTaskStartScheduler();
for( ;; );
}
首先创建任务的接口:
portBASE_TYPE xTaskCreate( pdTASK_CODE pvTaskCode,
const signed portCHAR * const pcName,
unsigned portSHORT usStackDepth,
void *pvParameters,
unsigned portBASE_TYPE uxPriority,
xTaskHandle *pxCreatedTask );
pvTaskCode:任务的入口,是个永不退出的函数。 一般格式:void test( void *pvParameters );
pcName:任务的名字(一般无用)
usStackDepth:任务的大小,栈的深度
pvParameters:传入任务的参数
uxPriority:此任务运行在优先级,优先级的大小可以控制的,最大值在FreeRTOSConfig.h 中的configMAX_PRIORITIES-1,但是要注意优先级数越大,那么内核的开销越大
pxCreatedTask :句柄,用于删除等功能的调用
如:
if(xTaskCreate(test1, (const char*)"test1", 1024, NULL,5, NULL)!=pdPASS){
Printf(“create task error\n”);
}
调用的函数demo如下:
void test( void *pvParameters )
{
for(;;)
{
//用户的逻辑在这里 这个是永不返回的函数
}
vTaskDelete( NULL );
}
void test1(void *param)
{
for(;;)
{
printf("1\n");
}
//正常是不会到这里的
vTaskDelete( NULL );
}
void test2(void *param)
{
for(;;)
{
printf("2\n");
vTaskDelay(100);
}
vTaskDelete( NULL );
}
int main{
xTaskCreate(test1, (const char*)"test1", 1024, NULL,5, NULL);
xTaskCreate(test2, (const char*)"test2", 1024, NULL,5, NULL)
vTaskStartScheduler();
for( ;; );
}
void test1(void *param)
{
for(;;)
{
printf("1\n");
}
//正常是不会到这里的
vTaskDelete( NULL );
}
void test2(void *param)
{
for(;;)
{
printf("2\n");
}
vTaskDelete( NULL );
}
int main{
xTaskCreate(test1, (const char*)"test1", 1024, NULL,5, NULL);
xTaskCreate(test2, (const char*)"test2", 1024, NULL,4, NULL)
vTaskStartScheduler();
for( ;; );
}