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);
    }
}

person Driss Aourir    schedule 22.06.2017    source источник


Ответы (1)


Для измерения времени есть xTaskGetTickCount, но это будет ограничено разрешением вашего тика. оценивать.

В качестве альтернативы вы можете создать другую задачу, которая тикает с частотой 1 Гц, чтобы увеличить счетчик и использовать его в качестве системного времени.

Однако, чтобы получить фактическую дату, вам нужно проконсультироваться со своей платой разработки и посмотреть, есть ли у нее RTC. В противном случае вам нужно будет каким-то образом получить время вручную и поддерживать этот счет с помощью аппаратных таймеров вашей платы разработки.

На вашей макетной плате обязательно должны быть аппаратные часы, которые вы также можете использовать для измерения времени.

person Steven Huang    schedule 14.08.2017