Subversion Repositories LedShow

Rev

Rev 2 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2 Rev 9
Line 4... Line 4...
4
  * @author  MCD Application Team
4
  * @author  MCD Application Team
5
  * @brief   Header file of RTC LL module.
5
  * @brief   Header file of RTC LL module.
6
  ******************************************************************************
6
  ******************************************************************************
7
  * @attention
7
  * @attention
8
  *
8
  *
9
  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
9
  * <h2><center>&copy; Copyright (c) 2016 STMicroelectronics.
-
 
10
  * All rights reserved.</center></h2>
10
  *
11
  *
11
  * Redistribution and use in source and binary forms, with or without modification,
12
  * This software component is licensed by ST under BSD 3-Clause license,
12
  * are permitted provided that the following conditions are met:
13
  * the "License"; You may not use this file except in compliance with the
13
  *   1. Redistributions of source code must retain the above copyright notice,
-
 
14
  *      this list of conditions and the following disclaimer.
-
 
15
  *   2. Redistributions in binary form must reproduce the above copyright notice,
-
 
16
  *      this list of conditions and the following disclaimer in the documentation
-
 
17
  *      and/or other materials provided with the distribution.
14
  * License. You may obtain a copy of the License at:
18
  *   3. Neither the name of STMicroelectronics nor the names of its contributors
-
 
19
  *      may be used to endorse or promote products derived from this software
15
  *                        opensource.org/licenses/BSD-3-Clause
20
  *      without specific prior written permission.
-
 
21
  *
-
 
22
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-
 
23
  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-
 
24
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-
 
25
  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-
 
26
  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-
 
27
  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-
 
28
  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-
 
29
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-
 
30
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-
 
31
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
 
32
  *
16
  *
33
  ******************************************************************************
17
  ******************************************************************************
34
  */
18
  */
35
 
19
 
36
/* Define to prevent recursive inclusion -------------------------------------*/
20
/* Define to prevent recursive inclusion -------------------------------------*/
Line 79... Line 63...
79
  */
63
  */
80
typedef struct
64
typedef struct
81
{
65
{
82
  uint32_t AsynchPrescaler; /*!< Specifies the RTC Asynchronous Predivider value.
66
  uint32_t AsynchPrescaler; /*!< Specifies the RTC Asynchronous Predivider value.
83
                              This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFFFFF
67
                              This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFFFFF
84
                             
-
 
-
 
68
 
85
                              This feature can be modified afterwards using unitary function
69
                              This feature can be modified afterwards using unitary function
86
                              @ref LL_RTC_SetAsynchPrescaler(). */
70
                              @ref LL_RTC_SetAsynchPrescaler(). */
87
 
71
 
88
  uint32_t OutPutSource;    /*!< Specifies which signal will be routed to the RTC Tamper pin.
72
  uint32_t OutPutSource;    /*!< Specifies which signal will be routed to the RTC Tamper pin.
89
                                 This parameter can be a value of @ref LL_RTC_Output_Source
73
                                 This parameter can be a value of @ref LL_RTC_Output_Source
90
                             
-
 
-
 
74
 
91
                              This feature can be modified afterwards using unitary function
75
                              This feature can be modified afterwards using unitary function
92
                              @ref LL_RTC_SetOutputSource(). */
76
                              @ref LL_RTC_SetOutputSource(). */
93
 
77
 
94
} LL_RTC_InitTypeDef;
78
} LL_RTC_InitTypeDef;
95
 
79
 
Line 193... Line 177...
193
  * @}
177
  * @}
194
  */
178
  */
195
 
179
 
196
/** @defgroup RTC_LL_EC_TAMPLEVEL  Tamper Active Level
180
/** @defgroup RTC_LL_EC_TAMPLEVEL  Tamper Active Level
197
  * @{
181
  * @{
198
  */
182
  */
199
#define LL_RTC_TAMPER_ACTIVELEVEL_LOW          BKP_CR_TPAL           /*!< A high level on the TAMPER pin resets all data backup registers (if TPE bit is set) */
183
#define LL_RTC_TAMPER_ACTIVELEVEL_LOW          BKP_CR_TPAL           /*!< A high level on the TAMPER pin resets all data backup registers (if TPE bit is set) */
200
#define LL_RTC_TAMPER_ACTIVELEVEL_HIGH         (0x00000000U)         /*!< A low level on the TAMPER pin resets all data backup registers (if TPE bit is set) */
184
#define LL_RTC_TAMPER_ACTIVELEVEL_HIGH         (0x00000000U)         /*!< A low level on the TAMPER pin resets all data backup registers (if TPE bit is set) */
201
 
185
 
