FreeRTOS系统初识

FreeRTOS是一个迷你的实时操作系统内核。作为一个轻量级的操作系统,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等,可基本满足较小系统的需要。

下面分不同篇幅分别介绍各部分的功能,本次介绍任务管理功能。

任务管理:

FreeRTOS任务常用的调度方案为:固定优先级抢占式调度。

所谓固定优先级,即在任务初始化函数中固定初始化任务的优先级。

所谓抢占式即为,当有任务处于就绪态或者优先级改变时,处于更低优先级的任务处于运行态时,其处于就绪态的任务会抢占当前正在运行的更低优先级的任务。

任务的堆栈大小设置原则:栈深度X栈宽度    注:栈深度不能超过Size_t所能表示的最大值。

任务创建API:BaseType_t xTaskCreate(TaskFunction_t pxTaskCode,
const char * const pcName,
const uint16_t usStackDepth,
void * const pvParameters,
UBaseType_t uxPriority,
TaskHandle_t * const pxCreatedTask )

函数与参数说明:该API初始化创建一个任务,人物名为pcName,任务优先级为uxPriority,usStackDepth为使用的堆栈的大小,栈宽度为4byte,栈深度为usStackDepthpxTaskCode为待执行的任务的函数。

相关DEMO:

xTaskCreate( vTask1,     /* 任务函数  */
                 "vTask1",   /* 任务名    */
                 512,         /* 任务栈大小,单位word,也就是4字节 */
                 NULL,         /* 任务参数  */
                 2,           /* 任务优先级*/
                 &xHandleTaskLED ); /* 任务句柄  */

 

void vTask1(void * pvParameters)
{
    TickType_t xLastWakeTime;


    const TickType_t xFrequency = 2 * configTICK_RATE_HZ;


    xLastWakeTime = xTaskGetTickCount ();
    for( ;; )
    {
   
        vTaskDelayUntil( &xLastWakeTime, xFrequency );

         printf("Task1\r\n");

    }
}

以上即为创建任务和相应任务执行函数的例程。

任务优先级的切换API:

void vTaskPrioritySet( TaskHandle_t xTask, UBaseType_t uxNewPriority )

参数说明:xTask为创建任务时的任务句柄。uxNewPriority 为需要修改后的任务优先级。

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值