STM32 RTClock.h помогите разобраться
- Войдите на сайт для отправки комментариев
Ср, 05/01/2022 - 15:19
Здравствуйте. использую Blue pill. Нужно сделать календарь с часами ,настройка с помощью кнопок. Для начала написал примитивный скетч, реализовавший вывод данных в порт. Не могу понять, как настроить время и дату. Также возникает вопрос , если настроить дату , будет ли учитываться количество дней в месяце и высокий год.
01 | #include <RTClock.h> |
02 |
03 | RTClock rt (RTCSEL_LSE); // initialise |
04 | uint32 tt; |
05 |
06 | void setup () |
07 | { |
08 |
09 | Serial .begin(9600); |
10 | } |
11 |
12 | void 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 | } |
В блюпиле встроенного календаря нет, есть только счетчик, прибавляющийся каждую секунду. Настройка даты происходит путем записи unixtime в этот счетчик, вот и все.
Вся реализация календаря - программно. Так что открывайте исходники библиотеки и смотрите. есть там календарь или нет.
Добавка - мельком глянул, вроде все есть.
Я тоже смотрел, календарь в быблотеке есть. Но не могу понять, как пользоваться библиотекой, в примерах ничего найти не могу. Мне не хватает знаний понять.
ну а что там пользоваться? задаем время методом setTime(), а все остальное Вы уже сами написали - делаете getTime() и раскладываете на время, число, месяц, год....
Вы для начала проверьте, тикает ли время или нет. А то у меня как-то из 4х свежекупленных блюпилов время шло только на одном, на трех других часовые кварцы были не припаяны.
Все работает, время идет.
В библиотеке должен быть календарь. Для чего преобразовывать дату в секунды и наоборот? Можно пользоваться библиотекой без всех преобразований ?
Для чего преобразовывать дату в секунды и наоборот?
потому что железный счетчик в контроллере считает только секунды, для получения всего остального - часов, минут, даты - нужно сначала преобразовать время из секунд в "человеческий" формат.
Нагуглите, что такое unixtime - многое станет понятнее.
Samodelkin_YouTube, почитайте, что такое NTP, замените Blue Pill на esp8266 и проблема с установкой даты/времени пропадет сама собой. Причем, навсегда.