202
/**
186
/**
203
  * @}
187
  * @}
Line 303... Line 287...
303
  * @param  RTCx RTC Instance
287
  * @param  RTCx RTC Instance
304
  * @retval Value between Min_Data = 0 and Max_Data = 0xFFFFF
288
  * @retval Value between Min_Data = 0 and Max_Data = 0xFFFFF
305
  */
289
  */
306
__STATIC_INLINE uint32_t LL_RTC_GetDivider(RTC_TypeDef *RTCx)
290
__STATIC_INLINE uint32_t LL_RTC_GetDivider(RTC_TypeDef *RTCx)
307
{
291
{
308
  register uint16_t Highprescaler = 0 , Lowprescaler = 0;
292
  register uint16_t Highprescaler = 0, Lowprescaler = 0;
309
  Highprescaler = READ_REG(RTCx->DIVH & RTC_DIVH_RTC_DIV);
293
  Highprescaler = READ_REG(RTCx->DIVH & RTC_DIVH_RTC_DIV);
310
  Lowprescaler  = READ_REG(RTCx->DIVL & RTC_DIVL_RTC_DIV);
294
  Lowprescaler  = READ_REG(RTCx->DIVL & RTC_DIVL_RTC_DIV);
311
 
295
 
312
  return (((uint32_t) Highprescaler << 16U) | Lowprescaler);
296
  return (((uint32_t) Highprescaler << 16U) | Lowprescaler);
313
}
297
}
314
 
298
 
315
/**
299
/**
316
  * @brief  Set Output Source
300
  * @brief  Set Output Source
Line 353... Line 337...
353
  * @param  RTCx RTC Instance
337
  * @param  RTCx RTC Instance
354
  * @retval None
338
  * @retval None
355
  */
339
  */
356
__STATIC_INLINE void LL_RTC_EnableWriteProtection(RTC_TypeDef *RTCx)
340
__STATIC_INLINE void LL_RTC_EnableWriteProtection(RTC_TypeDef *RTCx)
357
{
341
{
358
 CLEAR_BIT(RTCx->CRL, RTC_CRL_CNF);
342
  CLEAR_BIT(RTCx->CRL, RTC_CRL_CNF);
359
}
343
}
360
 
344
 
361
/**
345
/**
362
  * @brief  Disable the write protection for RTC registers.
346
  * @brief  Disable the write protection for RTC registers.
363
  * @rmtoll CRL          RTC_CRL_CNF           LL_RTC_DisableWriteProtection
347
  * @rmtoll CRL          RTC_CRL_CNF           LL_RTC_DisableWriteProtection
Line 387... Line 371...
387
  * @param  TimeCounter Value between Min_Data=0x00 and Max_Data=0xFFFFF
371
  * @param  TimeCounter Value between Min_Data=0x00 and Max_Data=0xFFFFF
388
  * @retval None
372
  * @retval None
389
  */
373
  */
390
__STATIC_INLINE void LL_RTC_TIME_Set(RTC_TypeDef *RTCx, uint32_t TimeCounter)
374
__STATIC_INLINE void LL_RTC_TIME_Set(RTC_TypeDef *RTCx, uint32_t TimeCounter)
391
{
375
{
392
    /* Set RTC COUNTER MSB word */
376
  /* Set RTC COUNTER MSB word */
393
    WRITE_REG(RTCx->CNTH, (TimeCounter >> 16U));
377
  WRITE_REG(RTCx->CNTH, (TimeCounter >> 16U));
394
    /* Set RTC COUNTER LSB word */
378
  /* Set RTC COUNTER LSB word */
395
    WRITE_REG(RTCx->CNTL, (TimeCounter & RTC_CNTL_RTC_CNT));
379
  WRITE_REG(RTCx->CNTL, (TimeCounter & RTC_CNTL_RTC_CNT));
396
}
380
}
397
 
381
 
398
/**
382
/**
399
  * @brief  Get time counter in BCD format
383
  * @brief  Get time counter in BCD format
400
  * @rmtoll CNTH         CNT            LL_RTC_TIME_Get\n
384
  * @rmtoll CNTH         CNT            LL_RTC_TIME_Get\n
Line 403... Line 387...
403
  * @retval Value between Min_Data = 0 and Max_Data = 0xFFFFF
387
  * @retval Value between Min_Data = 0 and Max_Data = 0xFFFFF
404
  */
388
  */
