📄 ma_rtc.c
字号:
/*
*****************************************************************************
**
** Project : My project
**
** Component : LPC2106 (LPC2106)
**
** Modulename : RTC
**
** Filename : ma_rtc.c
**
** Abstract : This file implements a device driver for the RTC
** module.
**
** Compiler : IAR C compiler
**
** Date : 2004-06-16 13:49:29
**
** License no. : 9503-663-863-6224 Ivan
**
** Warning : This file has been automatically generated.
** Do not edit this file if you intend to regenerate it.
**
** This device driver was created by IAR MakeApp version
** 4.02A (NXP LPC210x: 4.00C) for the NXP LPC210x series of
** microcontrollers.
**
** (c)Copyright 2004 IAR Systems.
** Your rights to this file are explained in the IAR MakeApp
** License Agreement. All other rights reserved.
**
*****************************************************************************
*/
/*
**===========================================================================
** 1 GENERAL
** 1.1 Revisions
**
** Please read the IAR MakeApp for NXP LPC210x readme file
**
**
**===========================================================================
*/
/*
**===========================================================================
** 1.2 References
**
** No Identification Name or Description
** == =================== ================================
**
** 1 02/Oct/2003 NXP LPC210x Hardware Manual
**
**===========================================================================
*/
/*
**===========================================================================
** 2. INCLUDE FILES
** 2.1 Standard include files
**===========================================================================
*/
/*
**===========================================================================
** 2.2 Application include files
**===========================================================================
*/
#include "usercode.h" /* Usercode macros (see <template.h>) */
#include "ma_tgt.h" /* Target specific header file */
#include "ma_sfr.h" /* Special function register bitfield macros */
#include "NXP/iolpc210x.h" /* Defines Special function registers */
#include "ma_rtc.h" /* Module driver header file */
/*
**===========================================================================
** 3. DECLARATIONS
** 3.1 Internal constants
**===========================================================================
*/
#define MA_CCR_RTC 0x00000000 /* Clock Control Register */
#define MA_CCR_RTC_MASK 0x0000000F /* Used bits */
#define MA_CIIR_RTC 0x00000000 /* Counter Increment Interrupt Register */
#define MA_CIIR_RTC_MASK 0x000000FF /* Used bits */
#define MA_AMR_RTC 0x00000000 /* Alarm Mask Register */
#define MA_AMR_RTC_MASK 0x000000FF /* Used bits */
#define MA_SEC_RTC 0x00000000 /* Seconds Register */
#define MA_SEC_RTC_MASK 0x0000003F /* Used bits */
#define MA_MIN_RTC 0x00000000 /* Minutes Register */
#define MA_MIN_RTC_MASK 0x0000003F /* Used bits */
#define MA_HOUR_RTC 0x00000000 /* Hours Register */
#define MA_HOUR_RTC_MASK 0x0000001F /* Used bits */
#define MA_DOM_RTC 0x00000000 /* Day of Month Register */
#define MA_DOM_RTC_MASK 0x0000001F /* Used bits */
#define MA_DOW_RTC 0x00000000 /* Day of Week Register */
#define MA_DOW_RTC_MASK 0x00000007 /* Used bits */
#define MA_DOY_RTC 0x00000000 /* Day of Year Register */
#define MA_DOY_RTC_MASK 0x000001FF /* Used bits */
#define MA_MONTH_RTC 0x00000000 /* Months Register */
#define MA_MONTH_RTC_MASK 0x0000000F /* Used bits */
#define MA_YEAR_RTC 0x00000000 /* Years Register */
#define MA_YEAR_RTC_MASK 0x00000FFF /* Used bits */
#define MA_ALSEC_RTC 0x00000000 /* Alarm value for Seconds */
#define MA_ALSEC_RTC_MASK 0x0000003F /* Used bits */
#define MA_ALMIN_RTC 0x00000000 /* Alarm value for Minutes */
#define MA_ALMIN_RTC_MASK 0x0000003F /* Used bits */
#define MA_ALHOUR_RTC 0x00000000 /* Alarm value for Hours */
#define MA_ALHOUR_RTC_MASK 0x0000001F /* Used bits */
#define MA_ALDOM_RTC 0x00000000 /* Alarm value for Day of Month */
#define MA_ALDOM_RTC_MASK 0x0000001F /* Used bits */
#define MA_ALDOW_RTC 0x00000000 /* Alarm value for Day of Week */
#define MA_ALDOW_RTC_MASK 0x00000007 /* Used bits */
#define MA_ALDOY_RTC 0x00000000 /* Alarm value for Day of Year */
#define MA_ALDOY_RTC_MASK 0x000001FF /* Used bits */
#define MA_ALMON_RTC 0x00000000 /* Alarm value for Month */
#define MA_ALMON_RTC_MASK 0x0000000F /* Used bits */
#define MA_ALYEAR_RTC 0x00000000 /* Alarm value for Year */
#define MA_ALYEAR_RTC_MASK 0x00000FFF /* Used bits */
#define MA_PREINT_RTC 0x0000004B /* Prescaler value, integer portion */
#define MA_PREINT_RTC_MASK 0x00001FFF /* Used bits */
#define MA_PREFRAC_RTC 0x000025A0 /* Prescaler value, fraction portion */
#define MA_PREFRAC_RTC_MASK 0x00007FFF /* Used bits */
/*
**===========================================================================
** 3.2 Internal macros
**===========================================================================
*/
/*
**===========================================================================
** 3.3 Internal type definitions
**===========================================================================
*/
/*
**===========================================================================
** 3.4 Global variables (declared as 'extern' in some header file)
**===========================================================================
*/
/*
**===========================================================================
** 3.5 Internal function prototypes (defined in Section 5)
**===========================================================================
*/
/*
**===========================================================================
** 3.6 Internal variables
**===========================================================================
*/
/*
**===========================================================================
** 4. GLOBAL FUNCTIONS (declared as 'extern' in some header file)
**===========================================================================
*/
void MA_Init_RTC( void )
/*
**---------------------------------------------------------------------------
**
** Abstract:
** Initializes the RTC module. The RTC is not started. Use
** MA_Start_RTC() to start the time counters.
**
** Parameters:
** None
**
** Returns:
** None
**
**---------------------------------------------------------------------------
*/
{
/*--- Handle user code on function entry ---*/
ENTER_MA_INIT_RTC;
/*--- Initialize registers ---*/
AMR = ( AMR & ~MA_AMR_RTC_MASK ) | MA_AMR_RTC;
CIIR = ( CIIR & ~MA_CIIR_RTC_MASK ) | MA_CIIR_RTC;
CCR = ( CCR & ~MA_CCR_RTC_MASK ) | MA_CCR_RTC;
PREINT = ( PREINT & ~MA_PREINT_RTC_MASK ) | MA_PREINT_RTC;
PREFRAC = ( PREFRAC & ~MA_PREFRAC_RTC_MASK ) | MA_PREFRAC_RTC;
/*--- Handle user code on function exit ---*/
EXIT_MA_INIT_RTC;
} /* MA_Init_RTC */
void MA_Start_RTC( void )
/*
**---------------------------------------------------------------------------
**
** Abstract:
** Enables the time counters.
**
** Parameters:
** None
**
** Returns:
** None
**
**---------------------------------------------------------------------------
*/
{
/*--- Handle user code on function entry ---*/
ENTER_MA_START_RTC;
/*--- Start RTC counters ---*/
CCR_bit.CLKEN = 1;
/*--- Handle user code on function exit ---*/
EXIT_MA_START_RTC;
} /* MA_Start_RTC */
void MA_Stop_RTC( void )
/*
**---------------------------------------------------------------------------
**
** Abstract:
** Disables the time counters.
**
** Parameters:
** None
**
** Returns:
** None
**
**---------------------------------------------------------------------------
*/
{
/*--- Handle user code on function entry ---*/
ENTER_MA_STOP_RTC;
/*--- Stop RTC counters ---*/
CCR_bit.CLKEN = 0;
/*--- Handle user code on function exit ---*/
EXIT_MA_STOP_RTC;
} /* MA_Stop_RTC */
void MA_ResetCTC_RTC( void )
/*
**---------------------------------------------------------------------------
**
** Abstract:
** Resets the Clock Tick Counter to zero.
**
** Parameters:
** None
**
** Returns:
** None
**
**---------------------------------------------------------------------------
*/
{
/*--- Handle user code on function entry ---*/
ENTER_MA_RESETCTC_RTC;
/*--- Reset CTC ---*/
CCR_bit.CTCRST = 1;
/*--- Handle user code on function exit ---*/
EXIT_MA_RESETCTC_RTC;
} /* MA_ResetCTC_RTC */
void MA_SetTime_RTC( MA_RtcTime Time )
/*
**---------------------------------------------------------------------------
**
** Abstract:
** Sets RTC time counters.
**
** Parameters:
** Time Time structure with RTC time to be set:
** struct {
** int MA_Sec; Second value - [0,59]
** int MA_Min; Minute value - [0,59]
** int MA_Hour; Hour value - [0,23]
** int MA_Mday; Day of the month value - [1,31]
** int MA_Mon; Month value - [1,12]
** int MA_Year; Year value - [0,4095]
** int MA_Wday; Day of week value - [0,6]
** int MA_Yday; Day of year value - [1,365]
** } MA_RtcTime;
**
**
** Returns:
** None
**
**---------------------------------------------------------------------------
*/
{
/*--- Handle user code on function entry ---*/
ENTER_MA_SETTIME_RTC;
SEC = Time.MA_Sec;
MIN = Time.MA_Min;
HOUR = Time.MA_Hour;
DOM = Time.MA_Mday;
DOW = Time.MA_Wday;
DOY = Time.MA_Yday;
MONTH = Time.MA_Mon;
YEAR = Time.MA_Year;
/*--- Handle user code on function exit ---*/
EXIT_MA_SETTIME_RTC;
} /* MA_SetTime_RTC */
void MA_SetAlarm_RTC( MA_RtcTime Alarm )
/*
**---------------------------------------------------------------------------
**
** Abstract:
** Sets the RTC Alarm registers.
**
** Parameters:
** Alarm Time structure with wanted alarm values:
** struct {
** int MA_Sec; Second value - [0,59]
** int MA_Min; Minute value - [0,59]
** int MA_Hour; Hour value - [0,23]
** int MA_Mday; Day of the month value - [1,31]
** int MA_Mon; Month value - [1,12]
** int MA_Year; Year value - [0,4095]
** int MA_Wday; Day of week value - [0,6]
** int MA_Yday; Day of year value - [1,365]
** } MA_RtcTime;
**
** Returns:
** None
**
**---------------------------------------------------------------------------
*/
{
/*--- Handle user code on function entry ---*/
ENTER_MA_SETALARM_RTC;
ALSEC = Alarm.MA_Sec;
ALMIN = Alarm.MA_Min;
ALHOUR = Alarm.MA_Hour;
ALDOM = Alarm.MA_Mday;
ALDOW = Alarm.MA_Wday;
ALDOY = Alarm.MA_Yday;
ALMON = Alarm.MA_Mon;
ALYEAR = Alarm.MA_Year;
/*--- Handle user code on function exit ---*/
EXIT_MA_SETALARM_RTC;
} /* MA_SetAlarm_RTC */
MA_RtcTime MA_GetTime_RTC( void )
/*
**---------------------------------------------------------------------------
**
** Abstract:
** Gets current RTC time value.
**
** Parameters:
** None
**
** Returns:
** Time structure with current time counter values:
** struct {
** int MA_Sec; Second value - [0,59]
** int MA_Min; Minute value - [0,59]
** int MA_Hour; Hour value - [0,23]
** int MA_Mday; Day of the month value - [1,31]
** int MA_Mon; Month value - [1,12]
** int MA_Year; Year value - [0,4095]
** int MA_Wday; Day of week value - [0,6]
** int MA_Yday; Day of year value - [1,365]
** } MA_RtcTime;
**
**---------------------------------------------------------------------------
*/
{
MA_RtcTime LocalTime;
/*--- Handle user code on function entry ---*/
ENTER_MA_GETTIME_RTC;
LocalTime.MA_Sec = SEC;
LocalTime.MA_Min = MIN;
LocalTime.MA_Hour = HOUR;
LocalTime.MA_Mday = DOM;
LocalTime.MA_Wday = DOW;
LocalTime.MA_Yday = DOY;
LocalTime.MA_Mon = MONTH;
LocalTime.MA_Year = YEAR;
/*--- Handle user code on function exit ---*/
EXIT_MA_GETTIME_RTC;
return LocalTime;
} /* MA_GetTime_RTC */
void MA_SetAlarmMask_RTC( U8 AlarmMask )
/*
**---------------------------------------------------------------------------
**
** Abstract:
** Enables/Disables Alarm registers used for Alarm interrupt generation.
**
** Parameters:
** AlarmMask To enable an alarm register to be used in alarm generation,
** set bit in the mask to '0' according to below
** Bit 0: Second value is used
** Bit 1: Minutes value is used
** Bit 2: Hour value is used
** Bit 3: Day of Month value is used
** Bit 4: Day of Week value is used
** Bit 5: Day of year value is used
** Bit 6: Month value is used
** Bit 7: Year value is used
**
** To disable an alarm register, set the corresponding bit to
** '1' in the mask.
**
** Returns:
** None
**
**---------------------------------------------------------------------------
*/
{
/*--- Handle user code on function entry ---*/
ENTER_MA_SETALARMMASK_RTC;
/*--- Set alarm mask ---*/
AMR = AlarmMask;
/*--- Handle user code on function exit ---*/
EXIT_MA_SETALARMMASK_RTC;
} /* MA_SetAlarmMask_RTC */
/*
**===========================================================================
** 5. INTERNAL FUNCTIONS (declared in Section 3.5)
**===========================================================================
*/
/*
**===========================================================================
** END OF FILE
**===========================================================================
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -