static void prvAddCurrentTaskToDelayedList( TickType_t xTicksToWait, const BaseType_t xCanBlockIndefinitely ) { TickType_t xTimeToWake; const TickType_t xConstTickCount = xTickCount; #if( INCLUDE_xTaskAbortDelay == 1 ) { pxCurrentTCB->ucDelayAborted = pdFALSE; } #endif if( uxListRemov...
TickType_t xNextExpireTime, xReloadTime; List_t *pxTemp; Timer_t *pxTimer; BaseType_t xResult; // 切换链表前, 需要先处理当前链表上的所有执行定时器 while( listLIST_IS_EMPTY( pxCurrentTimerList ) == pdFALSE ) { // 获取第一个定时器溢出时间 xNextExpireTime = listGET_ITEM_VALUE_OF_...
TickType_t uxTaskResetEventItemValue( void ) PRIVILEGED_FUNCTION; TaskHandle_t xTaskGetCurrentTaskHandle( void ) PRIVILEGED_FUNCTION; void vTaskMissedYield( void ) PRIVILEGED_FUNCTION; BaseType_t xTaskGetSchedulerState( void ) PRIVILEGED_FUNCTION; BaseType_t xTaskPriorityInherit( TaskHandle_t cons...
可以通过宏configTICK_RATE_HZ来配置时钟频率。 2. xTaskGetTickCount():这个函数与vTaskGetTickCount()类似,但它返回的是一个32位无符号整数,表示自系统启动以来经过的节拍数。 3. xTaskGetTickCountFromISR():这个函数可以在中断服务程序(ISR)中使用,以获取自系统启动以来经过的节拍数。 4. ulTaskGetRunTime...
默认情况下,上述统计实现基于的时间来源于系统时间,即系统心跳节拍sysTick,一般可通过:xTaskGetTickCount...
注:以上以5个Tick的时间片举例,而FreeRTOS的时间片只能是1个Tick。 4 RTOS与TSOS RTOS 英文为Real Time Operating System,即实时操作系统,实时是指当外界事件或数据产生时,能够接收并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行...
函数原型:TickType_t xTaskGetTickCountFromISR(void)返回值:时间计数器xTickCount的值 1. 2. 3. xTaskGetSchedulerState() :获取任务调度器的状态,开启、关闭还是挂起 /***相关宏的配置***/#define INCLUDE_xTaskGetSchedulerState 必须置为1/***函数原型***/函数原型:BaseType_t xTaskGetSchedulerState(...
三、FreeRTOS中的时钟节拍Tick FreeRTOS中的时钟节拍(Tick)是一个基本的时间单位,用于管理任务调度和时间相关功能。时钟节拍的概念在实时操作系统中非常重要,因为它提供了时间的基本度量单位,允许任务和定时器按照预定的时间间隔执行。 以下是有关FreeRTOS中时钟节拍的重要信息: ...
xTaskGetTickCount():获取自RTOS启动以来的tick数。 xPortGetCoreID():获取当前运行任务所在的CPU核心ID。 中断管理: vPortEnterCritical(),vPortExitCritical(): 关闭/恢复中断,实现临界区保护。 taskENTER_CRITICAL(),taskEXIT_CRITICAL(): 同上,使用FreeRTOS宏。
portTickType xTimeIncrement );--循环周期时间。任务将在一定时间开启 (*pxPreviousWakeTime + xTimeIncrement) 例子: void vTaskFunction( void * pvParameters ) 注:INCLUDE_vTaskDelayUntil 必须定义为1,此函数才能用。 5.获取任务优先级 unsigned portBASE_TYPE uxTaskPriorityGet( xTaskHandle pxTask ); ...