405
__STATIC_INLINE uint32_t LL_RTC_TIME_Get(RTC_TypeDef *RTCx)
389
__STATIC_INLINE uint32_t LL_RTC_TIME_Get(RTC_TypeDef *RTCx)
406
{
390
{
407
  register uint16_t high = 0, low = 0;
391
  register uint16_t high = 0, low = 0;
408
 
392
 
409
  high = READ_REG(RTCx->CNTH & RTC_CNTH_RTC_CNT);
393
  high = READ_REG(RTCx->CNTH & RTC_CNTH_RTC_CNT);
410
  low  = READ_REG(RTCx->CNTL & RTC_CNTL_RTC_CNT);
394
  low  = READ_REG(RTCx->CNTL & RTC_CNTL_RTC_CNT);
411
  return ((uint32_t)(((uint32_t) high << 16U) | low));
395
  return ((uint32_t)(((uint32_t) high << 16U) | low));
412
}
396
}
413
 
397
 
Line 521... Line 505...
521
  * @param  BackupRegister This parameter can be one of the following values:
505
  * @param  BackupRegister This parameter can be one of the following values:
522
  *         @arg @ref LL_RTC_BKP_DR1
506
  *         @arg @ref LL_RTC_BKP_DR1
523
  *         @arg @ref LL_RTC_BKP_DR2
507
  *         @arg @ref LL_RTC_BKP_DR2
524
  *         @arg @ref LL_RTC_BKP_DR3
508
  *         @arg @ref LL_RTC_BKP_DR3
525
  *         @arg @ref LL_RTC_BKP_DR4
509
  *         @arg @ref LL_RTC_BKP_DR4
526
  *         @arg @ref LL_RTC_BKP_DR5
510
  *         @arg @ref LL_RTC_BKP_DR5
527
  *         @arg @ref LL_RTC_BKP_DR6
511
  *         @arg @ref LL_RTC_BKP_DR6
528
  *         @arg @ref LL_RTC_BKP_DR7
512
  *         @arg @ref LL_RTC_BKP_DR7
529
  *         @arg @ref LL_RTC_BKP_DR8
513
  *         @arg @ref LL_RTC_BKP_DR8
530
  *         @arg @ref LL_RTC_BKP_DR9
514
  *         @arg @ref LL_RTC_BKP_DR9
531
  *         @arg @ref LL_RTC_BKP_DR10
515
  *         @arg @ref LL_RTC_BKP_DR10
532
  *         @arg @ref LL_RTC_BKP_DR11 (*)
516
  *         @arg @ref LL_RTC_BKP_DR11 (*)
533
  *         @arg @ref LL_RTC_BKP_DR12 (*)
517
  *         @arg @ref LL_RTC_BKP_DR12 (*)
534
  *         @arg @ref LL_RTC_BKP_DR13 (*)
518
  *         @arg @ref LL_RTC_BKP_DR13 (*)
535
  *         @arg @ref LL_RTC_BKP_DR14 (*)
519
  *         @arg @ref LL_RTC_BKP_DR14 (*)
536
  *         @arg @ref LL_RTC_BKP_DR15 (*)
520
  *         @arg @ref LL_RTC_BKP_DR15 (*)
Line 583... Line 567...
583
  * @param  BackupRegister This parameter can be one of the following values:
567
  * @param  BackupRegister This parameter can be one of the following values:
584
  *         @arg @ref LL_RTC_BKP_DR1
568
  *         @arg @ref LL_RTC_BKP_DR1
585
  *         @arg @ref LL_RTC_BKP_DR2
569
  *         @arg @ref LL_RTC_BKP_DR2
586
  *         @arg @ref LL_RTC_BKP_DR3
570
  *         @arg @ref LL_RTC_BKP_DR3
587
  *         @arg @ref LL_RTC_BKP_DR4
571
  *         @arg @ref LL_RTC_BKP_DR4
588
  *         @arg @ref LL_RTC_BKP_DR5
572
  *         @arg @ref LL_RTC_BKP_DR5
589
  *         @arg @ref LL_RTC_BKP_DR6
573
  *         @arg @ref LL_RTC_BKP_DR6
590
  *         @arg @ref LL_RTC_BKP_DR7
574
  *         @arg @ref LL_RTC_BKP_DR7
591
  *         @arg @ref LL_RTC_BKP_DR8
575
  *         @arg @ref LL_RTC_BKP_DR8
592
  *         @arg @ref LL_RTC_BKP_DR9
576
  *         @arg @ref LL_RTC_BKP_DR9
593
  *         @arg @ref LL_RTC_BKP_DR10
577
  *         @arg @ref LL_RTC_BKP_DR10
594
  *         @arg @ref LL_RTC_BKP_DR11 (*)
578
  *         @arg @ref LL_RTC_BKP_DR11 (*)
595
  *         @arg @ref LL_RTC_BKP_DR12 (*)
579
  *         @arg @ref LL_RTC_BKP_DR12 (*)
