Bonjour à tous,
J'ai un programme embarqué sur STM32 M4, où j'utilise des threads. Je voudrais faire une fonction qui stocke dans un int la date du jour, donc sous forme JJMMAAAA.
Pour éviter la casse, j'utilise donc gmtime_r() (librairie time.h).
J'ai un fichier date_heure.c qui contient la dite fonction, et j'appelle cette fonction dans un fichier datalog_application.c.
Voici le contenu actuel de date_heure :
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 #include "date_heure.h" #include <time.h> #include <stdio.h> int getDate(){ time_t timestamp; struct tm *t; int ret; timestamp = time(NULL); if(gmtime_r(×tamp,&t) == NULL){ //fonction évitant les problèmes avec les threads return 0; }else{ ret = (t->tm_year) + (t->tm_mon)*10000 + (t->tm_mday)*1000000; return ret; } }
Et l'endroit où j'appelle la fonction :
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 static uint16_t sdcard_file_counter = 0; char file_name[40] = {0}; int date = 1; date = getDate(); char datechar[9]; sprintf(datechar, "%d", date); //int vers char sprintf(file_name, "%s%s%.3d%s", datechar, "data", sdcard_file_counter, ".csv"); sdcard_file_counter++;
La fonction contenant le code ci-dessus est appelée dans un thread qui est dans mon main().
Le problème est que dès l'appel de la fonction de date_heure.c dans datalog_application.c, le main ne fonctionne plus et reste bloqué sur le thread faisant appel à datalog_application.
J'espère que c'est assez détaillé, toute aide est la bienvenue !
Merci
Partager