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

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

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

01#include <RTClock.h>
02 
03RTClock rt (RTCSEL_LSE); // initialise
04uint32 tt;
05 
06void setup()
07{
08 
09    Serial.begin(9600);
10}
11 
12void loop()
13{
14        tt = rt.getTime();
15      Serial.print(rt.second());
16      Serial.print("-");
17      Serial.print(rt.minute());
18      Serial.print("-");
19      Serial.print(rt.hour());
20      Serial.print( "      ");
21      Serial.print(rt.day());
22      Serial.print("-");
23      Serial.print(rt.month());
24      Serial.print("-");
25      Serial.println(rt.year());
26        
27  delay (1000);
28}

 

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 и проблема с установкой даты/времени пропадет сама собой. Причем, навсегда.