Files
templates/c/rtc-service/HELP.md
Andrey Kruchinkin 34cbd92808 feat(rtc-service): служба RTC с резервированным backup-томом
Перенесена из k1921vk028/1921vk028/lib/rtc_service.

Ядро rtc_service_core.c зависит только от stddef, string и собственных
заголовков; доступ к часам и backup-памяти вынесен в rtc_service_port.h.
Порт для K1921VK028 идёт в комплекте и служит образцом для следующего МК.
2026-08-23 01:15:36 +03:00

69 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# HELP — RTC Service
## Что делает модуль
Поддерживает:
- инициализацию RTC;
- валидацию даты/времени;
- сохранение последнего корректного времени в резервной области NVR;
- восстановление времени после перезагрузки по backup-данным.
## API
```c
RtcService_Result RtcService_Init(const RtcService_InitConfig* cfg, RtcService_Status* status);
RtcService_Result RtcService_GetDateTime(RtcService_DateTime* dt);
RtcService_Result RtcService_SetDateTime(const RtcService_DateTime* dt);
const char* RtcService_ResultToText(RtcService_Result res);
```
## Пример использования
```c
RtcService_InitConfig cfg = {
.preferred_clock_source = RTC_SERVICE_CLOCK_SOURCE_AUTO,
.fallback_datetime = {
.year = 25, .month = 1, .day = 1,
.weekday = 2, .hour = 12, .minute = 0, .second = 0
}
};
RtcService_Status status = {0};
RtcService_Result res = RtcService_Init(&cfg, &status);
```
```c
RtcService_DateTime now;
if (RtcService_GetDateTime(&now) == RTC_SERVICE_RESULT_OK) {
// now готов для чтения полей
}
```
## Конфигурация
1. Выберите `RtcService_InitConfig`:
- `preferred_clock_source` — пока рекомендуется `RTC_SERVICE_CLOCK_SOURCE_AUTO`;
- `fallback_datetime` — базовая дата на случай первого старта/коррупции.
2. Передайте структуру в `RtcService_Init`.
3. Используйте `RtcService_GetDateTime` для получения времени.
4. Для установки времени — `RtcService_SetDateTime`.
## Коды ошибок
`RtcService_ResultToText` возвращает строку:
- `OK`
- `INVALID_ARGUMENT`
- `INVALID_DATETIME`
- `HW_NOT_SUPPORTED`
- `BACKUP_CORRUPT`
- `BACKUP_UNAVAILABLE`
- `FAILED`
## Ограничения
- Проверка флага power-on reset в текущей платформенной части пока заглушка;
если нужно строгое поведение, в `rtc_service_port_k1921vk028.c` добавить чтение
реестра причины сброса/статуса.
- Выбор LSE/LSI на текущий момент реализован как `UNSUPPORTED` до появления
подходящего HAL-подхода.