Fork of Smoothie to port to mbed non-LPC targets.

Dependencies:   mbed

Fork of Smoothie by Stéphane Cachat

Committer:
Michael J. Spencer
Date:
Fri Feb 28 18:52:52 2014 -0800
Revision:
2:1df0b61d3b5a
Update to latest Smoothie.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Michael J. Spencer 2:1df0b61d3b5a 1 #ifdef __LPC17XX__
Michael J. Spencer 2:1df0b61d3b5a 2
Michael J. Spencer 2:1df0b61d3b5a 3 /**********************************************************************
Michael J. Spencer 2:1df0b61d3b5a 4 * $Id$ lpc17xx_rtc.c 2011-06-06
Michael J. Spencer 2:1df0b61d3b5a 5 *//**
Michael J. Spencer 2:1df0b61d3b5a 6 * @file lpc17xx_rtc.c
Michael J. Spencer 2:1df0b61d3b5a 7 * @brief Contains all functions support for RTC firmware library on LPC17xx
Michael J. Spencer 2:1df0b61d3b5a 8 * @version 3.1
Michael J. Spencer 2:1df0b61d3b5a 9 * @date 6. June. 2011
Michael J. Spencer 2:1df0b61d3b5a 10 * @author NXP MCU SW Application Team
Michael J. Spencer 2:1df0b61d3b5a 11 *
Michael J. Spencer 2:1df0b61d3b5a 12 * Copyright(C) 2011, NXP Semiconductor
Michael J. Spencer 2:1df0b61d3b5a 13 * All rights reserved.
Michael J. Spencer 2:1df0b61d3b5a 14 *
Michael J. Spencer 2:1df0b61d3b5a 15 ***********************************************************************
Michael J. Spencer 2:1df0b61d3b5a 16 * Software that is described herein is for illustrative purposes only
Michael J. Spencer 2:1df0b61d3b5a 17 * which provides customers with programming information regarding the
Michael J. Spencer 2:1df0b61d3b5a 18 * products. This software is supplied "AS IS" without any warranties.
Michael J. Spencer 2:1df0b61d3b5a 19 * NXP Semiconductors assumes no responsibility or liability for the
Michael J. Spencer 2:1df0b61d3b5a 20 * use of the software, conveys no license or title under any patent,
Michael J. Spencer 2:1df0b61d3b5a 21 * copyright, or mask work right to the product. NXP Semiconductors
Michael J. Spencer 2:1df0b61d3b5a 22 * reserves the right to make changes in the software without
Michael J. Spencer 2:1df0b61d3b5a 23 * notification. NXP Semiconductors also make no representation or
Michael J. Spencer 2:1df0b61d3b5a 24 * warranty that such application will be suitable for the specified
Michael J. Spencer 2:1df0b61d3b5a 25 * use without further testing or modification.
Michael J. Spencer 2:1df0b61d3b5a 26 **********************************************************************/
Michael J. Spencer 2:1df0b61d3b5a 27
Michael J. Spencer 2:1df0b61d3b5a 28
Michael J. Spencer 2:1df0b61d3b5a 29 /* Peripheral group ----------------------------------------------------------- */
Michael J. Spencer 2:1df0b61d3b5a 30 /** @addtogroup RTC
Michael J. Spencer 2:1df0b61d3b5a 31 * @{
Michael J. Spencer 2:1df0b61d3b5a 32 */
Michael J. Spencer 2:1df0b61d3b5a 33
Michael J. Spencer 2:1df0b61d3b5a 34 /* Includes ------------------------------------------------------------------- */
Michael J. Spencer 2:1df0b61d3b5a 35 #include "lpc17xx_rtc.h"
Michael J. Spencer 2:1df0b61d3b5a 36 #include "lpc17xx_clkpwr.h"
Michael J. Spencer 2:1df0b61d3b5a 37
Michael J. Spencer 2:1df0b61d3b5a 38
Michael J. Spencer 2:1df0b61d3b5a 39 /* If this source file built with example, the LPC17xx FW library configuration
Michael J. Spencer 2:1df0b61d3b5a 40 * file in each example directory ("lpc17xx_libcfg.h") must be included,
Michael J. Spencer 2:1df0b61d3b5a 41 * otherwise the default FW library configuration file must be included instead
Michael J. Spencer 2:1df0b61d3b5a 42 */
Michael J. Spencer 2:1df0b61d3b5a 43 #ifdef __BUILD_WITH_EXAMPLE__
Michael J. Spencer 2:1df0b61d3b5a 44 #include "lpc17xx_libcfg.h"
Michael J. Spencer 2:1df0b61d3b5a 45 #else
Michael J. Spencer 2:1df0b61d3b5a 46 #include "lpc17xx_libcfg_default.h"
Michael J. Spencer 2:1df0b61d3b5a 47 #endif /* __BUILD_WITH_EXAMPLE__ */
Michael J. Spencer 2:1df0b61d3b5a 48
Michael J. Spencer 2:1df0b61d3b5a 49
Michael J. Spencer 2:1df0b61d3b5a 50 #ifdef _RTC
Michael J. Spencer 2:1df0b61d3b5a 51
Michael J. Spencer 2:1df0b61d3b5a 52 /* Public Functions ----------------------------------------------------------- */
Michael J. Spencer 2:1df0b61d3b5a 53 /** @addtogroup RTC_Public_Functions
Michael J. Spencer 2:1df0b61d3b5a 54 * @{
Michael J. Spencer 2:1df0b61d3b5a 55 */
Michael J. Spencer 2:1df0b61d3b5a 56
Michael J. Spencer 2:1df0b61d3b5a 57 /********************************************************************//**
Michael J. Spencer 2:1df0b61d3b5a 58 * @brief Initializes the RTC peripheral.
Michael J. Spencer 2:1df0b61d3b5a 59 * @param[in] RTCx RTC peripheral selected, should be LPC_RTC
Michael J. Spencer 2:1df0b61d3b5a 60 * @return None
Michael J. Spencer 2:1df0b61d3b5a 61 *********************************************************************/
Michael J. Spencer 2:1df0b61d3b5a 62 void RTC_Init (LPC_RTC_TypeDef *RTCx)
Michael J. Spencer 2:1df0b61d3b5a 63 {
Michael J. Spencer 2:1df0b61d3b5a 64 CHECK_PARAM(PARAM_RTCx(RTCx));
Michael J. Spencer 2:1df0b61d3b5a 65
Michael J. Spencer 2:1df0b61d3b5a 66 /* Set up clock and power for RTC module */
Michael J. Spencer 2:1df0b61d3b5a 67 CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCRTC, ENABLE);
Michael J. Spencer 2:1df0b61d3b5a 68
Michael J. Spencer 2:1df0b61d3b5a 69 // Clear all register to be default
Michael J. Spencer 2:1df0b61d3b5a 70 RTCx->ILR = 0x00;
Michael J. Spencer 2:1df0b61d3b5a 71 RTCx->CCR = 0x00;
Michael J. Spencer 2:1df0b61d3b5a 72 RTCx->CIIR = 0x00;
Michael J. Spencer 2:1df0b61d3b5a 73 RTCx->AMR = 0xFF;
Michael J. Spencer 2:1df0b61d3b5a 74 RTCx->CALIBRATION = 0x00;
Michael J. Spencer 2:1df0b61d3b5a 75 }
Michael J. Spencer 2:1df0b61d3b5a 76
Michael J. Spencer 2:1df0b61d3b5a 77
Michael J. Spencer 2:1df0b61d3b5a 78 /*********************************************************************//**
Michael J. Spencer 2:1df0b61d3b5a 79 * @brief De-initializes the RTC peripheral registers to their
Michael J. Spencer 2:1df0b61d3b5a 80 * default reset values.
Michael J. Spencer 2:1df0b61d3b5a 81 * @param[in] RTCx RTC peripheral selected, should be LPC_RTC
Michael J. Spencer 2:1df0b61d3b5a 82 * @return None
Michael J. Spencer 2:1df0b61d3b5a 83 **********************************************************************/
Michael J. Spencer 2:1df0b61d3b5a 84 void RTC_DeInit(LPC_RTC_TypeDef *RTCx)
Michael J. Spencer 2:1df0b61d3b5a 85 {
Michael J. Spencer 2:1df0b61d3b5a 86 CHECK_PARAM(PARAM_RTCx(RTCx));
Michael J. Spencer 2:1df0b61d3b5a 87
Michael J. Spencer 2:1df0b61d3b5a 88 RTCx->CCR = 0x00;
Michael J. Spencer 2:1df0b61d3b5a 89 // Disable power and clock for RTC module
Michael J. Spencer 2:1df0b61d3b5a 90 CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCRTC, DISABLE);
Michael J. Spencer 2:1df0b61d3b5a 91 }
Michael J. Spencer 2:1df0b61d3b5a 92
Michael J. Spencer 2:1df0b61d3b5a 93 /*********************************************************************//**
Michael J. Spencer 2:1df0b61d3b5a 94 * @brief Reset clock tick counter in RTC peripheral
Michael J. Spencer 2:1df0b61d3b5a 95 * @param[in] RTCx RTC peripheral selected, should be LPC_RTC
Michael J. Spencer 2:1df0b61d3b5a 96 * @return None
Michael J. Spencer 2:1df0b61d3b5a 97 **********************************************************************/
Michael J. Spencer 2:1df0b61d3b5a 98 void RTC_ResetClockTickCounter(LPC_RTC_TypeDef *RTCx)
Michael J. Spencer 2:1df0b61d3b5a 99 {
Michael J. Spencer 2:1df0b61d3b5a 100 CHECK_PARAM(PARAM_RTCx(RTCx));
Michael J. Spencer 2:1df0b61d3b5a 101
Michael J. Spencer 2:1df0b61d3b5a 102 RTCx->CCR |= RTC_CCR_CTCRST;
Michael J. Spencer 2:1df0b61d3b5a 103 RTCx->CCR &= (~RTC_CCR_CTCRST) & RTC_CCR_BITMASK;
Michael J. Spencer 2:1df0b61d3b5a 104 }
Michael J. Spencer 2:1df0b61d3b5a 105
Michael J. Spencer 2:1df0b61d3b5a 106 /*********************************************************************//**
Michael J. Spencer 2:1df0b61d3b5a 107 * @brief Start/Stop RTC peripheral
Michael J. Spencer 2:1df0b61d3b5a 108 * @param[in] RTCx RTC peripheral selected, should be LPC_RTC
Michael J. Spencer 2:1df0b61d3b5a 109 * @param[in] NewState New State of this function, should be:
Michael J. Spencer 2:1df0b61d3b5a 110 * - ENABLE: The time counters are enabled
Michael J. Spencer 2:1df0b61d3b5a 111 * - DISABLE: The time counters are disabled
Michael J. Spencer 2:1df0b61d3b5a 112 * @return None
Michael J. Spencer 2:1df0b61d3b5a 113 **********************************************************************/
Michael J. Spencer 2:1df0b61d3b5a 114 void RTC_Cmd (LPC_RTC_TypeDef *RTCx, FunctionalState NewState)
Michael J. Spencer 2:1df0b61d3b5a 115 {
Michael J. Spencer 2:1df0b61d3b5a 116 CHECK_PARAM(PARAM_RTCx(RTCx));
Michael J. Spencer 2:1df0b61d3b5a 117 CHECK_PARAM(PARAM_FUNCTIONALSTATE(NewState));
Michael J. Spencer 2:1df0b61d3b5a 118
Michael J. Spencer 2:1df0b61d3b5a 119 if (NewState == ENABLE)
Michael J. Spencer 2:1df0b61d3b5a 120 {
Michael J. Spencer 2:1df0b61d3b5a 121 RTCx->CCR |= RTC_CCR_CLKEN;
Michael J. Spencer 2:1df0b61d3b5a 122 }
Michael J. Spencer 2:1df0b61d3b5a 123 else
Michael J. Spencer 2:1df0b61d3b5a 124 {
Michael J. Spencer 2:1df0b61d3b5a 125 RTCx->CCR &= (~RTC_CCR_CLKEN) & RTC_CCR_BITMASK;
Michael J. Spencer 2:1df0b61d3b5a 126 }
Michael J. Spencer 2:1df0b61d3b5a 127 }
Michael J. Spencer 2:1df0b61d3b5a 128
Michael J. Spencer 2:1df0b61d3b5a 129
Michael J. Spencer 2:1df0b61d3b5a 130 /*********************************************************************//**
Michael J. Spencer 2:1df0b61d3b5a 131 * @brief Enable/Disable Counter increment interrupt for each time type
Michael J. Spencer 2:1df0b61d3b5a 132 * in RTC peripheral
Michael J. Spencer 2:1df0b61d3b5a 133 * @param[in] RTCx RTC peripheral selected, should be LPC_RTC
Michael J. Spencer 2:1df0b61d3b5a 134 * @param[in] CntIncrIntType: Counter Increment Interrupt type,
Michael J. Spencer 2:1df0b61d3b5a 135 * an increment of this type value below will generates
Michael J. Spencer 2:1df0b61d3b5a 136 * an interrupt, should be:
Michael J. Spencer 2:1df0b61d3b5a 137 * - RTC_TIMETYPE_SECOND
Michael J. Spencer 2:1df0b61d3b5a 138 * - RTC_TIMETYPE_MINUTE
Michael J. Spencer 2:1df0b61d3b5a 139 * - RTC_TIMETYPE_HOUR
Michael J. Spencer 2:1df0b61d3b5a 140 * - RTC_TIMETYPE_DAYOFWEEK
Michael J. Spencer 2:1df0b61d3b5a 141 * - RTC_TIMETYPE_DAYOFMONTH
Michael J. Spencer 2:1df0b61d3b5a 142 * - RTC_TIMETYPE_DAYOFYEAR
Michael J. Spencer 2:1df0b61d3b5a 143 * - RTC_TIMETYPE_MONTH
Michael J. Spencer 2:1df0b61d3b5a 144 * - RTC_TIMETYPE_YEAR
Michael J. Spencer 2:1df0b61d3b5a 145 * @param[in] NewState New State of this function, should be:
Michael J. Spencer 2:1df0b61d3b5a 146 * - ENABLE: Counter Increment interrupt for this
Michael J. Spencer 2:1df0b61d3b5a 147 * time type are enabled
Michael J. Spencer 2:1df0b61d3b5a 148 * - DISABLE: Counter Increment interrupt for this
Michael J. Spencer 2:1df0b61d3b5a 149 * time type are disabled
Michael J. Spencer 2:1df0b61d3b5a 150 * @return None
Michael J. Spencer 2:1df0b61d3b5a 151 **********************************************************************/
Michael J. Spencer 2:1df0b61d3b5a 152 void RTC_CntIncrIntConfig (LPC_RTC_TypeDef *RTCx, uint32_t CntIncrIntType, \
Michael J. Spencer 2:1df0b61d3b5a 153 FunctionalState NewState)
Michael J. Spencer 2:1df0b61d3b5a 154 {
Michael J. Spencer 2:1df0b61d3b5a 155 CHECK_PARAM(PARAM_RTCx(RTCx));
Michael J. Spencer 2:1df0b61d3b5a 156 CHECK_PARAM(PARAM_FUNCTIONALSTATE(NewState));
Michael J. Spencer 2:1df0b61d3b5a 157 CHECK_PARAM(PARAM_RTC_TIMETYPE(CntIncrIntType));
Michael J. Spencer 2:1df0b61d3b5a 158
Michael J. Spencer 2:1df0b61d3b5a 159 if (NewState == ENABLE)
Michael J. Spencer 2:1df0b61d3b5a 160 {
Michael J. Spencer 2:1df0b61d3b5a 161 switch (CntIncrIntType)
Michael J. Spencer 2:1df0b61d3b5a 162 {
Michael J. Spencer 2:1df0b61d3b5a 163 case RTC_TIMETYPE_SECOND:
Michael J. Spencer 2:1df0b61d3b5a 164 RTCx->CIIR |= RTC_CIIR_IMSEC;
Michael J. Spencer 2:1df0b61d3b5a 165 break;
Michael J. Spencer 2:1df0b61d3b5a 166 case RTC_TIMETYPE_MINUTE:
Michael J. Spencer 2:1df0b61d3b5a 167 RTCx->CIIR |= RTC_CIIR_IMMIN;
Michael J. Spencer 2:1df0b61d3b5a 168 break;
Michael J. Spencer 2:1df0b61d3b5a 169 case RTC_TIMETYPE_HOUR:
Michael J. Spencer 2:1df0b61d3b5a 170 RTCx->CIIR |= RTC_CIIR_IMHOUR;
Michael J. Spencer 2:1df0b61d3b5a 171 break;
Michael J. Spencer 2:1df0b61d3b5a 172 case RTC_TIMETYPE_DAYOFWEEK:
Michael J. Spencer 2:1df0b61d3b5a 173 RTCx->CIIR |= RTC_CIIR_IMDOW;
Michael J. Spencer 2:1df0b61d3b5a 174 break;
Michael J. Spencer 2:1df0b61d3b5a 175 case RTC_TIMETYPE_DAYOFMONTH:
Michael J. Spencer 2:1df0b61d3b5a 176 RTCx->CIIR |= RTC_CIIR_IMDOM;
Michael J. Spencer 2:1df0b61d3b5a 177 break;
Michael J. Spencer 2:1df0b61d3b5a 178 case RTC_TIMETYPE_DAYOFYEAR:
Michael J. Spencer 2:1df0b61d3b5a 179 RTCx->CIIR |= RTC_CIIR_IMDOY;
Michael J. Spencer 2:1df0b61d3b5a 180 break;
Michael J. Spencer 2:1df0b61d3b5a 181 case RTC_TIMETYPE_MONTH:
Michael J. Spencer 2:1df0b61d3b5a 182 RTCx->CIIR |= RTC_CIIR_IMMON;
Michael J. Spencer 2:1df0b61d3b5a 183 break;
Michael J. Spencer 2:1df0b61d3b5a 184 case RTC_TIMETYPE_YEAR:
Michael J. Spencer 2:1df0b61d3b5a 185 RTCx->CIIR |= RTC_CIIR_IMYEAR;
Michael J. Spencer 2:1df0b61d3b5a 186 break;
Michael J. Spencer 2:1df0b61d3b5a 187 }
Michael J. Spencer 2:1df0b61d3b5a 188 }
Michael J. Spencer 2:1df0b61d3b5a 189 else
Michael J. Spencer 2:1df0b61d3b5a 190 {
Michael J. Spencer 2:1df0b61d3b5a 191 switch (CntIncrIntType)
Michael J. Spencer 2:1df0b61d3b5a 192 {
Michael J. Spencer 2:1df0b61d3b5a 193 case RTC_TIMETYPE_SECOND:
Michael J. Spencer 2:1df0b61d3b5a 194 RTCx->CIIR &= (~RTC_CIIR_IMSEC) & RTC_CIIR_BITMASK;
Michael J. Spencer 2:1df0b61d3b5a 195 break;
Michael J. Spencer 2:1df0b61d3b5a 196 case RTC_TIMETYPE_MINUTE:
Michael J. Spencer 2:1df0b61d3b5a 197 RTCx->CIIR &= (~RTC_CIIR_IMMIN) & RTC_CIIR_BITMASK;
Michael J. Spencer 2:1df0b61d3b5a 198 break;
Michael J. Spencer 2:1df0b61d3b5a 199 case RTC_TIMETYPE_HOUR:
Michael J. Spencer 2:1df0b61d3b5a 200 RTCx->CIIR &= (~RTC_CIIR_IMHOUR) & RTC_CIIR_BITMASK;
Michael J. Spencer 2:1df0b61d3b5a 201 break;
Michael J. Spencer 2:1df0b61d3b5a 202 case RTC_TIMETYPE_DAYOFWEEK:
Michael J. Spencer 2:1df0b61d3b5a 203 RTCx->CIIR &= (~RTC_CIIR_IMDOW) & RTC_CIIR_BITMASK;
Michael J. Spencer 2:1df0b61d3b5a 204 break;
Michael J. Spencer 2:1df0b61d3b5a 205 case RTC_TIMETYPE_DAYOFMONTH:
Michael J. Spencer 2:1df0b61d3b5a 206 RTCx->CIIR &= (~RTC_CIIR_IMDOM) & RTC_CIIR_BITMASK;
Michael J. Spencer 2:1df0b61d3b5a 207 break;
Michael J. Spencer 2:1df0b61d3b5a 208 case RTC_TIMETYPE_DAYOFYEAR:
Michael J. Spencer 2:1df0b61d3b5a 209 RTCx->CIIR &= (~RTC_CIIR_IMDOY) & RTC_CIIR_BITMASK;
Michael J. Spencer 2:1df0b61d3b5a 210 break;
Michael J. Spencer 2:1df0b61d3b5a 211 case RTC_TIMETYPE_MONTH:
Michael J. Spencer 2:1df0b61d3b5a 212 RTCx->CIIR &= (~RTC_CIIR_IMMON) & RTC_CIIR_BITMASK;
Michael J. Spencer 2:1df0b61d3b5a 213 break;
Michael J. Spencer 2:1df0b61d3b5a 214 case RTC_TIMETYPE_YEAR:
Michael J. Spencer 2:1df0b61d3b5a 215 RTCx->CIIR &= (~RTC_CIIR_IMYEAR) & RTC_CIIR_BITMASK;
Michael J. Spencer 2:1df0b61d3b5a 216 break;
Michael J. Spencer 2:1df0b61d3b5a 217 }
Michael J. Spencer 2:1df0b61d3b5a 218 }
Michael J. Spencer 2:1df0b61d3b5a 219 }
Michael J. Spencer 2:1df0b61d3b5a 220
Michael J. Spencer 2:1df0b61d3b5a 221
Michael J. Spencer 2:1df0b61d3b5a 222 /*********************************************************************//**
Michael J. Spencer 2:1df0b61d3b5a 223 * @brief Enable/Disable Alarm interrupt for each time type
Michael J. Spencer 2:1df0b61d3b5a 224 * in RTC peripheral
Michael J. Spencer 2:1df0b61d3b5a 225 * @param[in] RTCx RTC peripheral selected, should be LPC_RTC
Michael J. Spencer 2:1df0b61d3b5a 226 * @param[in] AlarmTimeType: Alarm Time Interrupt type,
Michael J. Spencer 2:1df0b61d3b5a 227 * an matching of this type value below with current time
Michael J. Spencer 2:1df0b61d3b5a 228 * in RTC will generates an interrupt, should be:
Michael J. Spencer 2:1df0b61d3b5a 229 * - RTC_TIMETYPE_SECOND
Michael J. Spencer 2:1df0b61d3b5a 230 * - RTC_TIMETYPE_MINUTE
Michael J. Spencer 2:1df0b61d3b5a 231 * - RTC_TIMETYPE_HOUR
Michael J. Spencer 2:1df0b61d3b5a 232 * - RTC_TIMETYPE_DAYOFWEEK
Michael J. Spencer 2:1df0b61d3b5a 233 * - RTC_TIMETYPE_DAYOFMONTH
Michael J. Spencer 2:1df0b61d3b5a 234 * - RTC_TIMETYPE_DAYOFYEAR
Michael J. Spencer 2:1df0b61d3b5a 235 * - RTC_TIMETYPE_MONTH
Michael J. Spencer 2:1df0b61d3b5a 236 * - RTC_TIMETYPE_YEAR
Michael J. Spencer 2:1df0b61d3b5a 237 * @param[in] NewState New State of this function, should be:
Michael J. Spencer 2:1df0b61d3b5a 238 * - ENABLE: Alarm interrupt for this
Michael J. Spencer 2:1df0b61d3b5a 239 * time type are enabled
Michael J. Spencer 2:1df0b61d3b5a 240 * - DISABLE: Alarm interrupt for this
Michael J. Spencer 2:1df0b61d3b5a 241 * time type are disabled
Michael J. Spencer 2:1df0b61d3b5a 242 * @return None
Michael J. Spencer 2:1df0b61d3b5a 243 **********************************************************************/
Michael J. Spencer 2:1df0b61d3b5a 244 void RTC_AlarmIntConfig (LPC_RTC_TypeDef *RTCx, uint32_t AlarmTimeType, \
Michael J. Spencer 2:1df0b61d3b5a 245 FunctionalState NewState)
Michael J. Spencer 2:1df0b61d3b5a 246 {
Michael J. Spencer 2:1df0b61d3b5a 247 CHECK_PARAM(PARAM_RTCx(RTCx));
Michael J. Spencer 2:1df0b61d3b5a 248 CHECK_PARAM(PARAM_FUNCTIONALSTATE(NewState));
Michael J. Spencer 2:1df0b61d3b5a 249 CHECK_PARAM(PARAM_RTC_TIMETYPE(AlarmTimeType));
Michael J. Spencer 2:1df0b61d3b5a 250
Michael J. Spencer 2:1df0b61d3b5a 251 if (NewState == ENABLE)
Michael J. Spencer 2:1df0b61d3b5a 252 {
Michael J. Spencer 2:1df0b61d3b5a 253 switch (AlarmTimeType)
Michael J. Spencer 2:1df0b61d3b5a 254 {
Michael J. Spencer 2:1df0b61d3b5a 255 case RTC_TIMETYPE_SECOND:
Michael J. Spencer 2:1df0b61d3b5a 256 RTCx->AMR &= (~RTC_AMR_AMRSEC) & RTC_AMR_BITMASK;
Michael J. Spencer 2:1df0b61d3b5a 257 break;
Michael J. Spencer 2:1df0b61d3b5a 258 case RTC_TIMETYPE_MINUTE:
Michael J. Spencer 2:1df0b61d3b5a 259 RTCx->AMR &= (~RTC_AMR_AMRMIN) & RTC_AMR_BITMASK;
Michael J. Spencer 2:1df0b61d3b5a 260 break;
Michael J. Spencer 2:1df0b61d3b5a 261 case RTC_TIMETYPE_HOUR:
Michael J. Spencer 2:1df0b61d3b5a 262 RTCx->AMR &= (~RTC_AMR_AMRHOUR) & RTC_AMR_BITMASK;
Michael J. Spencer 2:1df0b61d3b5a 263 break;
Michael J. Spencer 2:1df0b61d3b5a 264 case RTC_TIMETYPE_DAYOFWEEK:
Michael J. Spencer 2:1df0b61d3b5a 265 RTCx->AMR &= (~RTC_AMR_AMRDOW) & RTC_AMR_BITMASK;
Michael J. Spencer 2:1df0b61d3b5a 266 break;
Michael J. Spencer 2:1df0b61d3b5a 267 case RTC_TIMETYPE_DAYOFMONTH:
Michael J. Spencer 2:1df0b61d3b5a 268 RTCx->AMR &= (~RTC_AMR_AMRDOM) & RTC_AMR_BITMASK;
Michael J. Spencer 2:1df0b61d3b5a 269 break;
Michael J. Spencer 2:1df0b61d3b5a 270 case RTC_TIMETYPE_DAYOFYEAR:
Michael J. Spencer 2:1df0b61d3b5a 271 RTCx->AMR &= (~RTC_AMR_AMRDOY) & RTC_AMR_BITMASK;
Michael J. Spencer 2:1df0b61d3b5a 272 break;
Michael J. Spencer 2:1df0b61d3b5a 273 case RTC_TIMETYPE_MONTH:
Michael J. Spencer 2:1df0b61d3b5a 274 RTCx->AMR &= (~RTC_AMR_AMRMON) & RTC_AMR_BITMASK;
Michael J. Spencer 2:1df0b61d3b5a 275 break;
Michael J. Spencer 2:1df0b61d3b5a 276 case RTC_TIMETYPE_YEAR:
Michael J. Spencer 2:1df0b61d3b5a 277 RTCx->AMR &= (~RTC_AMR_AMRYEAR) & RTC_AMR_BITMASK;
Michael J. Spencer 2:1df0b61d3b5a 278 break;
Michael J. Spencer 2:1df0b61d3b5a 279 }
Michael J. Spencer 2:1df0b61d3b5a 280 }
Michael J. Spencer 2:1df0b61d3b5a 281 else
Michael J. Spencer 2:1df0b61d3b5a 282 {
Michael J. Spencer 2:1df0b61d3b5a 283 switch (AlarmTimeType)
Michael J. Spencer 2:1df0b61d3b5a 284 {
Michael J. Spencer 2:1df0b61d3b5a 285 case RTC_TIMETYPE_SECOND:
Michael J. Spencer 2:1df0b61d3b5a 286 RTCx->AMR |= (RTC_AMR_AMRSEC);
Michael J. Spencer 2:1df0b61d3b5a 287 break;
Michael J. Spencer 2:1df0b61d3b5a 288 case RTC_TIMETYPE_MINUTE:
Michael J. Spencer 2:1df0b61d3b5a 289 RTCx->AMR |= (RTC_AMR_AMRMIN);
Michael J. Spencer 2:1df0b61d3b5a 290 break;
Michael J. Spencer 2:1df0b61d3b5a 291 case RTC_TIMETYPE_HOUR:
Michael J. Spencer 2:1df0b61d3b5a 292 RTCx->AMR |= (RTC_AMR_AMRHOUR);
Michael J. Spencer 2:1df0b61d3b5a 293 break;
Michael J. Spencer 2:1df0b61d3b5a 294 case RTC_TIMETYPE_DAYOFWEEK:
Michael J. Spencer 2:1df0b61d3b5a 295 RTCx->AMR |= (RTC_AMR_AMRDOW);
Michael J. Spencer 2:1df0b61d3b5a 296 break;
Michael J. Spencer 2:1df0b61d3b5a 297 case RTC_TIMETYPE_DAYOFMONTH:
Michael J. Spencer 2:1df0b61d3b5a 298 RTCx->AMR |= (RTC_AMR_AMRDOM);
Michael J. Spencer 2:1df0b61d3b5a 299 break;
Michael J. Spencer 2:1df0b61d3b5a 300 case RTC_TIMETYPE_DAYOFYEAR:
Michael J. Spencer 2:1df0b61d3b5a 301 RTCx->AMR |= (RTC_AMR_AMRDOY);
Michael J. Spencer 2:1df0b61d3b5a 302 break;
Michael J. Spencer 2:1df0b61d3b5a 303 case RTC_TIMETYPE_MONTH:
Michael J. Spencer 2:1df0b61d3b5a 304 RTCx->AMR |= (RTC_AMR_AMRMON);
Michael J. Spencer 2:1df0b61d3b5a 305 break;
Michael J. Spencer 2:1df0b61d3b5a 306 case RTC_TIMETYPE_YEAR:
Michael J. Spencer 2:1df0b61d3b5a 307 RTCx->AMR |= (RTC_AMR_AMRYEAR);
Michael J. Spencer 2:1df0b61d3b5a 308 break;
Michael J. Spencer 2:1df0b61d3b5a 309 }
Michael J. Spencer 2:1df0b61d3b5a 310 }
Michael J. Spencer 2:1df0b61d3b5a 311 }
Michael J. Spencer 2:1df0b61d3b5a 312
Michael J. Spencer 2:1df0b61d3b5a 313
Michael J. Spencer 2:1df0b61d3b5a 314 /*********************************************************************//**
Michael J. Spencer 2:1df0b61d3b5a 315 * @brief Set current time value for each time type in RTC peripheral
Michael J. Spencer 2:1df0b61d3b5a 316 * @param[in] RTCx RTC peripheral selected, should be LPC_RTC
Michael J. Spencer 2:1df0b61d3b5a 317 * @param[in] Timetype: Time Type, should be:
Michael J. Spencer 2:1df0b61d3b5a 318 * - RTC_TIMETYPE_SECOND
Michael J. Spencer 2:1df0b61d3b5a 319 * - RTC_TIMETYPE_MINUTE
Michael J. Spencer 2:1df0b61d3b5a 320 * - RTC_TIMETYPE_HOUR
Michael J. Spencer 2:1df0b61d3b5a 321 * - RTC_TIMETYPE_DAYOFWEEK
Michael J. Spencer 2:1df0b61d3b5a 322 * - RTC_TIMETYPE_DAYOFMONTH
Michael J. Spencer 2:1df0b61d3b5a 323 * - RTC_TIMETYPE_DAYOFYEAR
Michael J. Spencer 2:1df0b61d3b5a 324 * - RTC_TIMETYPE_MONTH
Michael J. Spencer 2:1df0b61d3b5a 325 * - RTC_TIMETYPE_YEAR
Michael J. Spencer 2:1df0b61d3b5a 326 * @param[in] TimeValue Time value to set
Michael J. Spencer 2:1df0b61d3b5a 327 * @return None
Michael J. Spencer 2:1df0b61d3b5a 328 **********************************************************************/
Michael J. Spencer 2:1df0b61d3b5a 329 void RTC_SetTime (LPC_RTC_TypeDef *RTCx, uint32_t Timetype, uint32_t TimeValue)
Michael J. Spencer 2:1df0b61d3b5a 330 {
Michael J. Spencer 2:1df0b61d3b5a 331 CHECK_PARAM(PARAM_RTCx(RTCx));
Michael J. Spencer 2:1df0b61d3b5a 332 CHECK_PARAM(PARAM_RTC_TIMETYPE(Timetype));
Michael J. Spencer 2:1df0b61d3b5a 333
Michael J. Spencer 2:1df0b61d3b5a 334 switch ( Timetype)
Michael J. Spencer 2:1df0b61d3b5a 335 {
Michael J. Spencer 2:1df0b61d3b5a 336 case RTC_TIMETYPE_SECOND:
Michael J. Spencer 2:1df0b61d3b5a 337 CHECK_PARAM(TimeValue <= RTC_SECOND_MAX);
Michael J. Spencer 2:1df0b61d3b5a 338
Michael J. Spencer 2:1df0b61d3b5a 339 RTCx->SEC = TimeValue & RTC_SEC_MASK;
Michael J. Spencer 2:1df0b61d3b5a 340 break;
Michael J. Spencer 2:1df0b61d3b5a 341
Michael J. Spencer 2:1df0b61d3b5a 342 case RTC_TIMETYPE_MINUTE:
Michael J. Spencer 2:1df0b61d3b5a 343 CHECK_PARAM(TimeValue <= RTC_MINUTE_MAX);
Michael J. Spencer 2:1df0b61d3b5a 344
Michael J. Spencer 2:1df0b61d3b5a 345 RTCx->MIN = TimeValue & RTC_MIN_MASK;
Michael J. Spencer 2:1df0b61d3b5a 346 break;
Michael J. Spencer 2:1df0b61d3b5a 347
Michael J. Spencer 2:1df0b61d3b5a 348 case RTC_TIMETYPE_HOUR:
Michael J. Spencer 2:1df0b61d3b5a 349 CHECK_PARAM(TimeValue <= RTC_HOUR_MAX);
Michael J. Spencer 2:1df0b61d3b5a 350
Michael J. Spencer 2:1df0b61d3b5a 351 RTCx->HOUR = TimeValue & RTC_HOUR_MASK;
Michael J. Spencer 2:1df0b61d3b5a 352 break;
Michael J. Spencer 2:1df0b61d3b5a 353
Michael J. Spencer 2:1df0b61d3b5a 354 case RTC_TIMETYPE_DAYOFWEEK:
Michael J. Spencer 2:1df0b61d3b5a 355 CHECK_PARAM(TimeValue <= RTC_DAYOFWEEK_MAX);
Michael J. Spencer 2:1df0b61d3b5a 356
Michael J. Spencer 2:1df0b61d3b5a 357 RTCx->DOW = TimeValue & RTC_DOW_MASK;
Michael J. Spencer 2:1df0b61d3b5a 358 break;
Michael J. Spencer 2:1df0b61d3b5a 359
Michael J. Spencer 2:1df0b61d3b5a 360 case RTC_TIMETYPE_DAYOFMONTH:
Michael J. Spencer 2:1df0b61d3b5a 361 CHECK_PARAM((TimeValue <= RTC_DAYOFMONTH_MAX) \
Michael J. Spencer 2:1df0b61d3b5a 362 && (TimeValue >= RTC_DAYOFMONTH_MIN));
Michael J. Spencer 2:1df0b61d3b5a 363
Michael J. Spencer 2:1df0b61d3b5a 364 RTCx->DOM = TimeValue & RTC_DOM_MASK;
Michael J. Spencer 2:1df0b61d3b5a 365 break;
Michael J. Spencer 2:1df0b61d3b5a 366
Michael J. Spencer 2:1df0b61d3b5a 367 case RTC_TIMETYPE_DAYOFYEAR:
Michael J. Spencer 2:1df0b61d3b5a 368 CHECK_PARAM((TimeValue >= RTC_DAYOFYEAR_MIN) \
Michael J. Spencer 2:1df0b61d3b5a 369 && (TimeValue <= RTC_DAYOFYEAR_MAX));
Michael J. Spencer 2:1df0b61d3b5a 370
Michael J. Spencer 2:1df0b61d3b5a 371 RTCx->DOY = TimeValue & RTC_DOY_MASK;
Michael J. Spencer 2:1df0b61d3b5a 372 break;
Michael J. Spencer 2:1df0b61d3b5a 373
Michael J. Spencer 2:1df0b61d3b5a 374 case RTC_TIMETYPE_MONTH:
Michael J. Spencer 2:1df0b61d3b5a 375 CHECK_PARAM((TimeValue >= RTC_MONTH_MIN) \
Michael J. Spencer 2:1df0b61d3b5a 376 && (TimeValue <= RTC_MONTH_MAX));
Michael J. Spencer 2:1df0b61d3b5a 377
Michael J. Spencer 2:1df0b61d3b5a 378 RTCx->MONTH = TimeValue & RTC_MONTH_MASK;
Michael J. Spencer 2:1df0b61d3b5a 379 break;
Michael J. Spencer 2:1df0b61d3b5a 380
Michael J. Spencer 2:1df0b61d3b5a 381 case RTC_TIMETYPE_YEAR:
Michael J. Spencer 2:1df0b61d3b5a 382 CHECK_PARAM(TimeValue <= RTC_YEAR_MAX);
Michael J. Spencer 2:1df0b61d3b5a 383
Michael J. Spencer 2:1df0b61d3b5a 384 RTCx->YEAR = TimeValue & RTC_YEAR_MASK;
Michael J. Spencer 2:1df0b61d3b5a 385 break;
Michael J. Spencer 2:1df0b61d3b5a 386 }
Michael J. Spencer 2:1df0b61d3b5a 387 }
Michael J. Spencer 2:1df0b61d3b5a 388
Michael J. Spencer 2:1df0b61d3b5a 389 /*********************************************************************//**
Michael J. Spencer 2:1df0b61d3b5a 390 * @brief Get current time value for each type time type
Michael J. Spencer 2:1df0b61d3b5a 391 * @param[in] RTCx RTC peripheral selected, should be LPC_RTC
Michael J. Spencer 2:1df0b61d3b5a 392 * @param[in] Timetype: Time Type, should be:
Michael J. Spencer 2:1df0b61d3b5a 393 * - RTC_TIMETYPE_SECOND
Michael J. Spencer 2:1df0b61d3b5a 394 * - RTC_TIMETYPE_MINUTE
Michael J. Spencer 2:1df0b61d3b5a 395 * - RTC_TIMETYPE_HOUR
Michael J. Spencer 2:1df0b61d3b5a 396 * - RTC_TIMETYPE_DAYOFWEEK
Michael J. Spencer 2:1df0b61d3b5a 397 * - RTC_TIMETYPE_DAYOFMONTH
Michael J. Spencer 2:1df0b61d3b5a 398 * - RTC_TIMETYPE_DAYOFYEAR
Michael J. Spencer 2:1df0b61d3b5a 399 * - RTC_TIMETYPE_MONTH
Michael J. Spencer 2:1df0b61d3b5a 400 * - RTC_TIMETYPE_YEAR
Michael J. Spencer 2:1df0b61d3b5a 401 * @return Value of time according to specified time type
Michael J. Spencer 2:1df0b61d3b5a 402 **********************************************************************/
Michael J. Spencer 2:1df0b61d3b5a 403 uint32_t RTC_GetTime(LPC_RTC_TypeDef *RTCx, uint32_t Timetype)
Michael J. Spencer 2:1df0b61d3b5a 404 {
Michael J. Spencer 2:1df0b61d3b5a 405 CHECK_PARAM(PARAM_RTCx(RTCx));
Michael J. Spencer 2:1df0b61d3b5a 406 CHECK_PARAM(PARAM_RTC_TIMETYPE(Timetype));
Michael J. Spencer 2:1df0b61d3b5a 407
Michael J. Spencer 2:1df0b61d3b5a 408 switch (Timetype)
Michael J. Spencer 2:1df0b61d3b5a 409 {
Michael J. Spencer 2:1df0b61d3b5a 410 case RTC_TIMETYPE_SECOND:
Michael J. Spencer 2:1df0b61d3b5a 411 return (RTCx->SEC & RTC_SEC_MASK);
Michael J. Spencer 2:1df0b61d3b5a 412 case RTC_TIMETYPE_MINUTE:
Michael J. Spencer 2:1df0b61d3b5a 413 return (RTCx->MIN & RTC_MIN_MASK);
Michael J. Spencer 2:1df0b61d3b5a 414 case RTC_TIMETYPE_HOUR:
Michael J. Spencer 2:1df0b61d3b5a 415 return (RTCx->HOUR & RTC_HOUR_MASK);
Michael J. Spencer 2:1df0b61d3b5a 416 case RTC_TIMETYPE_DAYOFWEEK:
Michael J. Spencer 2:1df0b61d3b5a 417 return (RTCx->DOW & RTC_DOW_MASK);
Michael J. Spencer 2:1df0b61d3b5a 418 case RTC_TIMETYPE_DAYOFMONTH:
Michael J. Spencer 2:1df0b61d3b5a 419 return (RTCx->DOM & RTC_DOM_MASK);
Michael J. Spencer 2:1df0b61d3b5a 420 case RTC_TIMETYPE_DAYOFYEAR:
Michael J. Spencer 2:1df0b61d3b5a 421 return (RTCx->DOY & RTC_DOY_MASK);
Michael J. Spencer 2:1df0b61d3b5a 422 case RTC_TIMETYPE_MONTH:
Michael J. Spencer 2:1df0b61d3b5a 423 return (RTCx->MONTH & RTC_MONTH_MASK);
Michael J. Spencer 2:1df0b61d3b5a 424 case RTC_TIMETYPE_YEAR:
Michael J. Spencer 2:1df0b61d3b5a 425 return (RTCx->YEAR & RTC_YEAR_MASK);
Michael J. Spencer 2:1df0b61d3b5a 426 default:
Michael J. Spencer 2:1df0b61d3b5a 427 return (0);
Michael J. Spencer 2:1df0b61d3b5a 428 }
Michael J. Spencer 2:1df0b61d3b5a 429 }
Michael J. Spencer 2:1df0b61d3b5a 430
Michael J. Spencer 2:1df0b61d3b5a 431
Michael J. Spencer 2:1df0b61d3b5a 432 /*********************************************************************//**
Michael J. Spencer 2:1df0b61d3b5a 433 * @brief Set full of time in RTC peripheral
Michael J. Spencer 2:1df0b61d3b5a 434 * @param[in] RTCx RTC peripheral selected, should be LPC_RTC
Michael J. Spencer 2:1df0b61d3b5a 435 * @param[in] pFullTime Pointer to a RTC_TIME_Type structure that
Michael J. Spencer 2:1df0b61d3b5a 436 * contains time value in full.
Michael J. Spencer 2:1df0b61d3b5a 437 * @return None
Michael J. Spencer 2:1df0b61d3b5a 438 **********************************************************************/
Michael J. Spencer 2:1df0b61d3b5a 439 void RTC_SetFullTime (LPC_RTC_TypeDef *RTCx, RTC_TIME_Type *pFullTime)
Michael J. Spencer 2:1df0b61d3b5a 440 {
Michael J. Spencer 2:1df0b61d3b5a 441 CHECK_PARAM(PARAM_RTCx(RTCx));
Michael J. Spencer 2:1df0b61d3b5a 442
Michael J. Spencer 2:1df0b61d3b5a 443 RTCx->DOM = pFullTime->DOM & RTC_DOM_MASK;
Michael J. Spencer 2:1df0b61d3b5a 444 RTCx->DOW = pFullTime->DOW & RTC_DOW_MASK;
Michael J. Spencer 2:1df0b61d3b5a 445 RTCx->DOY = pFullTime->DOY & RTC_DOY_MASK;
Michael J. Spencer 2:1df0b61d3b5a 446 RTCx->HOUR = pFullTime->HOUR & RTC_HOUR_MASK;
Michael J. Spencer 2:1df0b61d3b5a 447 RTCx->MIN = pFullTime->MIN & RTC_MIN_MASK;
Michael J. Spencer 2:1df0b61d3b5a 448 RTCx->SEC = pFullTime->SEC & RTC_SEC_MASK;
Michael J. Spencer 2:1df0b61d3b5a 449 RTCx->MONTH = pFullTime->MONTH & RTC_MONTH_MASK;
Michael J. Spencer 2:1df0b61d3b5a 450 RTCx->YEAR = pFullTime->YEAR & RTC_YEAR_MASK;
Michael J. Spencer 2:1df0b61d3b5a 451 }
Michael J. Spencer 2:1df0b61d3b5a 452
Michael J. Spencer 2:1df0b61d3b5a 453
Michael J. Spencer 2:1df0b61d3b5a 454 /*********************************************************************//**
Michael J. Spencer 2:1df0b61d3b5a 455 * @brief Get full of time in RTC peripheral
Michael J. Spencer 2:1df0b61d3b5a 456 * @param[in] RTCx RTC peripheral selected, should be LPC_RTC
Michael J. Spencer 2:1df0b61d3b5a 457 * @param[in] pFullTime Pointer to a RTC_TIME_Type structure that
Michael J. Spencer 2:1df0b61d3b5a 458 * will be stored time in full.
Michael J. Spencer 2:1df0b61d3b5a 459 * @return None
Michael J. Spencer 2:1df0b61d3b5a 460 **********************************************************************/
Michael J. Spencer 2:1df0b61d3b5a 461 void RTC_GetFullTime (LPC_RTC_TypeDef *RTCx, RTC_TIME_Type *pFullTime)
Michael J. Spencer 2:1df0b61d3b5a 462 {
Michael J. Spencer 2:1df0b61d3b5a 463 CHECK_PARAM(PARAM_RTCx(RTCx));
Michael J. Spencer 2:1df0b61d3b5a 464
Michael J. Spencer 2:1df0b61d3b5a 465 pFullTime->DOM = RTCx->DOM & RTC_DOM_MASK;
Michael J. Spencer 2:1df0b61d3b5a 466 pFullTime->DOW = RTCx->DOW & RTC_DOW_MASK;
Michael J. Spencer 2:1df0b61d3b5a 467 pFullTime->DOY = RTCx->DOY & RTC_DOY_MASK;
Michael J. Spencer 2:1df0b61d3b5a 468 pFullTime->HOUR = RTCx->HOUR & RTC_HOUR_MASK;
Michael J. Spencer 2:1df0b61d3b5a 469 pFullTime->MIN = RTCx->MIN & RTC_MIN_MASK;
Michael J. Spencer 2:1df0b61d3b5a 470 pFullTime->SEC = RTCx->SEC & RTC_SEC_MASK;
Michael J. Spencer 2:1df0b61d3b5a 471 pFullTime->MONTH = RTCx->MONTH & RTC_MONTH_MASK;
Michael J. Spencer 2:1df0b61d3b5a 472 pFullTime->YEAR = RTCx->YEAR & RTC_YEAR_MASK;
Michael J. Spencer 2:1df0b61d3b5a 473 }
Michael J. Spencer 2:1df0b61d3b5a 474
Michael J. Spencer 2:1df0b61d3b5a 475
Michael J. Spencer 2:1df0b61d3b5a 476 /*********************************************************************//**
Michael J. Spencer 2:1df0b61d3b5a 477 * @brief Set alarm time value for each time type
Michael J. Spencer 2:1df0b61d3b5a 478 * @param[in] RTCx RTC peripheral selected, should be LPC_RTC
Michael J. Spencer 2:1df0b61d3b5a 479 * @param[in] Timetype: Time Type, should be:
Michael J. Spencer 2:1df0b61d3b5a 480 * - RTC_TIMETYPE_SECOND
Michael J. Spencer 2:1df0b61d3b5a 481 * - RTC_TIMETYPE_MINUTE
Michael J. Spencer 2:1df0b61d3b5a 482 * - RTC_TIMETYPE_HOUR
Michael J. Spencer 2:1df0b61d3b5a 483 * - RTC_TIMETYPE_DAYOFWEEK
Michael J. Spencer 2:1df0b61d3b5a 484 * - RTC_TIMETYPE_DAYOFMONTH
Michael J. Spencer 2:1df0b61d3b5a 485 * - RTC_TIMETYPE_DAYOFYEAR
Michael J. Spencer 2:1df0b61d3b5a 486 * - RTC_TIMETYPE_MONTH
Michael J. Spencer 2:1df0b61d3b5a 487 * - RTC_TIMETYPE_YEAR
Michael J. Spencer 2:1df0b61d3b5a 488 * @param[in] ALValue Alarm time value to set
Michael J. Spencer 2:1df0b61d3b5a 489 * @return None
Michael J. Spencer 2:1df0b61d3b5a 490 **********************************************************************/
Michael J. Spencer 2:1df0b61d3b5a 491 void RTC_SetAlarmTime (LPC_RTC_TypeDef *RTCx, uint32_t Timetype, uint32_t ALValue)
Michael J. Spencer 2:1df0b61d3b5a 492 {
Michael J. Spencer 2:1df0b61d3b5a 493 CHECK_PARAM(PARAM_RTCx(RTCx));
Michael J. Spencer 2:1df0b61d3b5a 494
Michael J. Spencer 2:1df0b61d3b5a 495 switch (Timetype)
Michael J. Spencer 2:1df0b61d3b5a 496 {
Michael J. Spencer 2:1df0b61d3b5a 497 case RTC_TIMETYPE_SECOND:
Michael J. Spencer 2:1df0b61d3b5a 498 CHECK_PARAM(ALValue <= RTC_SECOND_MAX);
Michael J. Spencer 2:1df0b61d3b5a 499
Michael J. Spencer 2:1df0b61d3b5a 500 RTCx->ALSEC = ALValue & RTC_SEC_MASK;
Michael J. Spencer 2:1df0b61d3b5a 501 break;
Michael J. Spencer 2:1df0b61d3b5a 502
Michael J. Spencer 2:1df0b61d3b5a 503 case RTC_TIMETYPE_MINUTE:
Michael J. Spencer 2:1df0b61d3b5a 504 CHECK_PARAM(ALValue <= RTC_MINUTE_MAX);
Michael J. Spencer 2:1df0b61d3b5a 505
Michael J. Spencer 2:1df0b61d3b5a 506 RTCx->ALMIN = ALValue & RTC_MIN_MASK;
Michael J. Spencer 2:1df0b61d3b5a 507 break;
Michael J. Spencer 2:1df0b61d3b5a 508
Michael J. Spencer 2:1df0b61d3b5a 509 case RTC_TIMETYPE_HOUR:
Michael J. Spencer 2:1df0b61d3b5a 510 CHECK_PARAM(ALValue <= RTC_HOUR_MAX);
Michael J. Spencer 2:1df0b61d3b5a 511
Michael J. Spencer 2:1df0b61d3b5a 512 RTCx->ALHOUR = ALValue & RTC_HOUR_MASK;
Michael J. Spencer 2:1df0b61d3b5a 513 break;
Michael J. Spencer 2:1df0b61d3b5a 514
Michael J. Spencer 2:1df0b61d3b5a 515 case RTC_TIMETYPE_DAYOFWEEK:
Michael J. Spencer 2:1df0b61d3b5a 516 CHECK_PARAM(ALValue <= RTC_DAYOFWEEK_MAX);
Michael J. Spencer 2:1df0b61d3b5a 517
Michael J. Spencer 2:1df0b61d3b5a 518 RTCx->ALDOW = ALValue & RTC_DOW_MASK;
Michael J. Spencer 2:1df0b61d3b5a 519 break;
Michael J. Spencer 2:1df0b61d3b5a 520
Michael J. Spencer 2:1df0b61d3b5a 521 case RTC_TIMETYPE_DAYOFMONTH:
Michael J. Spencer 2:1df0b61d3b5a 522 CHECK_PARAM((ALValue <= RTC_DAYOFMONTH_MAX) \
Michael J. Spencer 2:1df0b61d3b5a 523 && (ALValue >= RTC_DAYOFMONTH_MIN));
Michael J. Spencer 2:1df0b61d3b5a 524
Michael J. Spencer 2:1df0b61d3b5a 525 RTCx->ALDOM = ALValue & RTC_DOM_MASK;
Michael J. Spencer 2:1df0b61d3b5a 526 break;
Michael J. Spencer 2:1df0b61d3b5a 527
Michael J. Spencer 2:1df0b61d3b5a 528 case RTC_TIMETYPE_DAYOFYEAR:
Michael J. Spencer 2:1df0b61d3b5a 529 CHECK_PARAM((ALValue >= RTC_DAYOFYEAR_MIN) \
Michael J. Spencer 2:1df0b61d3b5a 530 && (ALValue <= RTC_DAYOFYEAR_MAX));
Michael J. Spencer 2:1df0b61d3b5a 531
Michael J. Spencer 2:1df0b61d3b5a 532 RTCx->ALDOY = ALValue & RTC_DOY_MASK;
Michael J. Spencer 2:1df0b61d3b5a 533 break;
Michael J. Spencer 2:1df0b61d3b5a 534
Michael J. Spencer 2:1df0b61d3b5a 535 case RTC_TIMETYPE_MONTH:
Michael J. Spencer 2:1df0b61d3b5a 536 CHECK_PARAM((ALValue >= RTC_MONTH_MIN) \
Michael J. Spencer 2:1df0b61d3b5a 537 && (ALValue <= RTC_MONTH_MAX));
Michael J. Spencer 2:1df0b61d3b5a 538
Michael J. Spencer 2:1df0b61d3b5a 539 RTCx->ALMON = ALValue & RTC_MONTH_MASK;
Michael J. Spencer 2:1df0b61d3b5a 540 break;
Michael J. Spencer 2:1df0b61d3b5a 541
Michael J. Spencer 2:1df0b61d3b5a 542 case RTC_TIMETYPE_YEAR:
Michael J. Spencer 2:1df0b61d3b5a 543 CHECK_PARAM(ALValue <= RTC_YEAR_MAX);
Michael J. Spencer 2:1df0b61d3b5a 544
Michael J. Spencer 2:1df0b61d3b5a 545 RTCx->ALYEAR = ALValue & RTC_YEAR_MASK;
Michael J. Spencer 2:1df0b61d3b5a 546 break;
Michael J. Spencer 2:1df0b61d3b5a 547 }
Michael J. Spencer 2:1df0b61d3b5a 548 }
Michael J. Spencer 2:1df0b61d3b5a 549
Michael J. Spencer 2:1df0b61d3b5a 550
Michael J. Spencer 2:1df0b61d3b5a 551
Michael J. Spencer 2:1df0b61d3b5a 552 /*********************************************************************//**
Michael J. Spencer 2:1df0b61d3b5a 553 * @brief Get alarm time value for each time type
Michael J. Spencer 2:1df0b61d3b5a 554 * @param[in] RTCx RTC peripheral selected, should be LPC_RTC
Michael J. Spencer 2:1df0b61d3b5a 555 * @param[in] Timetype: Time Type, should be:
Michael J. Spencer 2:1df0b61d3b5a 556 * - RTC_TIMETYPE_SECOND
Michael J. Spencer 2:1df0b61d3b5a 557 * - RTC_TIMETYPE_MINUTE
Michael J. Spencer 2:1df0b61d3b5a 558 * - RTC_TIMETYPE_HOUR
Michael J. Spencer 2:1df0b61d3b5a 559 * - RTC_TIMETYPE_DAYOFWEEK
Michael J. Spencer 2:1df0b61d3b5a 560 * - RTC_TIMETYPE_DAYOFMONTH
Michael J. Spencer 2:1df0b61d3b5a 561 * - RTC_TIMETYPE_DAYOFYEAR
Michael J. Spencer 2:1df0b61d3b5a 562 * - RTC_TIMETYPE_MONTH
Michael J. Spencer 2:1df0b61d3b5a 563 * - RTC_TIMETYPE_YEAR
Michael J. Spencer 2:1df0b61d3b5a 564 * @return Value of Alarm time according to specified time type
Michael J. Spencer 2:1df0b61d3b5a 565 **********************************************************************/
Michael J. Spencer 2:1df0b61d3b5a 566 uint32_t RTC_GetAlarmTime (LPC_RTC_TypeDef *RTCx, uint32_t Timetype)
Michael J. Spencer 2:1df0b61d3b5a 567 {
Michael J. Spencer 2:1df0b61d3b5a 568 switch (Timetype)
Michael J. Spencer 2:1df0b61d3b5a 569 {
Michael J. Spencer 2:1df0b61d3b5a 570 case RTC_TIMETYPE_SECOND:
Michael J. Spencer 2:1df0b61d3b5a 571 return (RTCx->ALSEC & RTC_SEC_MASK);
Michael J. Spencer 2:1df0b61d3b5a 572 case RTC_TIMETYPE_MINUTE:
Michael J. Spencer 2:1df0b61d3b5a 573 return (RTCx->ALMIN & RTC_MIN_MASK);
Michael J. Spencer 2:1df0b61d3b5a 574 case RTC_TIMETYPE_HOUR:
Michael J. Spencer 2:1df0b61d3b5a 575 return (RTCx->ALHOUR & RTC_HOUR_MASK);
Michael J. Spencer 2:1df0b61d3b5a 576 case RTC_TIMETYPE_DAYOFWEEK:
Michael J. Spencer 2:1df0b61d3b5a 577 return (RTCx->ALDOW & RTC_DOW_MASK);
Michael J. Spencer 2:1df0b61d3b5a 578 case RTC_TIMETYPE_DAYOFMONTH:
Michael J. Spencer 2:1df0b61d3b5a 579 return (RTCx->ALDOM & RTC_DOM_MASK);
Michael J. Spencer 2:1df0b61d3b5a 580 case RTC_TIMETYPE_DAYOFYEAR:
Michael J. Spencer 2:1df0b61d3b5a 581 return (RTCx->ALDOY & RTC_DOY_MASK);
Michael J. Spencer 2:1df0b61d3b5a 582 case RTC_TIMETYPE_MONTH:
Michael J. Spencer 2:1df0b61d3b5a 583 return (RTCx->ALMON & RTC_MONTH_MASK);
Michael J. Spencer 2:1df0b61d3b5a 584 case RTC_TIMETYPE_YEAR:
Michael J. Spencer 2:1df0b61d3b5a 585 return (RTCx->ALYEAR & RTC_YEAR_MASK);
Michael J. Spencer 2:1df0b61d3b5a 586 default:
Michael J. Spencer 2:1df0b61d3b5a 587 return (0);
Michael J. Spencer 2:1df0b61d3b5a 588 }
Michael J. Spencer 2:1df0b61d3b5a 589 }
Michael J. Spencer 2:1df0b61d3b5a 590
Michael J. Spencer 2:1df0b61d3b5a 591
Michael J. Spencer 2:1df0b61d3b5a 592 /*********************************************************************//**
Michael J. Spencer 2:1df0b61d3b5a 593 * @brief Set full of alarm time in RTC peripheral
Michael J. Spencer 2:1df0b61d3b5a 594 * @param[in] RTCx RTC peripheral selected, should be LPC_RTC
Michael J. Spencer 2:1df0b61d3b5a 595 * @param[in] pFullTime Pointer to a RTC_TIME_Type structure that
Michael J. Spencer 2:1df0b61d3b5a 596 * contains alarm time value in full.
Michael J. Spencer 2:1df0b61d3b5a 597 * @return None
Michael J. Spencer 2:1df0b61d3b5a 598 **********************************************************************/
Michael J. Spencer 2:1df0b61d3b5a 599 void RTC_SetFullAlarmTime (LPC_RTC_TypeDef *RTCx, RTC_TIME_Type *pFullTime)
Michael J. Spencer 2:1df0b61d3b5a 600 {
Michael J. Spencer 2:1df0b61d3b5a 601 CHECK_PARAM(PARAM_RTCx(RTCx));
Michael J. Spencer 2:1df0b61d3b5a 602
Michael J. Spencer 2:1df0b61d3b5a 603 RTCx->ALDOM = pFullTime->DOM & RTC_DOM_MASK;
Michael J. Spencer 2:1df0b61d3b5a 604 RTCx->ALDOW = pFullTime->DOW & RTC_DOW_MASK;
Michael J. Spencer 2:1df0b61d3b5a 605 RTCx->ALDOY = pFullTime->DOY & RTC_DOY_MASK;
Michael J. Spencer 2:1df0b61d3b5a 606 RTCx->ALHOUR = pFullTime->HOUR & RTC_HOUR_MASK;
Michael J. Spencer 2:1df0b61d3b5a 607 RTCx->ALMIN = pFullTime->MIN & RTC_MIN_MASK;
Michael J. Spencer 2:1df0b61d3b5a 608 RTCx->ALSEC = pFullTime->SEC & RTC_SEC_MASK;
Michael J. Spencer 2:1df0b61d3b5a 609 RTCx->ALMON = pFullTime->MONTH & RTC_MONTH_MASK;
Michael J. Spencer 2:1df0b61d3b5a 610 RTCx->ALYEAR = pFullTime->YEAR & RTC_YEAR_MASK;
Michael J. Spencer 2:1df0b61d3b5a 611 }
Michael J. Spencer 2:1df0b61d3b5a 612
Michael J. Spencer 2:1df0b61d3b5a 613
Michael J. Spencer 2:1df0b61d3b5a 614 /*********************************************************************//**
Michael J. Spencer 2:1df0b61d3b5a 615 * @brief Get full of alarm time in RTC peripheral
Michael J. Spencer 2:1df0b61d3b5a 616 * @param[in] RTCx RTC peripheral selected, should be LPC_RTC
Michael J. Spencer 2:1df0b61d3b5a 617 * @param[in] pFullTime Pointer to a RTC_TIME_Type structure that
Michael J. Spencer 2:1df0b61d3b5a 618 * will be stored alarm time in full.
Michael J. Spencer 2:1df0b61d3b5a 619 * @return None
Michael J. Spencer 2:1df0b61d3b5a 620 **********************************************************************/
Michael J. Spencer 2:1df0b61d3b5a 621 void RTC_GetFullAlarmTime (LPC_RTC_TypeDef *RTCx, RTC_TIME_Type *pFullTime)
Michael J. Spencer 2:1df0b61d3b5a 622 {
Michael J. Spencer 2:1df0b61d3b5a 623 CHECK_PARAM(PARAM_RTCx(RTCx));
Michael J. Spencer 2:1df0b61d3b5a 624
Michael J. Spencer 2:1df0b61d3b5a 625 pFullTime->DOM = RTCx->ALDOM & RTC_DOM_MASK;
Michael J. Spencer 2:1df0b61d3b5a 626 pFullTime->DOW = RTCx->ALDOW & RTC_DOW_MASK;
Michael J. Spencer 2:1df0b61d3b5a 627 pFullTime->DOY = RTCx->ALDOY & RTC_DOY_MASK;
Michael J. Spencer 2:1df0b61d3b5a 628 pFullTime->HOUR = RTCx->ALHOUR & RTC_HOUR_MASK;
Michael J. Spencer 2:1df0b61d3b5a 629 pFullTime->MIN = RTCx->ALMIN & RTC_MIN_MASK;
Michael J. Spencer 2:1df0b61d3b5a 630 pFullTime->SEC = RTCx->ALSEC & RTC_SEC_MASK;
Michael J. Spencer 2:1df0b61d3b5a 631 pFullTime->MONTH = RTCx->ALMON & RTC_MONTH_MASK;
Michael J. Spencer 2:1df0b61d3b5a 632 pFullTime->YEAR = RTCx->ALYEAR & RTC_YEAR_MASK;
Michael J. Spencer 2:1df0b61d3b5a 633 }
Michael J. Spencer 2:1df0b61d3b5a 634
Michael J. Spencer 2:1df0b61d3b5a 635
Michael J. Spencer 2:1df0b61d3b5a 636 /*********************************************************************//**
Michael J. Spencer 2:1df0b61d3b5a 637 * @brief Check whether if specified Location interrupt in
Michael J. Spencer 2:1df0b61d3b5a 638 * RTC peripheral is set or not
Michael J. Spencer 2:1df0b61d3b5a 639 * @param[in] RTCx RTC peripheral selected, should be LPC_RTC
Michael J. Spencer 2:1df0b61d3b5a 640 * @param[in] IntType Interrupt location type, should be:
Michael J. Spencer 2:1df0b61d3b5a 641 * - RTC_INT_COUNTER_INCREASE: Counter Increment Interrupt
Michael J. Spencer 2:1df0b61d3b5a 642 * block generated an interrupt.
Michael J. Spencer 2:1df0b61d3b5a 643 * - RTC_INT_ALARM: Alarm generated an
Michael J. Spencer 2:1df0b61d3b5a 644 * interrupt.
Michael J. Spencer 2:1df0b61d3b5a 645 * @return New state of specified Location interrupt in RTC peripheral
Michael J. Spencer 2:1df0b61d3b5a 646 * (SET or RESET)
Michael J. Spencer 2:1df0b61d3b5a 647 **********************************************************************/
Michael J. Spencer 2:1df0b61d3b5a 648 IntStatus RTC_GetIntPending (LPC_RTC_TypeDef *RTCx, uint32_t IntType)
Michael J. Spencer 2:1df0b61d3b5a 649 {
Michael J. Spencer 2:1df0b61d3b5a 650 CHECK_PARAM(PARAM_RTCx(RTCx));
Michael J. Spencer 2:1df0b61d3b5a 651 CHECK_PARAM(PARAM_RTC_INT(IntType));
Michael J. Spencer 2:1df0b61d3b5a 652
Michael J. Spencer 2:1df0b61d3b5a 653 return ((RTCx->ILR & IntType) ? SET : RESET);
Michael J. Spencer 2:1df0b61d3b5a 654 }
Michael J. Spencer 2:1df0b61d3b5a 655
Michael J. Spencer 2:1df0b61d3b5a 656
Michael J. Spencer 2:1df0b61d3b5a 657 /*********************************************************************//**
Michael J. Spencer 2:1df0b61d3b5a 658 * @brief Clear specified Location interrupt pending in
Michael J. Spencer 2:1df0b61d3b5a 659 * RTC peripheral
Michael J. Spencer 2:1df0b61d3b5a 660 * @param[in] RTCx RTC peripheral selected, should be LPC_RTC
Michael J. Spencer 2:1df0b61d3b5a 661 * @param[in] IntType Interrupt location type, should be:
Michael J. Spencer 2:1df0b61d3b5a 662 * - RTC_INT_COUNTER_INCREASE: Clear Counter Increment
Michael J. Spencer 2:1df0b61d3b5a 663 * Interrupt pending.
Michael J. Spencer 2:1df0b61d3b5a 664 * - RTC_INT_ALARM: Clear alarm interrupt pending
Michael J. Spencer 2:1df0b61d3b5a 665 * @return None
Michael J. Spencer 2:1df0b61d3b5a 666 **********************************************************************/
Michael J. Spencer 2:1df0b61d3b5a 667 void RTC_ClearIntPending (LPC_RTC_TypeDef *RTCx, uint32_t IntType)
Michael J. Spencer 2:1df0b61d3b5a 668 {
Michael J. Spencer 2:1df0b61d3b5a 669 CHECK_PARAM(PARAM_RTCx(RTCx));
Michael J. Spencer 2:1df0b61d3b5a 670 CHECK_PARAM(PARAM_RTC_INT(IntType));
Michael J. Spencer 2:1df0b61d3b5a 671
Michael J. Spencer 2:1df0b61d3b5a 672 RTCx->ILR |= IntType;
Michael J. Spencer 2:1df0b61d3b5a 673 }
Michael J. Spencer 2:1df0b61d3b5a 674
Michael J. Spencer 2:1df0b61d3b5a 675 /*********************************************************************//**
Michael J. Spencer 2:1df0b61d3b5a 676 * @brief Enable/Disable calibration counter in RTC peripheral
Michael J. Spencer 2:1df0b61d3b5a 677 * @param[in] RTCx RTC peripheral selected, should be LPC_RTC
Michael J. Spencer 2:1df0b61d3b5a 678 * @param[in] NewState New State of this function, should be:
Michael J. Spencer 2:1df0b61d3b5a 679 * - ENABLE: The calibration counter is enabled and counting
Michael J. Spencer 2:1df0b61d3b5a 680 * - DISABLE: The calibration counter is disabled and reset to zero
Michael J. Spencer 2:1df0b61d3b5a 681 * @return None
Michael J. Spencer 2:1df0b61d3b5a 682 **********************************************************************/
Michael J. Spencer 2:1df0b61d3b5a 683 void RTC_CalibCounterCmd(LPC_RTC_TypeDef *RTCx, FunctionalState NewState)
Michael J. Spencer 2:1df0b61d3b5a 684 {
Michael J. Spencer 2:1df0b61d3b5a 685 CHECK_PARAM(PARAM_RTCx(RTCx));
Michael J. Spencer 2:1df0b61d3b5a 686 CHECK_PARAM(PARAM_FUNCTIONALSTATE(NewState));
Michael J. Spencer 2:1df0b61d3b5a 687
Michael J. Spencer 2:1df0b61d3b5a 688 if (NewState == ENABLE)
Michael J. Spencer 2:1df0b61d3b5a 689 {
Michael J. Spencer 2:1df0b61d3b5a 690 RTCx->CCR &= (~RTC_CCR_CCALEN) & RTC_CCR_BITMASK;
Michael J. Spencer 2:1df0b61d3b5a 691 }
Michael J. Spencer 2:1df0b61d3b5a 692 else
Michael J. Spencer 2:1df0b61d3b5a 693 {
Michael J. Spencer 2:1df0b61d3b5a 694 RTCx->CCR |= RTC_CCR_CCALEN;
Michael J. Spencer 2:1df0b61d3b5a 695 }
Michael J. Spencer 2:1df0b61d3b5a 696 }
Michael J. Spencer 2:1df0b61d3b5a 697
Michael J. Spencer 2:1df0b61d3b5a 698
Michael J. Spencer 2:1df0b61d3b5a 699 /*********************************************************************//**
Michael J. Spencer 2:1df0b61d3b5a 700 * @brief Configures Calibration in RTC peripheral
Michael J. Spencer 2:1df0b61d3b5a 701 * @param[in] RTCx RTC peripheral selected, should be LPC_RTC
Michael J. Spencer 2:1df0b61d3b5a 702 * @param[in] CalibValue Calibration value, should be in range from
Michael J. Spencer 2:1df0b61d3b5a 703 * 0 to 131,072
Michael J. Spencer 2:1df0b61d3b5a 704 * @param[in] CalibDir Calibration Direction, should be:
Michael J. Spencer 2:1df0b61d3b5a 705 * - RTC_CALIB_DIR_FORWARD: Forward calibration
Michael J. Spencer 2:1df0b61d3b5a 706 * - RTC_CALIB_DIR_BACKWARD: Backward calibration
Michael J. Spencer 2:1df0b61d3b5a 707 * @return None
Michael J. Spencer 2:1df0b61d3b5a 708 **********************************************************************/
Michael J. Spencer 2:1df0b61d3b5a 709 void RTC_CalibConfig(LPC_RTC_TypeDef *RTCx, uint32_t CalibValue, uint8_t CalibDir)
Michael J. Spencer 2:1df0b61d3b5a 710 {
Michael J. Spencer 2:1df0b61d3b5a 711 CHECK_PARAM(PARAM_RTCx(RTCx));
Michael J. Spencer 2:1df0b61d3b5a 712 CHECK_PARAM(PARAM_RTC_CALIB_DIR(CalibDir));
Michael J. Spencer 2:1df0b61d3b5a 713 CHECK_PARAM(CalibValue < RTC_CALIBRATION_MAX);
Michael J. Spencer 2:1df0b61d3b5a 714
Michael J. Spencer 2:1df0b61d3b5a 715 RTCx->CALIBRATION = ((CalibValue - 1) & RTC_CALIBRATION_CALVAL_MASK) \
Michael J. Spencer 2:1df0b61d3b5a 716 | ((CalibDir == RTC_CALIB_DIR_BACKWARD) ? RTC_CALIBRATION_LIBDIR : 0);
Michael J. Spencer 2:1df0b61d3b5a 717 }
Michael J. Spencer 2:1df0b61d3b5a 718
Michael J. Spencer 2:1df0b61d3b5a 719
Michael J. Spencer 2:1df0b61d3b5a 720 /*********************************************************************//**
Michael J. Spencer 2:1df0b61d3b5a 721 * @brief Write value to General purpose registers
Michael J. Spencer 2:1df0b61d3b5a 722 * @param[in] RTCx RTC peripheral selected, should be LPC_RTC
Michael J. Spencer 2:1df0b61d3b5a 723 * @param[in] Channel General purpose registers Channel number,
Michael J. Spencer 2:1df0b61d3b5a 724 * should be in range from 0 to 4.
Michael J. Spencer 2:1df0b61d3b5a 725 * @param[in] Value Value to write
Michael J. Spencer 2:1df0b61d3b5a 726 * @return None
Michael J. Spencer 2:1df0b61d3b5a 727 * Note: These General purpose registers can be used to store important
Michael J. Spencer 2:1df0b61d3b5a 728 * information when the main power supply is off. The value in these
Michael J. Spencer 2:1df0b61d3b5a 729 * registers is not affected by chip reset.
Michael J. Spencer 2:1df0b61d3b5a 730 **********************************************************************/
Michael J. Spencer 2:1df0b61d3b5a 731 void RTC_WriteGPREG (LPC_RTC_TypeDef *RTCx, uint8_t Channel, uint32_t Value)
Michael J. Spencer 2:1df0b61d3b5a 732 {
Michael J. Spencer 2:1df0b61d3b5a 733 volatile uint32_t *preg;
Michael J. Spencer 2:1df0b61d3b5a 734
Michael J. Spencer 2:1df0b61d3b5a 735 CHECK_PARAM(PARAM_RTCx(RTCx));
Michael J. Spencer 2:1df0b61d3b5a 736 CHECK_PARAM(PARAM_RTC_GPREG_CH(Channel));
Michael J. Spencer 2:1df0b61d3b5a 737
Michael J. Spencer 2:1df0b61d3b5a 738 preg = (volatile uint32_t *)&RTCx->GPREG0;
Michael J. Spencer 2:1df0b61d3b5a 739 preg += Channel;
Michael J. Spencer 2:1df0b61d3b5a 740 *preg = Value;
Michael J. Spencer 2:1df0b61d3b5a 741 }
Michael J. Spencer 2:1df0b61d3b5a 742
Michael J. Spencer 2:1df0b61d3b5a 743
Michael J. Spencer 2:1df0b61d3b5a 744 /*********************************************************************//**
Michael J. Spencer 2:1df0b61d3b5a 745 * @brief Read value from General purpose registers
Michael J. Spencer 2:1df0b61d3b5a 746 * @param[in] RTCx RTC peripheral selected, should be LPC_RTC
Michael J. Spencer 2:1df0b61d3b5a 747 * @param[in] Channel General purpose registers Channel number,
Michael J. Spencer 2:1df0b61d3b5a 748 * should be in range from 0 to 4.
Michael J. Spencer 2:1df0b61d3b5a 749 * @return Read Value
Michael J. Spencer 2:1df0b61d3b5a 750 * Note: These General purpose registers can be used to store important
Michael J. Spencer 2:1df0b61d3b5a 751 * information when the main power supply is off. The value in these
Michael J. Spencer 2:1df0b61d3b5a 752 * registers is not affected by chip reset.
Michael J. Spencer 2:1df0b61d3b5a 753 **********************************************************************/
Michael J. Spencer 2:1df0b61d3b5a 754 uint32_t RTC_ReadGPREG (LPC_RTC_TypeDef *RTCx, uint8_t Channel)
Michael J. Spencer 2:1df0b61d3b5a 755 {
Michael J. Spencer 2:1df0b61d3b5a 756 volatile uint32_t *preg;
Michael J. Spencer 2:1df0b61d3b5a 757 uint32_t value;
Michael J. Spencer 2:1df0b61d3b5a 758
Michael J. Spencer 2:1df0b61d3b5a 759 CHECK_PARAM(PARAM_RTCx(RTCx));
Michael J. Spencer 2:1df0b61d3b5a 760 CHECK_PARAM(PARAM_RTC_GPREG_CH(Channel));
Michael J. Spencer 2:1df0b61d3b5a 761
Michael J. Spencer 2:1df0b61d3b5a 762 preg = (volatile uint32_t *)&RTCx->GPREG0;
Michael J. Spencer 2:1df0b61d3b5a 763 preg += Channel;
Michael J. Spencer 2:1df0b61d3b5a 764 value = *preg;
Michael J. Spencer 2:1df0b61d3b5a 765 return (value);
Michael J. Spencer 2:1df0b61d3b5a 766 }
Michael J. Spencer 2:1df0b61d3b5a 767
Michael J. Spencer 2:1df0b61d3b5a 768 /**
Michael J. Spencer 2:1df0b61d3b5a 769 * @}
Michael J. Spencer 2:1df0b61d3b5a 770 */
Michael J. Spencer 2:1df0b61d3b5a 771
Michael J. Spencer 2:1df0b61d3b5a 772 #endif /* _RTC */
Michael J. Spencer 2:1df0b61d3b5a 773
Michael J. Spencer 2:1df0b61d3b5a 774 /**
Michael J. Spencer 2:1df0b61d3b5a 775 * @}
Michael J. Spencer 2:1df0b61d3b5a 776 */
Michael J. Spencer 2:1df0b61d3b5a 777
Michael J. Spencer 2:1df0b61d3b5a 778 /* --------------------------------- End Of File ------------------------------ */
Michael J. Spencer 2:1df0b61d3b5a 779
Michael J. Spencer 2:1df0b61d3b5a 780 #endif /* __LPC17XX__ */