获得当前时间的FreeRTOS

时间:2017-06-22 09:52:32

标签: date freertos

我有使用FreeRTOS运行的代码,我想编辑它, 它是一个测量压力和温度的代码,我希望有时间来表示这些措施。

有人能告诉我如何在我的机器或日期中获取当前时间吗?

谢谢。

这是我现在正在使用的代码。

//#include <stdio.h>
//#include <stdlib.h>
#include <stdint.h>
#include <math.h>
#include "platform.h"
#include "printf.h"
#include "lps331ap.h"

static void app_task(void *);

int main(int argc, char *argv[])
{

    // Initialize the platform
    platform_init();

    // Create a task for the application
    xTaskCreate(app_task, (const signed char * const) "lps331", configMINIMAL_STACK_SIZE, NULL, 1, NULL);

    // Run
    platform_run();
    return 0;
}

static void app_task(void *param)
{
    uint32_t pres;
    int16_t temp;
    int count=0;

   // FILE* fichier = NULL;

    printf("# Testing LPS331AP\n");

    printf("# Initializing LPS331AP...\n");
    lps331ap_powerdown();

    printf("# Setting LPS331AP pressure sensor\n");
    lps331ap_set_datarate(LPS331AP_P_12_5HZ_T_12_5HZ);

    while (1)
    {
        lps331ap_read_pres(&pres);
        lps331ap_read_temp(&temp);
        //fichier = fopen("test.txt", "w");
        //fprintf(fichier,"%f", pres / 4096.0);
        //fprintf(fichier,"%f", 42.5 + temp / 480.0 );
        printf("%d\t",count);

        printf("%f\t", 42.5 + temp / 480.0);

        printf("%f\n", pres / 4096.0);

        count=count+1;
        //fclose(fichier);

        //vTaskDelay(configTICK_RATE_HZ / 10);
        vTaskDelay(2000);
        //vTaskDelay(600000);
    }
}

1 个答案:

答案 0 :(得分:2)

对于测量时间,有xTaskGetTickCount,但这仅限于您的滴答率的分辨率。

或者,您可以创建另一个以1 Hz为单位的任务来增加计数器并将其用作系统时间。

要获得实际日期,您需要咨询开发板,看看它是否有RTC。否则,您需要以某种方式手动获取时间并使用开发板的硬件计时器来维护此计数。

您的开发板中肯定会有一些硬件时钟用于测量时间。