FreeRTOS添加计时器

发布时间 2023-10-10 11:37:20作者: ouyang_wsgwz

最近需要将在Linux上的代码移植到FreeRTOS上,许多系统函数运行不了,其中就包括gettimeofday,以及使用定时器的不同。

FreeRTOS的时间管理

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

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

在FreeRTOS中,系统时钟节拍的特点就是周期性中断,既然要产生中断那就需要定时器,所以在这里就是使用了一个24位的定时器,采用向下计数的方式,然后可以产生周期性的中断。

xTaskGetTickCount

TickType_t xTaskGetTickCount( void )

该函数用于获取系统当前运行的时钟节拍数。

注意:此函数用于在任务代码里面调用,如果在中断服务程序里面调用的话,需要使用函数xTaskGetTickCountFromISR,这两个函数切不可混用。

例如:

xTimerCreate

TimerHandle_t xTimerCreate(    const char * const pcTimerName,                // 名称
                                const TickType_t xTimerPeriodInTicks,       // 时长 tick
                                const UBaseType_t uxAutoReload,          // 是否自动加载
                                void * const pvTimerID,               // 编号ID
                                TimerCallbackFunction_t pxCallbackFunction )    // 回调函数

该函数用来创建一个定时器。