最近需要将在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 ) // 回调函数
该函数用来创建一个定时器。