美文网首页
FreeRTOS操作系统例程(5):系统时钟和时间管理

FreeRTOS操作系统例程(5):系统时钟和时间管理

作者: 闵许可 | 来源:发表于2019-05-23 09:44 被阅读0次

安富莱电子 www.armfly.com

安富莱_STM32-V5开发板_FreeRTOS教程(V1.0)

FreeRTOS 时间相关的函数主要有以下 4 个:

 vTaskDelay ()

 vTaskDelayUntil ()

 xTaskGetTickCount()

 xTaskGetTickCountFromISR()

FreeRTOS 的系统时钟节拍可以在配置文件 FreeRTOSConfig.h 里面设置:

#define configTICK_RATE_HZ ( ( TickType_t ) 1000 )//配置系统时钟1KHz,即 1ms

二、使用例程

1.vTaskDelay 

函数 vTaskDelay 用于任务的延迟。使用举例:vTaskDelay(200);

static void vTaskMsgPro(void *pvParameters)

{

TickType_t xDelay, xNextTime;

const TickType_t xFrequency = 200;

/* 获取 xFrequency 个时钟节拍后的时间 */

xNextTime = xTaskGetTickCount() + xFrequency;

while(1)

{

bsp_LedToggle(3);

/* 用 vTaskDelay 实现 vTaskDelayUntil() */

xDelay = xNextTime - xTaskGetTickCount();

xNextTime += xFrequency;

if(xDelay <= xFrequency)

{

vTaskDelay(xDelay);

}

}

}

2.vTaskDelayUntil

函数 vTaskDelayUntil 用于周期性延迟,使用此函数需要在 FreeRTOSConfig.h 配置文件中配置如下宏定义为 1

#define INCLUDE_vTaskDelayUntil 1

/* vTaskDelayUntil 是绝对延迟,vTaskDelay 是相对延迟。*/

vTaskDelayUntil(&xLastWakeTime, xFrequency);

static void vTaskLED(void *pvParameters)

{

TickType_t xLastWakeTime;

const TickType_t xFrequency = 200;

/* 获取当前的系统时间 */

xLastWakeTime = xTaskGetTickCount();

while(1)

{

bsp_LedToggle(2);

/* vTaskDelayUntil 是绝对延迟,vTaskDelay 是相对延迟。*/

vTaskDelayUntil(&xLastWakeTime, xFrequency);

}

}

3.xTaskGetTickCount

函数 xTaskGetTickCount 用于获取系统当前运行的时钟节拍数。此函数用于在任务代码里面调用,如果在中断服务程序里面调用的话,需要使用函数xTaskGetTickCountFromISR,这两个函数切不可混用。

printf("当前的系统时钟节拍数 = %d\r\n", xTaskGetTickCount());

4.xTaskGetTickCountFromISR

/*

*********************************************************************************************************

*  函 数 名: TIM6_IRQHandler

*  功能说明: TIM6 中断服务程序。

*  形 参: 无

*  返 回 值: 无

*********************************************************************************************************

*/

void TIM6_IRQHandler( void )

{

    TickType_t xTickCount;

    xTickCount = xTaskGetTickCountFromISR;

}

相关文章

网友评论

      本文标题:FreeRTOS操作系统例程(5):系统时钟和时间管理

      本文链接:https://www.haomeiwen.com/subject/pkndzqtx.html