上次实验我们初步了解了RTOS的作用,这次实验我们主要学习RTOS的多任务并行和了解抢占运行的优势。
基于时间片的多任务运行基本机制
时间片:RTOS将CPU时间分成基本的时间片,每一个时间片的默认长度是1ms,也就是SisTick定时器的定时周期,在一个时间片内会有一个任务占用CPU执行任务,在时间片结束时会进行任务调度。
在抢占式运行时系统会按照优先级进行任务调度,同级别任务会轮流执行:即每个时间片结束时会切换同级别的任务,然后将自己的进度存入栈中;不同级别的会先执行高级别任务,高级别任务结束或者处于阻塞、挂起状态时,低级别任务才会执行;在低级别任务执行时要是有高级别任务进入就绪态,会立刻执行高级别的任务。
注意:在FreeRTOS中延时函数要使用vTaskDelay()函数,因为这个函数可以让任务在延时时释放CPU的使用权,然后系统会让其他任务使用CPU。
多任务编程实现
本次实验需要使用开发板上的LED2和LED3,用于在FreeRTOS中创建两个不同的任务,来验证任务的运行机制
CobeMX设置
首先

该实验介绍了RTOS如何实现基于时间片的多任务运行,详细讲解了抢占式运行机制,其中FreeRTOS中的vTaskDelay函数允许任务在延时中释放CPU。通过创建两个不同优先级的任务控制LED闪烁,验证了任务调度和优先级影响。
最低0.47元/天 解锁文章
1475





