📄 rtc.c
字号:
@@
@@ [Argument] : None
@@
@@ [Return] : None
@@
@@ [Desc] : Enable the 32.768 KHz clock input as clock source to RTC
@@
@@ [Note] :
@@
@@ [History] : 20/11/2000 Teo Li Li Version 1.0
@@
@@ [END]
******************************************************************************/
APD_VOID apd_RTCEnableClkInput(APD_VOID)
{
*APD_RTCCHECK |= APD_RTCCHECK_CLKEN;
}
/******************************************************************************
@@
@@ [Name] : apd_RTCDisableClkInput
@@
@@ [Summary] : This function disables the clock input.
@@
@@ [Argument] : None
@@
@@ [Return] : None
@@
@@ [Desc] : Disable the 32.768kHz clock input as source for RTC
@@
@@ [Note] :
@@
@@ [History] : 20/11/2000 Teo Li Li Version 1.0
@@
@@ [END]
******************************************************************************/
APD_VOID apd_RTCDisableClkInput(APD_VOID)
{
*APD_RTCCHECK &= ~APD_RTCCHECK_CLKEN;
}
/******************************************************************************
@@
@@ [Name] : apd_RTCSelectCrystalClk
@@
@@ [Summary] : This function selects the crystal clock as clock source
@@
@@ [Argument] : None
@@
@@ [Return] : None
@@
@@ [Desc] : Select the internal 32.768kHz crystal oscillator as the RTC clock source
@@
@@ [Note] :
@@
@@ [History] : 20/11/2000 Teo Li Li Version 1.0
@@
@@ [END]
******************************************************************************/
APD_VOID apd_RTCSelectCrystalClk(APD_VOID)
{
*APD_RTCCHECK &= ~APD_RTCCHECK_CLKSEL;
}
/******************************************************************************
@@
@@ [Name] : apd_RTCSelectExtClk
@@
@@ [Summary] : This function selects the external RTC clock as clock source
@@
@@ [Argument] : None
@@
@@ [Return] : None
@@
@@ [Desc] : Select the external 32.768kHz clock as the RTC clock source
@@
@@ [Note] :
@@
@@ [History] : 20/11/2000 Teo Li Li Version 1.0
@@
@@ [END]
******************************************************************************/
APD_VOID apd_RTCSelectExtClk(APD_VOID)
{
*APD_RTCCHECK |= APD_RTCCHECK_CLKSEL;
}
/******************************************************************************
@@
@@ [Name] : apd_RTCEnableAlarm
@@
@@ [Summary] : This function enable the alarm
@@
@@ [Argument] : None
@@
@@ [Return] : None
@@
@@ [Desc] : Enable the alarm
@@
@@ [Note] :
@@
@@ [History] : 20/11/2000 Teo Li Li Version 1.0
@@
@@ [END]
******************************************************************************/
APD_VOID apd_RTCEnableAlarm(APD_VOID)
{
*APD_RTCRCSR = *APD_RTCRCSR | APD_RTCRCSR_EALM;
}
/******************************************************************************
@@
@@ [Name] : apd_RTCDisableAlarm
@@
@@ [Summary] : This function disable the alarm
@@
@@ [Argument] : None
@@
@@ [Return] : None
@@
@@ [Desc] : Disable the alarm. It is used to turn off an alerting alarm too.
@@
@@ [Note] :
@@
@@ [History] : 20/11/2000 Teo Li Li Version 1.0
@@
@@ [END]
******************************************************************************/
APD_VOID apd_RTCDisableAlarm(APD_VOID)
{
*APD_RTCRCSR = *APD_RTCRCSR & ~APD_RTCRCSR_EALM;
}
/******************************************************************************
@@
@@ [Name] : apd_RTCEnterModifyMode
@@
@@ [Summary] : This function causes RTC to enter modify mode
@@
@@ [Argument] : None
@@
@@ [Return] : None
@@
@@ [Desc] : RTC enters the modify mode within 60us.
@@
@@ [Note] : In the modify mode,
@@ (1) the internal clock divider will be reset
@@ (2) auto-calendar function is stopped
@@ (3) all timekeeping is stopped
@@
@@ [History] : 20/11/2000 Teo Li Li Version 1.0
@@
@@ [END]
******************************************************************************/
APD_VOID apd_RTCEnterModifyMode(APD_VOID)
{
*APD_RTCRCSR = *APD_RTCRCSR | APD_RTCRCSR_MOD;
}
/******************************************************************************
@@
@@ [Name] : apd_RTCExitModifyMode
@@
@@ [Summary] : This function causes RTC to exit the modify mode.
@@
@@ [Argument] : None
@@
@@ [Return] : None
@@
@@ [Desc] : RTC exits the modify mode. RTC restarts counting.
@@
@@ [Note] :
@@
@@ [History] : 20/11/2000 Teo Li Li Version 1.0
@@
@@ [END]
******************************************************************************/
APD_VOID apd_RTCExitModifyMode(APD_VOID)
{
*APD_RTCRCSR = *APD_RTCRCSR & ~APD_RTCRCSR_MOD;
}
/******************************************************************************
@@
@@ [Name] : apd_RTCEnterHoldMode
@@
@@ [Summary] : This function causes RTC to enter hold mode
@@
@@ [Argument] : None
@@
@@ [Return] : None
@@
@@ [Desc] : RTC enters hold mode within 60us
@@
@@ [Note] : In the hold mode,
@@ (1) the internal clock divider still active
@@ (2) freeze auto-calendar function
@@ (3) any incoming clock will be captured and released upon exit hold mode
@@
@@ [History] : 20/11/2000 Teo Li Li Version 1.0
@@
@@ [END]
******************************************************************************/
APD_VOID apd_RTCEnterHoldMode(APD_VOID)
{
*APD_RTCRCSR = *APD_RTCRCSR | APD_RTCRCSR_CHLD;
}
/******************************************************************************
@@
@@ [Name] : apd_RTCExitHoldMode
@@
@@ [Summary] : This function causes RTC to exit hold mode.
@@
@@ [Argument] : None
@@
@@ [Return] : None
@@
@@ [Desc] : RTC exits hold mode. Any clocks captured in hold mode are relaesed.
@@
@@ [Note] :
@@
@@ [History] : 20/11/2000 Teo Li Li Version 1.0
@@
@@ [END]
******************************************************************************/
APD_VOID apd_RTCExitHoldMode(APD_VOID)
{
*APD_RTCRCSR = *APD_RTCRCSR & ~APD_RTCRCSR_CHLD;
}
/******************************************************************************
@@
@@ [Name] : apd_RTCEnterAdjMode
@@
@@ [Summary] : This function causes RTC to enter adjust mode
@@
@@ [Argument] : None
@@
@@ [Return] : None
@@
@@ [Desc] : RTC enters adjust mode.
@@
@@ [Note] : In the adjust mode,
@@ (1) the internal clock divider will be reset
@@ (2) all timekeeping is stopped
@@
@@ When entering the adjust mode, if the value of second regiter is equal or
@@ greater than 30, the second register is reset to 0 and the minute advances
@@ by 1. Otherwise, the second regsiter is reset to 0 only.
@@
@@ [History] : 20/11/2000 Teo Li Li Version 1.0
@@
@@ [END]
******************************************************************************/
APD_VOID apd_RTCEnterAdjMode(APD_VOID)
{
*APD_RTCRCSR = *APD_RTCRCSR | APD_RTCRCSR_ADJ;
}
/******************************************************************************
@@
@@ [Name] : apd_RTCIsAlarmOn
@@
@@ [Summary] : This function checks if the alarm is alerting
@@
@@ [Argument] : None
@@
@@ [Return] : TRUE if alarm is alerting
@@ FALSE is alarm is not alerting
@@
@@ [Desc] : Check if alarm is currently alerting
@@
@@ [Note] :
@@
@@ [History] : 17/04/2001 KW Kam Version 1.3 New function
@@
@@ [END]
******************************************************************************/
APD_BOOLEAN apd_RTCIsAlarmOn(APD_VOID)
{
APD_BOOLEAN result = FALSE;
if ((*APD_RTCRCSR & APD_RTCRCSR_ALM) != 0)
result = TRUE;
return (result);
}
/******************************************************************************
@@
@@ [Name] : apd_RTCIsAlarmSet
@@
@@ [Summary] : This function checks if the alarm is set
@@
@@ [Argument] : None
@@
@@ [Return] : TRUE if alarm is set
@@ FALSE is alarm is not set
@@
@@ [Desc] : Check if alarm is set or not.
@@
@@ [Note] :
@@
@@ [History] : 21/11/2000 Teo Li Li Version 1.0
@@
@@ [END]
******************************************************************************/
APD_BOOLEAN apd_RTCIsAlarmSet(APD_VOID)
{
APD_BOOLEAN result = FALSE;
if ((*APD_RTCRCSR & APD_RTCRCSR_EALM) != 0)
result = TRUE;
return (result);
}
/******************************************************************************
@@
@@ [Name] : apd_RTCSetIRQFOutFreq
@@
@@ [Summary] : This function sets the frequency of the IRQF output signal
@@
@@ [Argument] : sirq: specify the frequency setting to the IRQF output signal
@@ APD_RTC_NO_PULSE for no pulse
@@ APD_RTC_1MIN for period of IRQF = 1 min
@@ APD_RTC_1SEC for period of IRQF = 1 sec
@@ APD_RTC_1D16SEC for period of IRQF = 1/16 sec
@@
@@ [Return] : None
@@
@@ [Desc] : Sets the frequency of the IRQF output signal
@@
@@ [Note] :
@@
@@ [History] : 21/11/2000 Teo Li Li Version 1.0
@@
@@ [END]
******************************************************************************/
APD_VOID apd_RTCSetIRQFOutFreq(APD_RTC_IRQF_FREQ_TYPE sirq)
{
*APD_RTCRCSR = *APD_RTCRCSR & APD_RTCRCSR_IRQFMASK;
*APD_RTCRCSR = *APD_RTCRCSR | sirq;
}
/******************************************************************************
@@
@@ [Name] : apd_RTCInit
@@
@@ [Summary] : This function initialise the RTC
@@
@@ [Argument] : None
@@
@@ [Return] : None
@@
@@ [Desc] : Initialize the real time clock to no pulse.
@@
@@ [Note] :
@@
@@ [History] : 11/12/2000 Teo Li Li Version 1.0
@@
@@ [END]
******************************************************************************/
APD_VOID apd_RTCInit(APD_VOID)
{
apd_RTCSetIRQFOutFreq(APD_RTC_NO_PULSE);
apd_RTCDisableAlarm();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -