营业执照申请网站,wordpress搜索表单,郑州app软件公司,网络公司名字大全三字任务状态理论
我们是怎么实现#xff0c;两个同优先级的任务之间交替执行的呢#xff1f; 任务切换的基础#xff1a;tick中断#xff01; tick为1ms一个周期#xff0c;可以通过修改时钟配置修改#xff1b; running#xff1a;正在进行的任务3为running#xff…任务状态理论
我们是怎么实现两个同优先级的任务之间交替执行的呢 任务切换的基础tick中断 tick为1ms一个周期可以通过修改时钟配置修改 running正在进行的任务3为running ready任务1和任务2处于ready blocked阻塞状态等待某事比如小孩口中的饭还没吃完就得等吃完才喂 suspend暂停状态主动休息或者被命令休息 如何管理这些任务呢 链表readylistA-B-C
任务状态实验
创建三个任务 任务一进入suspend再resume回来
任务二进入blockeddelay一会再进入ready状态 vTaskDelay和vTaskDelayuntil dosomething的时间不定如何才能保证它的执行周期是不变的呢 vTaskDelay只能保证延时的时间不考虑dosomething的时间 vTaskDelay等待指定个数的Tick count才能ready继续执行
vTaskDelayuntil等待到指定的绝对时刻才能reday继续执行 区别
空闲任务及其钩子函数 idel task0 task11 task22 FreeRtos是封装好的不会让你随随便便修改它的源代码所以他开放了钩子函数让用户使用
任务调度
阻塞状态blocked的任务它在等待“事件”这个事件有两种类型时间相关的事件同步事件
有三个配置在Freertosconfig中可以决定我们的调度策略 configUSE_PREEMPTION 可以决定是否可以抢占 configUSE_TIME_SLICING 可以决定同优先级是否轮流进行无法进行时间片轮转 如果置于0除非任务主动放弃cpu进入blicked或suspend状态否则直接霸占其他任务无法执行 configIDLE_SHOULD_YIELD 可以决定空闲任务是否礼让别的任务