阳江网站设计,遵义公共资源交易中心,线上营销推广渠道,凤泉网站建设在使用FreeRTOS的过程中#xff0c;我们通常会在一个任务函数中使用延时函数对这个任务延时#xff0c;当执行延时函数的时候就会进行任务切换#xff0c;并且此任务就会进入阻塞太#xff0c;直到延时完成#xff0c;任务重新进入就绪态。延时函数舒属于FreeRTOS的时间管…在使用FreeRTOS的过程中我们通常会在一个任务函数中使用延时函数对这个任务延时当执行延时函数的时候就会进行任务切换并且此任务就会进入阻塞太直到延时完成任务重新进入就绪态。延时函数舒属于FreeRTOS的时间管理。
0x00 FreeRTOS的延时函数
FreeRTOS中延时函数相对模式和绝对模式相对模式是使用vTaskDelay()函数绝对模式是使用vTaskDelayUntil函数。 vTaskDelay要将INCLUDE_vTaskDelay配置为1单位是ms
void vTaskDelay( const TickType_t xTicksToDelay );
//vTaskDelay(500) 延时500ms使用vTaskDelayUntil要将INCLUDE_vTaskDelayUntil配置为1那些需要按照一定的频率运行的任务可以使用vTaskDelayUntil
void vTaskDelayUntil( TickType_t * const pxPreviousWakeTime, const TickType_t xTimeIncrement ) pxPreviousWakeTime上一次任务延时结束被唤醒的时间点xTimeIncrement 任务需要延时的时间节拍数 // Perform an action every 10 ticks.void vTaskFunction( void * pvParameters ){TickType_t xLastWakeTime;const TickType_t xFrequency 10;// Initialise the xLastWakeTime variable with the current time.xLastWakeTime xTaskGetTickCount ();for( ;; ){// Wait for the next cycle.vTaskDelayUntil( xLastWakeTime, xFrequency );// Perform action here.}}0x01 FreeRTOS系统时钟节拍
xTickCount就是FreeRTOS的系统时钟节拍计数器每个滴答时钟中断中xTickCount会加1