×

FreeRTOS学习之旅(七) -----空闲任务与阻塞延时

zxjy辉 zxjy辉 发表于2022-09-06 17:26:25 浏览243 评论0

抢沙发发表评论

优美的布莱德湖风景.jpeg

  1. 延时方法

    1. 裸机的延时

      1. 一般就是让cpu在原地干等着,程序无法向下执行,(当然,中断是没有受到影响的)

    2. RTOS的延时

      1. 利用在阻塞状态,当当前任务进入阻塞状态的时候,释放cpu的使用权,让其他任务获取cpu的使用权

      2. 具体的实现方法:在阻塞延时的时候,延时方法中调用任务切换的时候,就会触发Pendsv中断,然后在中断服务中不断的询问其他的任务是否有延时,延时是否结束,以此来切换任务

    3. RTOS延时方法的基准

      1. vTaskDelay的延时是和系统的滴答定时器有关,操作系统里面的最小的时间单位就是SysTick 的中断周期,我们称之为一个 tickSysTick 中断服务函数在 port.c 中实现 xPortSysTickHandler( void )

      2. 相关的三个值(处于FreeRTOSConfig.h)

        1. configSYSTICK_CLOCK_HZ    //它的值是和configCPU_CLOCK_HZ挂钩的,所以也是72Mhz

        2. configCPU_CLOCK_HZ          //72000000   72Mhz

        3. configTICK_RATE_HZ             //1000 进入中断的频率,此时中断时间是1ms

      3. 初始化:

        1. vPortSetupTimerInterrupt( void )    //滴答定时器初始化,在port.c文件中

  2. 空闲任务

    1. 空闲任务:优先级最低的任务,其优先级定义为0,也就是在其他任务都处于阻塞状态的时候,就回去执行空闲任务

    2. 作用:可以做内存清理、设置系统休眠、设置低功耗



#好好学习!

群贤毕至

访客