ELIOT1 HAL
Загрузка...
Поиск...
Не найдено
hal_rwc.h
См. документацию.
1
21#ifndef HAL_RWC_H
22#define HAL_RWC_H
23
24#include "hal_common.h"
25
26#if defined(__cplusplus)
27extern "C" {
28#endif
29
36#ifndef RWC_SYNC_RETRY_TIMES
37#define RWC_SYNC_RETRY_TIMES 0U
38#endif /* RWC_SYNC_RETRY_TIMES */
39
43#define RWC_SET_RETRY_TIMES 10U
44
49#define SECONDS_IN_A_DAY (86400U)
50#define SECONDS_IN_A_HOUR (3600U)
51#define SECONDS_IN_A_MINUTE (60U)
52#define DAYS_IN_A_YEAR (365U)
53#define YEAR_RANGE_START (1970U)
54#define YEAR_RANGE_END (2099U)
71uint32_t trimload :
72 FIELD_BIT(0, 0);
73uint32_t :
74 FIELD_BIT(31, 1);
75};
76
84uint32_t time :
85 FIELD_BIT(31, 0);
86};
87
94uint32_t alarm :
95 FIELD_BIT(31, 0);
96};
97
108uint32_t trim_lfe :
109 FIELD_BIT(10, 0);
110uint32_t trim_lfi :
111 FIELD_BIT(21, 11);
112uint32_t lfe_bypass :
113 FIELD_BIT(22, 22);
114uint32_t :
115 FIELD_BIT(24, 23);
122uint32_t wake_stat2 :
123 FIELD_BIT(25, 25);
124
129uint32_t wake_stat3 :
130 FIELD_BIT(26, 26);
131uint32_t :
132 FIELD_BIT(31, 27);
133};
134
149uint32_t time_clk_sel :
150 FIELD_BIT(0, 0);
151
152uint32_t :
153 FIELD_BIT(3, 1);
154uint32_t osc_sel :
155 FIELD_BIT(4, 4);
156uint32_t :
157 FIELD_BIT(5, 5);
158uint32_t clk_div :
159 FIELD_BIT(10, 6);
165uint32_t reset_en :
166 FIELD_BIT(11, 11);
167
172uint32_t alarm_en :
173 FIELD_BIT(12, 12);
174
179uint32_t pz :
180 FIELD_BIT(13, 13);
181
186uint32_t pl :
187 FIELD_BIT(14, 14);
188uint32_t wake_in_en :
189 FIELD_BIT(15, 15);
190uint32_t :
191 FIELD_BIT(29, 16);
199 FIELD_BIT(30, 30);
200
205uint32_t wake_stat1 :
206 FIELD_BIT(31, 31);
207};
208
217uint32_t time :
218 FIELD_BIT(31, 0);
219};
220
228uint32_t wake_en :
229 FIELD_BIT(0, 0);
230uint32_t :
231 FIELD_BIT(15, 1);
232uint32_t wake_pol :
233 FIELD_BIT(16, 16);
234uint32_t :
235 FIELD_BIT(31, 17);
236};
237
254
267
276
285
294
308
317
318
327
352
362
376
401
410
419
428
443
448typedef struct _rtc_datetime {
449 uint16_t year;
450 uint8_t month;
451 uint8_t day;
452 uint8_t hour;
453 uint8_t minute;
454 uint8_t second;
456
499
521 enum rwc_internal_register reg, union rwc_union_reg *value);
522
538 enum rwc_internal_register reg, union rwc_union_reg value);
561enum rwc_status RWC_GetRTCClkParam(uint32_t *div, enum rwc_rtcclk_type *src);
562
578enum rwc_status RWC_SetRTCClkParam(uint32_t div, enum rwc_rtcclk_type src);
579
587uint32_t RWC_GetTime(RWC_Type *base);
615enum rwc_status RWC_Init(RWC_Type *base, struct rwc_config cfg);
616
629enum rwc_status RWC_Deinit(RWC_Type *base);
651enum rwc_status RWC_SetDatetime(RWC_Type *base, const rtc_datetime_t *datetime);
652
662enum rwc_status RWC_GetDatetime(RWC_Type *base, rtc_datetime_t *datetime);
663
678enum rwc_status RWC_SetAlarm(RWC_Type *base, const rtc_datetime_t *alarmTime);
679
690enum rwc_status RWC_GetAlarm(RWC_Type *base, rtc_datetime_t *datetime);
691
705enum rwc_status RWC_SetSecondsTimerMatch(RWC_Type *base, uint32_t match_value);
706
714uint32_t RWC_GetSecondsTimerMatch(RWC_Type *base);
715
729enum rwc_status RWC_SetSecondsTimerCount(RWC_Type *base, uint32_t count_value);
730
740enum rwc_status RWC_GetSecondsTimerCount(RWC_Type *base, uint32_t *sec);
741
761 bool enable);
762
777 bool enable);
778
787enum rwc_status RWC_InterruptClear(RWC_Type *base);
804uint32_t RWC_GetStatusFlags(RWC_Type *base);
805
825enum rwc_status RWC_SetWakeUpEnable(RWC_Type *base, bool enable);
826
838 enum rwc_wake_up_polarity value);
839
853
864enum rwc_status RWC_SetLFEBypass(RWC_Type *base,
865 enum rwc_lfe_bypass value);
866
877enum rwc_status RWC_SetLFx(RWC_Type *base,
878 enum rwc_rtcclk_type value);
879
889
900enum rwc_status RWC_SetResetCtrl(RWC_Type *base,
901 enum rwc_reset_type value);
902
903#if defined(__cplusplus)
904}
905#endif
906
924
929#endif /* HAL_RWC_H */
930
#define FIELD_BIT(top, bottom)
Вычисление длины битового поля
Definition hal_common.h:190
enum rwc_status RWC_SetWakeUpEnable(RWC_Type *base, bool enable)
Разрешение работы входа wake_up.
enum rwc_status RWC_SetLFx(RWC_Type *base, enum rwc_rtcclk_type value)
Выбор генератора LFE или LFI.
rwc_internal_register
Внутренние регистры с батарейным питанием
Definition hal_rwc.h:299
enum rwc_status RWC_Deinit(RWC_Type *base)
Деинициализирует таймер реального времени
rwc_timer_status
Статусы таймера
Definition hal_rwc.h:381
enum rwc_status RWC_EnableAlarmTimerInterruptFromDPD(RWC_Type *base, bool enable)
Разрешение прерывания по сигналу будильника из режима глубокого отключения питания
rwc_rtcclk_type
Источник частоты, подаваемой на RTCCLK.
Definition hal_rwc.h:313
enum rwc_status RWC_SetSecondsTimerCount(RWC_Type *base, uint32_t count_value)
Устанавливает текущее время в секундах
rwc_rtcclk_divisor
Делители частоты RTCCLK.
Definition hal_rwc.h:332
enum rwc_status RWC_EnableWakeUpTimerInterruptFromDPD(RWC_Type *base, bool enable)
Разрешение прерывания по сигналу wake-up из режима глубокого отключения питания
enum rwc_status RWC_SetLFEBypass(RWC_Type *base, enum rwc_lfe_bypass value)
Выбор режима работы осциллятора LFE.
enum rwc_status RWC_SetInternalRegister(RWC_Type *base, enum rwc_internal_register reg, union rwc_union_reg value)
Запись значения во внутренний регистр RWC.
enum rwc_status RWC_SetWakeUpActiveLewel(RWC_Type *base, enum rwc_wake_up_polarity value)
Установка полярности сигнала wake_up.
enum rwc_status RWC_SetDatetime(RWC_Type *base, const rtc_datetime_t *datetime)
Устанавливает текущее время и дату согласно заданной структуре
enum rwc_status RWC_GetAlarm(RWC_Type *base, rtc_datetime_t *datetime)
Возвращает время будильника
enum rwc_status RWC_Init(RWC_Type *base, struct rwc_config cfg)
Инициализирует таймер реального времени
rwc_freq_serial
Значения делителей частоты внутреннего интерфейса
Definition hal_rwc.h:433
uint32_t RWC_GetSecondsTimerMatch(RWC_Type *base)
Получает актуальное время срабатывания будильника в секундах
rwc_cmd
Команды доступа к внутренним регистрам
Definition hal_rwc.h:357
rwc_alarm_enable
Разрешение прерывания ALARM.
Definition hal_rwc.h:406
enum rwc_status RWC_SetAlarm(RWC_Type *base, const rtc_datetime_t *alarmTime)
Устанавливает время будильника
enum rwc_status RWC_GetRTCClkParam(uint32_t *div, enum rwc_rtcclk_type *src)
Чтение делителя и источника частоты RTCCLK.
enum rwc_status RWC_GetInternalRegister(RWC_Type *base, enum rwc_internal_register reg, union rwc_union_reg *value)
Чтение значения из внутреннего регистра RWC.
uint32_t RWC_GetStatusFlags(RWC_Type *base)
Получение статусов таймера реального времени
enum rwc_status RWC_SetSecondsTimerMatch(RWC_Type *base, uint32_t match_value)
Устанавливает время будильника в секундах
rwc_time_clk_sel
Выбор сигнала для тактирования счетчика времени
Definition hal_rwc.h:263
rwc_wake_up_irq_enable
Разрешение прерывания RWC_WKUP.
Definition hal_rwc.h:281
enum rwc_status RWC_GetSecondsTimerCount(RWC_Type *base, uint32_t *sec)
Получение текущее время в секундах
enum rwc_status RWC_GetLastAPIStatus()
Получение статуса выполнения функции, тип результата которой отличен от enum rwc_status.
rwc_lfe_bypass
Режимы работы осциллятора LFE.
Definition hal_rwc.h:290
rwc_reset_type
Виды сбросов внутренних регистров при сигнале SRSTn.
Definition hal_rwc.h:323
rwc_wake_up_polarity
Уровень активного сигнала WKUP для генерирования прерывания
Definition hal_rwc.h:272
rwc_wkup_enable
Разрешение работы входа WKUP.
Definition hal_rwc.h:415
enum rwc_status RWC_GetDatetime(RWC_Type *base, rtc_datetime_t *datetime)
Получает текущее дату/время и сохраняет в указанную структуру
enum rwc_status RWC_GetDefaultConfig(struct rwc_config *config)
Получение конфигурации таймера по умолчанию
struct _rtc_datetime rtc_datetime_t
Структура используемая для хранения даты и времени
enum rwc_status RWC_SetRTCClkParam(uint32_t div, enum rwc_rtcclk_type src)
Запись делителя и источника частоты RTCCLK.
uint32_t RWC_GetTime(RWC_Type *base)
Чтение значения счетчика реального времени
enum rwc_status RWC_InterruptClear(RWC_Type *base)
Сброс прерывания RWC_ALARM.
rwc_shutdown_force
Принудительный переход в SHUTDOWN.
Definition hal_rwc.h:424
enum rwc_status RWC_SetResetCtrl(RWC_Type *base, enum rwc_reset_type value)
Управление сбросом регистров при сигнале на входе SRSTn.
rwc_status
Статусы драйвера CLKCTR.
Definition hal_rwc.h:367
@ RWC_TrimLoad
Definition hal_rwc.h:300
@ RWC_Config
Definition hal_rwc.h:304
@ RWC_Time
Definition hal_rwc.h:301
@ RWC_GeneralReg
Definition hal_rwc.h:305
@ RWC_Trim
Definition hal_rwc.h:303
@ RWC_WakeConfig
Definition hal_rwc.h:306
@ RWC_Alarm
Definition hal_rwc.h:302
@ RWC_WakeStat1
Definition hal_rwc.h:399
@ RWC_WakeStat2
Definition hal_rwc.h:393
@ RWC_WakeStat3
Definition hal_rwc.h:386
@ RWC_RTCClkTypeLFI
Definition hal_rwc.h:314
@ RWC_RTCClkTypeLFE
Definition hal_rwc.h:315
@ RWC_Div1024
Definition hal_rwc.h:343
@ RWC_Div32
Definition hal_rwc.h:338
@ RWC_Div2
Definition hal_rwc.h:334
@ RWC_Div1
Definition hal_rwc.h:333
@ RWC_DivMax
Definition hal_rwc.h:350
@ RWC_Div32768
Definition hal_rwc.h:348
@ RWC_Div512
Definition hal_rwc.h:342
@ RWC_Div8192
Definition hal_rwc.h:346
@ RWC_Div256
Definition hal_rwc.h:341
@ RWC_Div16384
Definition hal_rwc.h:347
@ RWC_Div4096
Definition hal_rwc.h:345
@ RWC_Div4
Definition hal_rwc.h:335
@ RWC_Div64
Definition hal_rwc.h:339
@ RWC_Div2048
Definition hal_rwc.h:344
@ RWC_Div16
Definition hal_rwc.h:337
@ RWC_Div8
Definition hal_rwc.h:336
@ RWC_Div128
Definition hal_rwc.h:340
@ RWC_FS125kHz
Definition hal_rwc.h:440
@ RWC_FS625hHz
Definition hal_rwc.h:441
@ RWC_FS8MHz
Definition hal_rwc.h:434
@ RWC_FS250kHz
Definition hal_rwc.h:439
@ RWC_FS4MHz
Definition hal_rwc.h:435
@ RWC_FS1MHz
Definition hal_rwc.h:437
@ RWC_FS500kHz
Definition hal_rwc.h:438
@ RWC_FS2MHz
Definition hal_rwc.h:436
@ RWC_CmdWait
Definition hal_rwc.h:358
@ RWC_CmdRead
Definition hal_rwc.h:360
@ RWC_CmdWrite
Definition hal_rwc.h:359
@ RWC_AlarmEnable
Definition hal_rwc.h:408
@ RWC_AlarmDisable
Definition hal_rwc.h:407
@ RWC_TimeClock1Hz
Definition hal_rwc.h:265
@ RWC_TimeClock32kHz
Definition hal_rwc.h:264
@ RWC_IRQWkUpDisable
Definition hal_rwc.h:282
@ RWC_IRQWkUpEnable
Definition hal_rwc.h:283
@ RWC_QuartzResonator
Definition hal_rwc.h:291
@ RWC_CMOSSignal
Definition hal_rwc.h:292
@ RWC_ResetOnlyWakeConfigAndConfig
Definition hal_rwc.h:324
@ RWC_ResetAllExpectedGeneralReg
Definition hal_rwc.h:325
@ RWC_WkUpPolarityLow
Definition hal_rwc.h:274
@ RWC_WkUpPolarityHigh
Definition hal_rwc.h:273
@ RWC_WkUpEnable
Definition hal_rwc.h:417
@ RWC_WkUpDisable
Definition hal_rwc.h:416
@ RWC_ShutdownSet
Definition hal_rwc.h:426
@ RWC_ShutdownNoSet
Definition hal_rwc.h:425
@ RWC_Status_HardwareBusy
Definition hal_rwc.h:373
@ RWC_Status_InvalidArgument
Definition hal_rwc.h:369
@ RWC_Status_Ok
Definition hal_rwc.h:368
@ RWC_Status_ConfigureError
Definition hal_rwc.h:372
@ RWC_Status_VerifyError
Definition hal_rwc.h:371
@ RWC_Status_Timeout
Definition hal_rwc.h:374
@ RWC_Status_CheckError
Definition hal_rwc.h:370
uint32_t RWC_ConvertDatetimeToSeconds(const rtc_datetime_t *datetime)
Преобразование переменной типа данных datetime в секунды
Структура используемая для хранения даты и времени
Definition hal_rwc.h:448
uint8_t minute
Definition hal_rwc.h:453
uint8_t second
Definition hal_rwc.h:454
uint8_t day
Definition hal_rwc.h:451
uint16_t year
Definition hal_rwc.h:449
uint8_t hour
Definition hal_rwc.h:452
uint8_t month
Definition hal_rwc.h:450
Регистр времени пробуждения
Definition hal_rwc.h:93
uint32_t alarm
Definition hal_rwc.h:95
Конфигурационный регистр
Definition hal_rwc.h:144
uint32_t time_clk_sel
Definition hal_rwc.h:150
uint32_t osc_sel
Definition hal_rwc.h:155
uint32_t shutdown_force
Definition hal_rwc.h:199
uint32_t wake_stat1
Definition hal_rwc.h:206
uint32_t wake_in_en
Definition hal_rwc.h:189
uint32_t reset_en
Definition hal_rwc.h:166
uint32_t pl
Definition hal_rwc.h:187
uint32_t pz
Definition hal_rwc.h:180
uint32_t clk_div
Definition hal_rwc.h:159
uint32_t alarm_en
Definition hal_rwc.h:173
Структура используемая для конфигурирования RWC.
Definition hal_rwc.h:461
enum rwc_wake_up_irq_enable wake_en
Definition hal_rwc.h:495
enum rwc_lfe_bypass lfe_bypass
Definition hal_rwc.h:465
enum rwc_shutdown_force shutdown_force
Definition hal_rwc.h:479
enum rwc_rtcclk_divisor clkdiv
Definition hal_rwc.h:490
uint32_t wake_stat1
Definition hal_rwc.h:473
uint32_t general
Definition hal_rwc.h:493
uint32_t pz
Definition hal_rwc.h:482
uint32_t time
Definition hal_rwc.h:463
enum rwc_freq_serial presc
Definition hal_rwc.h:496
enum rwc_time_clk_sel time_clk_sel
Definition hal_rwc.h:492
uint32_t trim_lfi
Definition hal_rwc.h:466
enum rwc_wkup_enable wake_in_en
Definition hal_rwc.h:480
uint32_t alarm_time
Definition hal_rwc.h:464
enum rwc_wake_up_polarity wake_pol
Definition hal_rwc.h:494
uint32_t pl
Definition hal_rwc.h:481
bool trimload
Definition hal_rwc.h:462
enum rwc_rtcclk_type osc_sel
Definition hal_rwc.h:491
uint32_t trim_lfe
Definition hal_rwc.h:467
enum rwc_alarm_enable alarm_en
Definition hal_rwc.h:488
enum rwc_reset_type reset_en
Definition hal_rwc.h:489
Регистр общего назначения
Definition hal_rwc.h:216
uint32_t time
Definition hal_rwc.h:218
Регистр текущего значения счетчика времени
Definition hal_rwc.h:83
uint32_t time
Definition hal_rwc.h:85
Регистр подстройки осцилляторов
Definition hal_rwc.h:107
uint32_t lfe_bypass
Definition hal_rwc.h:113
uint32_t trim_lfe
Definition hal_rwc.h:109
uint32_t wake_stat3
Definition hal_rwc.h:130
uint32_t trim_lfi
Definition hal_rwc.h:111
uint32_t wake_stat2
Definition hal_rwc.h:123
Регистр записи значения подстройки из регистра TRIM.
Definition hal_rwc.h:70
uint32_t trimload
Definition hal_rwc.h:72
Регистр настройки контроллера пробуждения
Definition hal_rwc.h:227
uint32_t wake_en
Definition hal_rwc.h:229
uint32_t wake_pol
Definition hal_rwc.h:233
Объединение для доступа к регистрам
Definition hal_rwc.h:244
struct rwc_time_reg time
Definition hal_rwc.h:247
struct rwc_alarm_reg alarm
Definition hal_rwc.h:248
struct rwc_trim_reg trim
Definition hal_rwc.h:249
struct rwc_config_reg config
Definition hal_rwc.h:250
struct rwc_general_reg general
Definition hal_rwc.h:251
uint32_t reg_value
Definition hal_rwc.h:245
struct rwc_wake_config_reg wake_config
Definition hal_rwc.h:252
struct rwc_trimload_reg trimload
Definition hal_rwc.h:246