M4521_BSP V3.02.000
The Board Support Package for M4521
rtc.h
Go to the documentation of this file.
1/**************************************************************************/
12#ifndef __RTC_H__
13#define __RTC_H__
14
15#ifdef __cplusplus
16extern "C"
17{
18#endif
19
20
32/*---------------------------------------------------------------------------------------------------------*/
33/* RTC Initial Keyword Constant Definitions */
34/*---------------------------------------------------------------------------------------------------------*/
35#define RTC_INIT_KEY 0xA5EB1357UL
36#define RTC_WRITE_KEY 0x0000A965UL
38/*---------------------------------------------------------------------------------------------------------*/
39/* RTC Time Attribute Constant Definitions */
40/*---------------------------------------------------------------------------------------------------------*/
41#define RTC_CLOCK_12 0
42#define RTC_CLOCK_24 1
43#define RTC_AM 1
44#define RTC_PM 2
46/*---------------------------------------------------------------------------------------------------------*/
47/* RTC Tick Period Constant Definitions */
48/*---------------------------------------------------------------------------------------------------------*/
49#define RTC_TICK_1_SEC 0x0UL
50#define RTC_TICK_1_2_SEC 0x1UL
51#define RTC_TICK_1_4_SEC 0x2UL
52#define RTC_TICK_1_8_SEC 0x3UL
53#define RTC_TICK_1_16_SEC 0x4UL
54#define RTC_TICK_1_32_SEC 0x5UL
55#define RTC_TICK_1_64_SEC 0x6UL
56#define RTC_TICK_1_128_SEC 0x7UL
58/*---------------------------------------------------------------------------------------------------------*/
59/* RTC Day of Week Constant Definitions */
60/*---------------------------------------------------------------------------------------------------------*/
61#define RTC_SUNDAY 0x0UL
62#define RTC_MONDAY 0x1UL
63#define RTC_TUESDAY 0x2UL
64#define RTC_WEDNESDAY 0x3UL
65#define RTC_THURSDAY 0x4UL
66#define RTC_FRIDAY 0x5UL
67#define RTC_SATURDAY 0x6UL
69/*---------------------------------------------------------------------------------------------------------*/
70/* RTC Snooper Detection Mode Constant Definitions */
71/*---------------------------------------------------------------------------------------------------------*/
72#define RTC_SNOOPER_LOW_LEVEL 0x0UL
73#define RTC_SNOOPER_HIGH_LEVEL 0x2UL
74#define RTC_SNOOPER_FALLING_EDGE 0x8UL
75#define RTC_SNOOPER_RISING_EDGE 0xAUL
76#define RTC_SNOOPER_DETECT_Msk 0xAUL
78/*---------------------------------------------------------------------------------------------------------*/
79/* RTC Miscellaneous Constant Definitions */
80/*---------------------------------------------------------------------------------------------------------*/
81#define RTC_WAIT_COUNT 0xFFFFFFFF
82#define RTC_YEAR2000 2000
83#define RTC_FCR_REFERENCE 32761 /* end of group RTC_EXPORTED_CONSTANTS */
86
87
94typedef struct
95{
96 uint32_t u32Year;
97 uint32_t u32Month;
98 uint32_t u32Day;
99 uint32_t u32DayOfWeek;
100 uint32_t u32Hour;
101 uint32_t u32Minute;
102 uint32_t u32Second;
103 uint32_t u32TimeScale;
104 uint32_t u32AmPm;
106 /* end of group RTC_EXPORTED_STRUCTS */
108
109
124#define RTC_IS_LEAP_YEAR() (RTC->LEAPYEAR & RTC_LEAPYEAR_LEAPYEAR_Msk ? 1:0)
125
135#define RTC_CLEAR_ALARM_INT_FLAG() (RTC->INTSTS = (RTC->INTSTS & ~(RTC_INTSTS_TICKIF_Msk | RTC_INTSTS_SNPDIF_Msk)) | RTC_INTSTS_ALMIF_Msk)
136
146#define RTC_CLEAR_TICK_INT_FLAG() (RTC->INTSTS = (RTC->INTSTS & ~(RTC_INTSTS_ALMIF_Msk | RTC_INTSTS_SNPDIF_Msk)) | RTC_INTSTS_TICKIF_Msk)
147
157#define RTC_CLEAR_SNOOPER_INT_FLAG() (RTC->INTSTS = (RTC->INTSTS & ~(RTC_INTSTS_ALMIF_Msk | RTC_INTSTS_TICKIF_Msk)) | RTC_INTSTS_SNPDIF_Msk)
158
169#define RTC_GET_ALARM_INT_FLAG() ((RTC->INTSTS & RTC_INTSTS_ALMIF_Msk)? 1:0)
170
181#define RTC_GET_TICK_INT_FLAG() ((RTC->INTSTS & RTC_INTSTS_TICKIF_Msk)? 1:0)
182
193#define RTC_GET_SNPPOER_INT_FLAG() ((RTC->INTSTS & RTC_INTSTS_SNPDIF_Msk)? 1:0)
194
206#define RTC_READ_SPARE_REGISTER(u32RegNum) (RTC->SPR[(u32RegNum)])
207
220#define RTC_WRITE_SPARE_REGISTER(u32RegNum, u32RegValue) (RTC->SPR[(u32RegNum)] = (u32RegValue))
221
231static __INLINE void RTC_WaitAccessEnable(void)
232{
233 uint32_t u32TimeOutCount = SystemCoreClock; // 1 second timeout
234 uint32_t i = 0;
235
236 /* To wait RWENF bit is cleared and enable RWENF bit (Access Enable bit) again */
237 while((RTC->RWEN & RTC_RWEN_RWENF_Msk) == RTC_RWEN_RWENF_Msk)
238 {
239 i++;
240 if(i > u32TimeOutCount) break;
241 }
242
243 RTC->RWEN = RTC_WRITE_KEY;
244
245 i = 0;
246 /* To wait RWENF bit is set and user can access the protected-register of RTC from now on */
247 while((RTC->RWEN & RTC_RWEN_RWENF_Msk) == 0x0)
248 {
249 i++;
250 if(i > u32TimeOutCount) break;
251 }
252}
253
254int32_t RTC_Open(S_RTC_TIME_DATA_T *sPt);
255void RTC_Close(void);
256void RTC_32KCalibration(int32_t i32FrequencyX100);
261void RTC_SetDate(uint32_t u32Year, uint32_t u32Month, uint32_t u32Day, uint32_t u32DayOfWeek);
262void RTC_SetTime(uint32_t u32Hour, uint32_t u32Minute, uint32_t u32Second, uint32_t u32TimeMode, uint32_t u32AmPm);
263void RTC_SetAlarmDate(uint32_t u32Year, uint32_t u32Month, uint32_t u32Day);
264void RTC_SetAlarmTime(uint32_t u32Hour, uint32_t u32Minute, uint32_t u32Second, uint32_t u32TimeMode, uint32_t u32AmPm);
265uint32_t RTC_GetDayOfWeek(void);
266void RTC_SetTickPeriod(uint32_t u32TickSelection);
267void RTC_EnableInt(uint32_t u32IntFlagMask);
268void RTC_DisableInt(uint32_t u32IntFlagMask);
269void RTC_EnableSpareAccess(void);
270void RTC_DisableSpareRegister(void);
271void RTC_EnableSnooperDetection(uint32_t u32PinCondition);
273 /* end of group RTC_EXPORTED_FUNCTIONS */
275 /* end of group RTC_Driver */
277 /* end of group Standard_Driver */
279
280#ifdef __cplusplus
281}
282#endif
283
284#endif //__RTC_H__
285
#define RTC_RWEN_RWENF_Msk
Definition: M4521.h:7683
#define RTC
Definition: M4521.h:13838
#define RTC_WRITE_KEY
Definition: rtc.h:36
void RTC_EnableInt(uint32_t u32IntFlagMask)
Enable RTC Interrupt.
Definition: rtc.c:690
void RTC_DisableSnooperDetection(void)
Disable Snooper Pin Detect.
Definition: rtc.c:796
uint32_t RTC_GetDayOfWeek(void)
Get Day of the Week.
Definition: rtc.c:648
void RTC_SetDateAndTime(S_RTC_TIME_DATA_T *sPt)
Update Current RTC Date and Time.
Definition: rtc.c:357
uint32_t u32Month
Definition: rtc.h:97
uint32_t u32AmPm
Definition: rtc.h:104
void RTC_GetAlarmDateAndTime(S_RTC_TIME_DATA_T *sPt)
Get RTC Alarm Date and Time.
Definition: rtc.c:257
void RTC_SetAlarmDateAndTime(S_RTC_TIME_DATA_T *sPt)
Update RTC Alarm Date and Time.
Definition: rtc.c:431
uint32_t u32Hour
Definition: rtc.h:100
void RTC_EnableSpareAccess(void)
Enable Spare Registers Access.
Definition: rtc.c:737
int32_t RTC_Open(S_RTC_TIME_DATA_T *sPt)
Initialize RTC module and start counting.
Definition: rtc.c:70
void RTC_SetDate(uint32_t u32Year, uint32_t u32Month, uint32_t u32Day, uint32_t u32DayOfWeek)
Update RTC Current Date.
Definition: rtc.c:496
void RTC_Close(void)
Disable RTC Clock.
Definition: rtc.c:112
void RTC_32KCalibration(int32_t i32FrequencyX100)
Set 32k Frequency Compensation Data.
Definition: rtc.c:126
uint32_t u32Minute
Definition: rtc.h:101
void RTC_SetTime(uint32_t u32Hour, uint32_t u32Minute, uint32_t u32Second, uint32_t u32TimeMode, uint32_t u32AmPm)
Update RTC Current Time.
Definition: rtc.c:529
uint32_t u32Day
Definition: rtc.h:98
uint32_t u32DayOfWeek
Definition: rtc.h:99
void RTC_SetAlarmTime(uint32_t u32Hour, uint32_t u32Minute, uint32_t u32Second, uint32_t u32TimeMode, uint32_t u32AmPm)
Update RTC Alarm Time.
Definition: rtc.c:601
void RTC_DisableInt(uint32_t u32IntFlagMask)
Disable RTC Interrupt.
Definition: rtc.c:707
static __INLINE void RTC_WaitAccessEnable(void)
Wait RTC Access Enable.
Definition: rtc.h:231
uint32_t u32Year
Definition: rtc.h:96
void RTC_DisableSpareRegister(void)
Disable Spare Register.
Definition: rtc.c:760
void RTC_SetTickPeriod(uint32_t u32TickSelection)
Set RTC Tick Period Time.
Definition: rtc.c:671
void RTC_EnableSnooperDetection(uint32_t u32PinCondition)
Enable Snooper Pin Detect.
Definition: rtc.c:780
void RTC_SetAlarmDate(uint32_t u32Year, uint32_t u32Month, uint32_t u32Day)
Update RTC Alarm Date.
Definition: rtc.c:571
uint32_t u32Second
Definition: rtc.h:102
uint32_t u32TimeScale
Definition: rtc.h:103
void RTC_GetDateAndTime(S_RTC_TIME_DATA_T *sPt)
Get Current RTC Date and Time.
Definition: rtc.c:162
uint32_t SystemCoreClock
Definition: system_M4521.c:24