596
  *         @arg @ref LL_RTC_BKP_DR13 (*)
580
  *         @arg @ref LL_RTC_BKP_DR13 (*)
597
  *         @arg @ref LL_RTC_BKP_DR14 (*)
581
  *         @arg @ref LL_RTC_BKP_DR14 (*)
598
  *         @arg @ref LL_RTC_BKP_DR15 (*)
582
  *         @arg @ref LL_RTC_BKP_DR15 (*)
Line 652... Line 636...
652
  * @param  BKPx RTC Instance
636
  * @param  BKPx RTC Instance
653
  * @param  Value value of coarse calibration expressed in ppm (coded on 5 bits)
637
  * @param  Value value of coarse calibration expressed in ppm (coded on 5 bits)
654
  * @note   This Calibration value should be between 0 and 121 when using positive sign with a 4-ppm step.
638
  * @note   This Calibration value should be between 0 and 121 when using positive sign with a 4-ppm step.
655
  * @retval None
639
  * @retval None
656
  */
640
  */
657
__STATIC_INLINE void LL_RTC_CAL_SetCoarseDigital(BKP_TypeDef* BKPx, uint32_t Value)
641
__STATIC_INLINE void LL_RTC_CAL_SetCoarseDigital(BKP_TypeDef *BKPx, uint32_t Value)
658
{
642
{
659
  MODIFY_REG(BKPx->RTCCR,BKP_RTCCR_CAL, Value);
643
  MODIFY_REG(BKPx->RTCCR, BKP_RTCCR_CAL, Value);
660
}
644
}
661
 
645
 
662
/**
646
/**
663
  * @brief  Get the coarse digital calibration value
647
  * @brief  Get the coarse digital calibration value
664
  * @rmtoll RTCCR       CAL           LL_RTC_CAL_SetCoarseDigital\n
648
  * @rmtoll RTCCR       CAL           LL_RTC_CAL_SetCoarseDigital\n
Line 939... Line 923...
939
  * @param  BKPx BKP Instance
923
  * @param  BKPx BKP Instance
940
  * @retval None
924
  * @retval None
941
  */
925
  */
942
__STATIC_INLINE void LL_RTC_EnableIT_TAMP(BKP_TypeDef *BKPx)
926
__STATIC_INLINE void LL_RTC_EnableIT_TAMP(BKP_TypeDef *BKPx)
943
{
927
{
944
  SET_BIT(BKPx->CSR,BKP_CSR_TPIE);
928
  SET_BIT(BKPx->CSR, BKP_CSR_TPIE);
945
}
929
}
946
 
930
 
947
/**
931
/**
948
  * @brief  Disable Tamper  interrupt
932
  * @brief  Disable Tamper  interrupt
949
  * @rmtoll CSR        TPIE       LL_RTC_EnableIT_TAMP
933
  * @rmtoll CSR        TPIE       LL_RTC_EnableIT_TAMP
950
  * @param  BKPx BKP Instance
934
  * @param  BKPx BKP Instance
951
  * @retval None
935
  * @retval None
952
  */
936
  */
953
__STATIC_INLINE void LL_RTC_DisableIT_TAMP(BKP_TypeDef *BKPx)
937
__STATIC_INLINE void LL_RTC_DisableIT_TAMP(BKP_TypeDef *BKPx)
954
{
938
{
955
  CLEAR_BIT(BKPx->CSR,BKP_CSR_TPIE);
939
  CLEAR_BIT(BKPx->CSR, BKP_CSR_TPIE);
956
}
940
}
957
 
941
 
958
/**
942
/**
959
  * @brief  Check if all the TAMPER interrupts are enabled or not
943
  * @brief  Check if all the TAMPER interrupts are enabled or not
960
  * @rmtoll CSR        TPIE        LL_RTC_IsEnabledIT_TAMP
944
  * @rmtoll CSR        TPIE        LL_RTC_IsEnabledIT_TAMP
961
  * @param  BKPx BKP Instance
945
  * @param  BKPx BKP Instance
962
  * @retval State of bit (1 or 0).
946
  * @retval State of bit (1 or 0).
963
  */
947
  */
964
__STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_TAMP(BKP_TypeDef *BKPx)
948
__STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_TAMP(BKP_TypeDef *BKPx)
965
{
949
{
966
  return (READ_BIT(BKPx->CSR,BKP_CSR_TPIE) == BKP_CSR_TPIE);
950
  return (READ_BIT(BKPx->CSR, BKP_CSR_TPIE) == BKP_CSR_TPIE);
967
}
951
}
968
/**
952
/**
969
  * @}
953
  * @}
970
  */
954
  */
971
 
955