STM32 RTClock.h помогите разобраться

Samodelkin_YouTube
Offline
Зарегистрирован: 16.12.2018

Здравствуйте. использую Blue pill. Нужно сделать календарь с часами ,настройка с помощью кнопок. Для начала написал примитивный скетч, реализовавший вывод данных в порт. Не могу понять, как настроить время и дату. Также возникает вопрос , если настроить дату , будет ли учитываться количество дней в месяце и высокий год.

#include <RTClock.h>

RTClock rt (RTCSEL_LSE); // initialise
uint32 tt; 

void setup() 
{ 

    Serial.begin(9600);
}

void loop() 
{
        tt = rt.getTime();
      Serial.print(rt.second()); 
      Serial.print("-");
      Serial.print(rt.minute()); 
      Serial.print("-"); 
      Serial.print(rt.hour()); 
      Serial.print( "      ");
      Serial.print(rt.day()); 
      Serial.print("-");
      Serial.print(rt.month()); 
      Serial.print("-");
      Serial.println(rt.year()); 
       
  delay (1000);
}

 

b707
Offline
Зарегистрирован: 26.05.2017

В блюпиле встроенного календаря нет, есть только счетчик, прибавляющийся каждую секунду. Настройка даты происходит путем записи unixtime в этот счетчик, вот и все.

Вся реализация календаря - программно. Так что открывайте исходники библиотеки и смотрите. есть там календарь или нет.

Добавка - мельком глянул, вроде все есть.

Samodelkin_YouTube
Offline
Зарегистрирован: 16.12.2018

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

b707
Offline
Зарегистрирован: 26.05.2017

ну а что там пользоваться? задаем время методом setTime(), а все остальное Вы уже сами написали - делаете getTime() и раскладываете на время, число, месяц, год....

Вы для начала проверьте, тикает ли время или нет. А то у меня как-то из 4х свежекупленных блюпилов время шло только на одном, на трех других часовые кварцы были не припаяны.

Samodelkin_YouTube
Offline
Зарегистрирован: 16.12.2018

Все работает, время идет.

В библиотеке должен быть календарь. Для чего преобразовывать дату в секунды и наоборот? Можно пользоваться библиотекой без всех преобразований ?

b707
Offline
Зарегистрирован: 26.05.2017

Samodelkin_YouTube пишет:

Для чего преобразовывать дату в секунды и наоборот?

потому что железный счетчик в контроллере считает только секунды, для получения всего остального - часов, минут, даты - нужно сначала преобразовать время из секунд в "человеческий" формат.

Нагуглите, что такое unixtime - многое станет понятнее.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Samodelkin_YouTube, почитайте, что такое NTP, замените Blue Pill на esp8266 и проблема с установкой даты/времени пропадет сама собой. Причем, навсегда.