FreeRTOS使用心得(一)

FreeRTOS使用心得(一)

1、创建任务
整套FreeRTOS系统其实很简单,只需要创建不同的任务,然后启动就可以了。
所以在使用FreeRTOS前,首先得先了解任务的创建方式,具体函数如下:
xTaskCreate(xTask_Start,“Start_Task”,1024,NULL,3,&xHandle_Start);
参数说明:
xTask_Start : 任务入口函数的指针,通过该指针来标识要运行的任务函数。任务必须实现永不返回(即连续循环),或者应该使用 vTaskDelete 函数终止。
“Start_Task” :任务的描述性名称。这主要是为了方便调试。由 configMAX_TASK_NAME_LEN 定义的最大长度 - 默认为 16。
1024 :指定为字节数的任务堆栈的大小。使用时根据实际单片机字节大小修改数值
NULL :将用作正在创建的任务的参数的指针。当多个组件需要调用同一个任务时,使用该标识进行区分,正常单任务使用可直接置NULL。
3 :任务应该运行的优先级。包含 MPU 支持的系统可以通过设置优先级参数的位 portPRIVILEGE_BIT 来选择在特权(系统)模式下创建任务。例如,要创建优先级为 2 的特权任务,应将 uxPriority 参数设置为 ( 2 | portPRIVILEGE_BIT )。数值越高优先级越大,最高值根据配置文件来定义。
xHandle_Start :用于传回一个句柄,通过该句柄可以引用创建的任务。对任务进行删除或者引用时,可以通过直接操作句柄的方式来操作任务。例如删除开始任务时,就可以直接调用句柄:vTaskDelete(xHandle_Start);
2、管理任务
任务创建成功后,就可以创建开始任务管理所有任务(也可以直接创建,但任务较多时会导致主函数内容过于杂乱,所以直接使用开始任务函数创建),或者使用其他函数将任务分离出来也行。

TaskHandle_t xHandle_Start=NULL;
xTaskCreate(xTask_Start,"Start_Task",1024,NULL,3,&xHandle_Start);

任务创建完成后,放入初始化代码中就可以了。(arduino放入setup后,STM32放入main函数while之前,ESP32放入app_main函数while之前)。
创建开始任务函数实现,在该函数内创建其他需要使用的任务。

void xTask_Start()
{
     //在此任务中创建其他任务
     TaskHandle_t xHandle_1=NULL;
     xTaskCreate(xTask_1,"task1",1024,NULL,1,&xHandle_1); //任务一
      TaskHandle_t xHandle_2=NULL;
     xTaskCreate(xTask_2,"task2",1024,NULL,2,&xHandle_2); //任务二
      TaskHandle_t xHandle_3=NUL	L;
     xTaskCreate(xTask_3,"task3",1024,NULL,3,&xHandle_3); //任务三
     vTaskDelete(xTask_Start);//删除任务函数
}
//实现创建的任务
void xTask_1()
{
	for(;;)
	{
	
	vTaskDelay(1000);
	}
}
void xTask_2()
{
	for(;;)
	{
	
	vTaskDelay(1000);
	}
}

void xTask_3()
{
	for(;;)
	{
	
	vTaskDelay(1000);
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值