FreeRTOS
2021-08-19 09:48:34 0 举报
AI智能生成
FreeRTOS学习框架图
作者其他创作
大纲/内容
裸机
大循环
前后台系统
循环 + 中断
缺点
没有实时性
FreeRTOS Kernel
本质:Task机制
任务(Task)
任务特点
有独立运行环境,独立堆栈,同一时间只有一个任务在运行,具体运行由调度器来决定
调度
调度器
决定执行具体哪个任务,并确保任务切换的时候保存其上下文环境在堆栈中
抢占式调度
高优先级不等低优先级任务执行完
协作式调度
等待任务执行完成,主动释放CPU
任务状态
就绪态
运行态
阻塞态
比如delay、消息队列、信号量等影响
有一个超时时间
不会直接进入运行态
挂起态
不会直接进入运行态
优先级
0最低 configMAX_PRIORITIES-1最高
任务控制块
结构体 tskTCB/TCB_t
存储每个任务的属性
相关API
任务创建
创建函数
xTaskCreate
自动创建堆栈
需要内存管理文件 一般heap_4.c
xTaskCreateStatic
configSUPPORT_STATIC_ALLOCATION 定义为 1
程序员自己实现堆栈
任务函数
作为xTaskCreate的参数 pxTaskCode
大循环,没有返回值
删除任务
vTaskDelete
任务申请的堆栈和控制块内存会自动被释放 需给定一定运行时间
任务中pvPortMalloc 申请的内存需调用pvPortFree手动回收
挂起/恢复
协程
为资源少的MCU准备的,现在不做支持
协程共用堆栈
协程是通过宏定义实现的
0 条评论
下一页