⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ma_rtc.c

📁 NXP LPC系列AMR7的开发程序源码(LCD
💻 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 + -