Я использую ядерную плату STM32F072RB, и я подключил к ней плату для дыхания SDcard.
Я могу читать / писать текстовые файлы, и я также использую RTC. Проект больше похож на регистратор данных.
Я связал LM35 с аналоговым выводом STM32, и я могу записать данные с отметкой времени.
Следующее, что я пытаюсь - это указать имя файла, например, "MAY09_00.TXT". Чтобы получить имя файла, как упомянуто выше, я должен прочитать дату и время RTC и затем поместить его в имя файла. Проблема в том, что когда я читаю дату (которая находится в uint8_t) и приводю ее к (char), она принимает значение char ASCII, а не дату как char. Это похоже на классическую проблему, и я попытался найти онлайн, но не смог найти большую помощь. Я знаю, что я ищу функцию наподобие itoa (), но она действительно для стандартной библиотеки C. Я не знаю, предоставляет ли ST такую служебную библиотеку для своего MCU.
char *fname;
char filename[12] = {' ',' ',' ',' ',' ','_','0','0','.','T','X','T'};
HAL_RTC_GetTime(&hrtc, &time3, RTC_FORMAT_BIN);
HAL_RTC_GetDate(&hrtc, &date, RTC_FORMAT_BIN);
if(date.Month == 1)
{
fname = "JAN ";
}
else if(date.Month == 2)
{
fname = "FEB ";
}
else if(date.Month == 3)
{
fname = "MAR ";
}
else if(date.Month == 4)
{
fname = "APR ";
}
else if(date.Month == 5)
{
fname = "MAY ";
}
if(date.Date < 60)
{
int i = 0; int j = 0;
int len = 0;
for(i=0; *(fname) != NULL; i++)
{
filename[i] = *(fname);
if(*(fname)==' ')
{
filename[i] = '0';
}
fname++;
}
filename[4] = (date.Date); // when I use today's date 9, it takes /t instead of '9'
}