1.硬件环境
Proteus仿真环境,使用PIC单片机仿真运行代码,单片机选用了FreeRTOS源码demo里使用的PIC24FJ128GA010,搭建原理图如下所示:
2软件环境
使用MPLAB V5.25编译代码。FreeRTOS版本:FreeRTOS Kernel V10.0.0 。硬件配置使用MCC生成。
3.测试不同优先级下的任务调度
设置任务1的优先级为3,设置任务2的优先级为2;(注意,优先级数字越大,其优先级越高),设置了时间片的调度为50ms,也就是调度20HZ频率。任务1和任务2中的延时函数,使用了__delay_ms(); 不会进行任务切换。
任务1和任务2都是通过串口打印当前任务运行次数。运行效果如下图所示:
可以看到,只有高优先级的任务在运行,高任务将时间片给占满了。
4.测试同优先级下的任务调度
设置任务1的优先级为2,设置任务2的优先级为2;(注意,优先级数字越大,其优先级越高),设置了时间片的调度为50ms,也就是调度20HZ频率。任务1和任务2中的延时函数,使用了__delay_ms(); 不会进行任务切换。
任务1和任务2都是通过串口打印当前任务运行次数。运行效果如下图所示:
可以看到,在50ms的时间片中,任务1运行;一个时间片,结束后,任务进行切换。任务2再运行一个时间片的时间。