FreeRTOS基础知识

FreeRTOS任务特性:

  • 简单;

  • 没有使用限制;

  • 支持抢占;

  • 支持优先级;

  • 每个任务都有堆栈,但也导致了RAM使用量增大;

  • 如果使用强化在哪的话必须仔细考虑重入的问题;
    协程

  • FreeRTOS的协程已经不再更新维护,不用考虑了;
    FreeRTOS任务状态

  • 运行态

  • 就绪态

  • 阻塞态

  • 挂起态
    在这里插入图片描述
    任务优先级

  • 任务优先级决定了任务的执行优先级别,在FreeRTOS中任务优先级可选范围为:

  • 0~configMAX_PRIORITIES-1 //这是个宏定义,这个宏表示最大优先级

  • 数字越大,优先级越高
    在这里插入图片描述

  • 在“FreeRTOSConfig.h”文件中,有这个宏,但是这个宏不是说最大优先级的数量有32,而是说最大优先级共有32级,真正的级数是0-31。

  • 同一优先级下可以有多个任务

  • 在创建任务时,需要指定这个任务的任务优先级。

任务实现
在这里插入图片描述
任务实现如图所示,用户自己的代码就写在死循环中即可。

  • 需要注意的是,每个任务的死循环中需要一个可以引起任务调度的函数,就是那个第四步的函数:“vTaskDelay();”。
    一般任务创建后我们是不会退出的,但如果要退出,需要执行第5步中的函数:“vTaskDelete(NULL);”
    任务控制块
    在这里插入图片描述
  • 每个任务都会有一些属性,我们需要对其进行一些描述,好让系统知道关于这个任务的一些属性,比如这个任务的任务名字、任务堆栈、优先级等等,所以就需要任务控制块这个数据结构了。
  • 任务控制详情在“tasks.c”里面。
    任务堆栈
    在这里插入图片描述

在这里插入图片描述

  • 注意,任务堆栈大小共占多少字节是:“128*4=512”字节,不是128字节,如上图所示。
  • 任务堆栈的大小根据任务实际情况来调整。
  • 如果在调试国策怀念高中出现程序卡死,基本就是任务堆栈大小没有设定好,比如你如果在一个任务中申请了一个数组,这就比较大了,此时就要根据实际情况把任务堆栈设定的大点。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值