多任务
-
对于单任务系统就是常说裸机大while循环,有的时候也需要加一些中断服务函数完成一些处理,相比于多任务而言上面的单任务系统也叫做前后台系统,即(中断服务函数叫前台程序,大while叫后台程序)
前后台的实时性差,前后台系统各个任务都是排着队等着轮流执行不管你的优先级高低都要等着,优点资源消耗少。在应用大的场合就优点不够用了 -
多任务会把大的问题进行分而治之。把大的问题分成小的问题。即这些小任务是并发的(实现这些东西就是任务调度器)freeRTOS是一个抢占式的实时多任务系统。
高优先级的任务可以打断低优先级的任务的运行而取得CPU的使用权,这样就保证那些紧急任务的运行。高优先级的任务执行完以后重新把CPU的使用权归还给低优先级的任务,这就是抢占式多任务的系统的基本原理
任务状态
- 运行态
- 就绪态
刚刚创建好的任务是处于就绪态的 - 阻塞态
- 挂起态
任务优先级
- 每一个任务都可以分配一个从0~(configMAX_PRIORITIES-1)的优先级
- 其数字越大,优先级越高
任务实现
任务控制块
任务堆栈
- 任务堆栈用来保存任务现场(cpu寄存器值),创建任务的时候需要指定任务堆栈,任务堆栈的变量类型为StackType_t,
此处的大小就是128*4byte
freertos特点
- 没有使用限制
- 支持抢占
- 支持优先级
- 每个任务都拥有堆栈导致了RAM使用量增大
- 如果使用抢占的话的必须仔细的考虑重入的问题