
延时方法
裸机的延时
一般就是让cpu在原地干等着,程序无法向下执行,(当然,中断是没有受到影响的)
RTOS的延时
利用在阻塞状态,当当前任务进入阻塞状态的时候,释放cpu的使用权,让其他任务获取cpu的使用权
具体的实现方法:在阻塞延时的时候,延时方法中调用任务切换的时候,就会触发Pendsv中断,然后在中断服务中不断的询问其他的任务是否有延时,延时是否结束,以此来切换任务
RTOS延时方法的基准
vTaskDelay的延时是和系统的滴答定时器有关,操作系统里面的最小的时间单位就是SysTick 的中断周期,我们称之为一个 tick, SysTick 中断服务函数在 port.c 中实现 xPortSysTickHandler( void )
相关的三个值(处于FreeRTOSConfig.h)
configSYSTICK_CLOCK_HZ //它的值是和configCPU_CLOCK_HZ挂钩的,所以也是72Mhz
configCPU_CLOCK_HZ //72000000 72Mhz
configTICK_RATE_HZ //1000 进入中断的频率,此时中断时间是1ms
初始化:
vPortSetupTimerInterrupt( void ) //滴答定时器初始化,在port.c文件中
空闲任务
空闲任务:优先级最低的任务,其优先级定义为0,也就是在其他任务都处于阻塞状态的时候,就回去执行空闲任务
作用:可以做内存清理、设置系统休眠、设置低功耗
#好好学习!