FreeRTOS学习应用

FreeRTOS任务任务状态

就绪态:处于就绪态的任务还没有运行,因为有一个同优先级或更高优先级的任务正在运行。
阻塞态:任务进入阻塞态即任务在等待队列、信号量、事件组、通知或互斥信号量时会进入阻塞状态。
挂起状态:任务进入挂起状态后不能被调度器调用进入运行状态
任务状态之间转换

任务优先级

1.任务优先级可以分为32个等级,任务优先级最好设置满足应用的最小值,能够减小RAM的消耗。
2.数字越低表示任务的优先级越低,调度器总是有限调用高优先级任务获得处理器使用权。

任务函数

1.硬件要执行什么任务都是在任务函数中实现,任务函数的返回类型一定要为void类型,任务的参数也是void类型指针,任务函数名可以根据实际情况进行定义。
2.不能从任务函数中返回或退出,如果一定要从任务中退出的话那一定要调用函数vTaskDelete(NULL)来删除此任务。
3.FreeRTOS的延时函数,可以调用切换的API函数替代,如请求信号量、队列等,甚至直接调用任务调度器。常用的是FreeRTOS的演示函数。

任务控制块

FreeRTOS每个任务都有一些属性进行存储,FreeRTOS把这些属性集合到一起用一个结构体来表示,这个结构体叫做人物控制块:TCB_t

任务堆栈

FreeRTOS 能够实现任务之间的切换是因为有任务堆栈的存在, 任务调度器在执行任务切换的时候会将当前的任务CPU寄存器的值等保存在此任务的任务堆栈中,等到下次切换回这个任务时就会先用堆栈中保存的值来恢复现场。

任务创建函数

用这个函数创建任务需要从FreeRTOS的堆中分配内存,因此必须提供内存管理文件,新建任务默认是就绪状态,如果没有比他更高优先级那么这个任务立即进入运行状态。
动态创建
静态创建任务需要用户指定存储空间
静态任务创建

删除任务函数

vTaskDelete(TaskHandle_t xTaskToDelete)
参数 xTaskToDelete:要删除的任务

任务创建参数定义

  • 动态创建任务,定义任务所需参数
    在这里插入图片描述
  • 初始化硬件和时钟
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 静态创建任务
    在这里插入图片描述
  • 任务挂起、恢复、中断函数中恢复一个任务
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值