uc-sdk
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
stm32f10x_rtc.c
Go to the documentation of this file.
1 
22 /* Includes ------------------------------------------------------------------*/
23 #include "stm32f10x_rtc.h"
24 
44 #define RTC_LSB_MASK ((uint32_t)0x0000FFFF)
45 #define PRLH_MSB_MASK ((uint32_t)0x000F0000)
90 void RTC_ITConfig(uint16_t RTC_IT, FunctionalState NewState)
91 {
92  /* Check the parameters */
93  assert_param(IS_RTC_IT(RTC_IT));
95 
96  if (NewState != DISABLE)
97  {
98  RTC->CRH |= RTC_IT;
99  }
100  else
101  {
102  RTC->CRH &= (uint16_t)~RTC_IT;
103  }
104 }
105 
112 {
113  /* Set the CNF flag to enter in the Configuration Mode */
114  RTC->CRL |= RTC_CRL_CNF;
115 }
116 
123 {
124  /* Reset the CNF flag to exit from the Configuration Mode */
125  RTC->CRL &= (uint16_t)~((uint16_t)RTC_CRL_CNF);
126 }
127 
133 uint32_t RTC_GetCounter(void)
134 {
135  uint16_t tmp = 0;
136  tmp = RTC->CNTL;
137  return (((uint32_t)RTC->CNTH << 16 ) | tmp) ;
138 }
139 
145 void RTC_SetCounter(uint32_t CounterValue)
146 {
148  /* Set RTC COUNTER MSB word */
149  RTC->CNTH = CounterValue >> 16;
150  /* Set RTC COUNTER LSB word */
151  RTC->CNTL = (CounterValue & RTC_LSB_MASK);
153 }
154 
160 void RTC_SetPrescaler(uint32_t PrescalerValue)
161 {
162  /* Check the parameters */
163  assert_param(IS_RTC_PRESCALER(PrescalerValue));
164 
166  /* Set RTC PRESCALER MSB word */
167  RTC->PRLH = (PrescalerValue & PRLH_MSB_MASK) >> 16;
168  /* Set RTC PRESCALER LSB word */
169  RTC->PRLL = (PrescalerValue & RTC_LSB_MASK);
171 }
172 
178 void RTC_SetAlarm(uint32_t AlarmValue)
179 {
181  /* Set the ALARM MSB word */
182  RTC->ALRH = AlarmValue >> 16;
183  /* Set the ALARM LSB word */
184  RTC->ALRL = (AlarmValue & RTC_LSB_MASK);
186 }
187 
193 uint32_t RTC_GetDivider(void)
194 {
195  uint32_t tmp = 0x00;
196  tmp = ((uint32_t)RTC->DIVH & (uint32_t)0x000F) << 16;
197  tmp |= RTC->DIVL;
198  return tmp;
199 }
200 
208 {
209  /* Loop until RTOFF flag is set */
210  while ((RTC->CRL & RTC_FLAG_RTOFF) == (uint16_t)RESET)
211  {
212  }
213 }
214 
224 {
225  /* Clear RSF flag */
226  RTC->CRL &= (uint16_t)~RTC_FLAG_RSF;
227  /* Loop until RSF flag is set */
228  while ((RTC->CRL & RTC_FLAG_RSF) == (uint16_t)RESET)
229  {
230  }
231 }
232 
244 FlagStatus RTC_GetFlagStatus(uint16_t RTC_FLAG)
245 {
246  FlagStatus bitstatus = RESET;
247 
248  /* Check the parameters */
249  assert_param(IS_RTC_GET_FLAG(RTC_FLAG));
250 
251  if ((RTC->CRL & RTC_FLAG) != (uint16_t)RESET)
252  {
253  bitstatus = SET;
254  }
255  else
256  {
257  bitstatus = RESET;
258  }
259  return bitstatus;
260 }
261 
273 void RTC_ClearFlag(uint16_t RTC_FLAG)
274 {
275  /* Check the parameters */
276  assert_param(IS_RTC_CLEAR_FLAG(RTC_FLAG));
277 
278  /* Clear the corresponding RTC flag */
279  RTC->CRL &= (uint16_t)~RTC_FLAG;
280 }
281 
291 ITStatus RTC_GetITStatus(uint16_t RTC_IT)
292 {
293  ITStatus bitstatus = RESET;
294  /* Check the parameters */
295  assert_param(IS_RTC_GET_IT(RTC_IT));
296 
297  bitstatus = (ITStatus)(RTC->CRL & RTC_IT);
298  if (((RTC->CRH & RTC_IT) != (uint16_t)RESET) && (bitstatus != (uint16_t)RESET))
299  {
300  bitstatus = SET;
301  }
302  else
303  {
304  bitstatus = RESET;
305  }
306  return bitstatus;
307 }
308 
318 void RTC_ClearITPendingBit(uint16_t RTC_IT)
319 {
320  /* Check the parameters */
321  assert_param(IS_RTC_IT(RTC_IT));
322 
323  /* Clear the corresponding RTC pending bit */
324  RTC->CRL &= (uint16_t)~RTC_IT;
325 }
326 
339 /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/