Subversion Repositories dashGPS

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. /**
  2.   ******************************************************************************
  3.   * @file    stm32f1xx_ll_iwdg.h
  4.   * @author  MCD Application Team
  5.   * @brief   Header file of IWDG LL module.
  6.   ******************************************************************************
  7.   * @attention
  8.   *
  9.   * <h2><center>&copy; Copyright (c) 2016 STMicroelectronics.
  10.   * All rights reserved.</center></h2>
  11.   *
  12.   * This software component is licensed by ST under BSD 3-Clause license,
  13.   * the "License"; You may not use this file except in compliance with the
  14.   * License. You may obtain a copy of the License at:
  15.   *                        opensource.org/licenses/BSD-3-Clause
  16.   *
  17.   ******************************************************************************
  18.   */
  19.  
  20. /* Define to prevent recursive inclusion -------------------------------------*/
  21. #ifndef STM32F1xx_LL_IWDG_H
  22. #define STM32F1xx_LL_IWDG_H
  23.  
  24. #ifdef __cplusplus
  25. extern "C" {
  26. #endif
  27.  
  28. /* Includes ------------------------------------------------------------------*/
  29. #include "stm32f1xx.h"
  30.  
  31. /** @addtogroup STM32F1xx_LL_Driver
  32.   * @{
  33.   */
  34.  
  35. #if defined(IWDG)
  36.  
  37. /** @defgroup IWDG_LL IWDG
  38.   * @{
  39.   */
  40.  
  41. /* Private types -------------------------------------------------------------*/
  42. /* Private variables ---------------------------------------------------------*/
  43.  
  44. /* Private constants ---------------------------------------------------------*/
  45. /** @defgroup IWDG_LL_Private_Constants IWDG Private Constants
  46.   * @{
  47.   */
  48.  
  49. #define LL_IWDG_KEY_RELOAD                 0x0000AAAAU               /*!< IWDG Reload Counter Enable   */
  50. #define LL_IWDG_KEY_ENABLE                 0x0000CCCCU               /*!< IWDG Peripheral Enable       */
  51. #define LL_IWDG_KEY_WR_ACCESS_ENABLE       0x00005555U               /*!< IWDG KR Write Access Enable  */
  52. #define LL_IWDG_KEY_WR_ACCESS_DISABLE      0x00000000U               /*!< IWDG KR Write Access Disable */
  53.  
  54. /**
  55.   * @}
  56.   */
  57.  
  58. /* Private macros ------------------------------------------------------------*/
  59.  
  60. /* Exported types ------------------------------------------------------------*/
  61. /* Exported constants --------------------------------------------------------*/
  62. /** @defgroup IWDG_LL_Exported_Constants IWDG Exported Constants
  63.   * @{
  64.   */
  65.  
  66. /** @defgroup IWDG_LL_EC_GET_FLAG Get Flags Defines
  67.   * @brief    Flags defines which can be used with LL_IWDG_ReadReg function
  68.   * @{
  69.   */
  70. #define LL_IWDG_SR_PVU                     IWDG_SR_PVU                           /*!< Watchdog prescaler value update */
  71. #define LL_IWDG_SR_RVU                     IWDG_SR_RVU                           /*!< Watchdog counter reload value update */
  72.  
  73. /**
  74.   * @}
  75.   */
  76.  
  77. /** @defgroup IWDG_LL_EC_PRESCALER  Prescaler Divider
  78.   * @{
  79.   */
  80. #define LL_IWDG_PRESCALER_4                0x00000000U                           /*!< Divider by 4   */
  81. #define LL_IWDG_PRESCALER_8                (IWDG_PR_PR_0)                        /*!< Divider by 8   */
  82. #define LL_IWDG_PRESCALER_16               (IWDG_PR_PR_1)                        /*!< Divider by 16  */
  83. #define LL_IWDG_PRESCALER_32               (IWDG_PR_PR_1 | IWDG_PR_PR_0)         /*!< Divider by 32  */
  84. #define LL_IWDG_PRESCALER_64               (IWDG_PR_PR_2)                        /*!< Divider by 64  */
  85. #define LL_IWDG_PRESCALER_128              (IWDG_PR_PR_2 | IWDG_PR_PR_0)         /*!< Divider by 128 */
  86. #define LL_IWDG_PRESCALER_256              (IWDG_PR_PR_2 | IWDG_PR_PR_1)         /*!< Divider by 256 */
  87. /**
  88.   * @}
  89.   */
  90.  
  91. /**
  92.   * @}
  93.   */
  94.  
  95. /* Exported macro ------------------------------------------------------------*/
  96. /** @defgroup IWDG_LL_Exported_Macros IWDG Exported Macros
  97.   * @{
  98.   */
  99.  
  100. /** @defgroup IWDG_LL_EM_WRITE_READ Common Write and read registers Macros
  101.   * @{
  102.   */
  103.  
  104. /**
  105.   * @brief  Write a value in IWDG register
  106.   * @param  __INSTANCE__ IWDG Instance
  107.   * @param  __REG__ Register to be written
  108.   * @param  __VALUE__ Value to be written in the register
  109.   * @retval None
  110.   */
  111. #define LL_IWDG_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
  112.  
  113. /**
  114.   * @brief  Read a value in IWDG register
  115.   * @param  __INSTANCE__ IWDG Instance
  116.   * @param  __REG__ Register to be read
  117.   * @retval Register value
  118.   */
  119. #define LL_IWDG_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
  120. /**
  121.   * @}
  122.   */
  123.  
  124. /**
  125.   * @}
  126.   */
  127.  
  128.  
  129. /* Exported functions --------------------------------------------------------*/
  130. /** @defgroup IWDG_LL_Exported_Functions IWDG Exported Functions
  131.   * @{
  132.   */
  133. /** @defgroup IWDG_LL_EF_Configuration Configuration
  134.   * @{
  135.   */
  136.  
  137. /**
  138.   * @brief  Start the Independent Watchdog
  139.   * @note   Except if the hardware watchdog option is selected
  140.   * @rmtoll KR           KEY           LL_IWDG_Enable
  141.   * @param  IWDGx IWDG Instance
  142.   * @retval None
  143.   */
  144. __STATIC_INLINE void LL_IWDG_Enable(IWDG_TypeDef *IWDGx)
  145. {
  146.   WRITE_REG(IWDG->KR, LL_IWDG_KEY_ENABLE);
  147. }
  148.  
  149. /**
  150.   * @brief  Reloads IWDG counter with value defined in the reload register
  151.   * @rmtoll KR           KEY           LL_IWDG_ReloadCounter
  152.   * @param  IWDGx IWDG Instance
  153.   * @retval None
  154.   */
  155. __STATIC_INLINE void LL_IWDG_ReloadCounter(IWDG_TypeDef *IWDGx)
  156. {
  157.   WRITE_REG(IWDG->KR, LL_IWDG_KEY_RELOAD);
  158. }
  159.  
  160. /**
  161.   * @brief  Enable write access to IWDG_PR, IWDG_RLR and IWDG_WINR registers
  162.   * @rmtoll KR           KEY           LL_IWDG_EnableWriteAccess
  163.   * @param  IWDGx IWDG Instance
  164.   * @retval None
  165.   */
  166. __STATIC_INLINE void LL_IWDG_EnableWriteAccess(IWDG_TypeDef *IWDGx)
  167. {
  168.   WRITE_REG(IWDG->KR, LL_IWDG_KEY_WR_ACCESS_ENABLE);
  169. }
  170.  
  171. /**
  172.   * @brief  Disable write access to IWDG_PR, IWDG_RLR and IWDG_WINR registers
  173.   * @rmtoll KR           KEY           LL_IWDG_DisableWriteAccess
  174.   * @param  IWDGx IWDG Instance
  175.   * @retval None
  176.   */
  177. __STATIC_INLINE void LL_IWDG_DisableWriteAccess(IWDG_TypeDef *IWDGx)
  178. {
  179.   WRITE_REG(IWDG->KR, LL_IWDG_KEY_WR_ACCESS_DISABLE);
  180. }
  181.  
  182. /**
  183.   * @brief  Select the prescaler of the IWDG
  184.   * @rmtoll PR           PR            LL_IWDG_SetPrescaler
  185.   * @param  IWDGx IWDG Instance
  186.   * @param  Prescaler This parameter can be one of the following values:
  187.   *         @arg @ref LL_IWDG_PRESCALER_4
  188.   *         @arg @ref LL_IWDG_PRESCALER_8
  189.   *         @arg @ref LL_IWDG_PRESCALER_16
  190.   *         @arg @ref LL_IWDG_PRESCALER_32
  191.   *         @arg @ref LL_IWDG_PRESCALER_64
  192.   *         @arg @ref LL_IWDG_PRESCALER_128
  193.   *         @arg @ref LL_IWDG_PRESCALER_256
  194.   * @retval None
  195.   */
  196. __STATIC_INLINE void LL_IWDG_SetPrescaler(IWDG_TypeDef *IWDGx, uint32_t Prescaler)
  197. {
  198.   WRITE_REG(IWDGx->PR, IWDG_PR_PR & Prescaler);
  199. }
  200.  
  201. /**
  202.   * @brief  Get the selected prescaler of the IWDG
  203.   * @rmtoll PR           PR            LL_IWDG_GetPrescaler
  204.   * @param  IWDGx IWDG Instance
  205.   * @retval Returned value can be one of the following values:
  206.   *         @arg @ref LL_IWDG_PRESCALER_4
  207.   *         @arg @ref LL_IWDG_PRESCALER_8
  208.   *         @arg @ref LL_IWDG_PRESCALER_16
  209.   *         @arg @ref LL_IWDG_PRESCALER_32
  210.   *         @arg @ref LL_IWDG_PRESCALER_64
  211.   *         @arg @ref LL_IWDG_PRESCALER_128
  212.   *         @arg @ref LL_IWDG_PRESCALER_256
  213.   */
  214. __STATIC_INLINE uint32_t LL_IWDG_GetPrescaler(IWDG_TypeDef *IWDGx)
  215. {
  216.   return (uint32_t)(READ_REG(IWDGx->PR));
  217. }
  218.  
  219. /**
  220.   * @brief  Specify the IWDG down-counter reload value
  221.   * @rmtoll RLR          RL            LL_IWDG_SetReloadCounter
  222.   * @param  IWDGx IWDG Instance
  223.   * @param  Counter Value between Min_Data=0 and Max_Data=0x0FFF
  224.   * @retval None
  225.   */
  226. __STATIC_INLINE void LL_IWDG_SetReloadCounter(IWDG_TypeDef *IWDGx, uint32_t Counter)
  227. {
  228.   WRITE_REG(IWDGx->RLR, IWDG_RLR_RL & Counter);
  229. }
  230.  
  231. /**
  232.   * @brief  Get the specified IWDG down-counter reload value
  233.   * @rmtoll RLR          RL            LL_IWDG_GetReloadCounter
  234.   * @param  IWDGx IWDG Instance
  235.   * @retval Value between Min_Data=0 and Max_Data=0x0FFF
  236.   */
  237. __STATIC_INLINE uint32_t LL_IWDG_GetReloadCounter(IWDG_TypeDef *IWDGx)
  238. {
  239.   return (uint32_t)(READ_REG(IWDGx->RLR));
  240. }
  241.  
  242.  
  243. /**
  244.   * @}
  245.   */
  246.  
  247. /** @defgroup IWDG_LL_EF_FLAG_Management FLAG_Management
  248.   * @{
  249.   */
  250.  
  251. /**
  252.   * @brief  Check if flag Prescaler Value Update is set or not
  253.   * @rmtoll SR           PVU           LL_IWDG_IsActiveFlag_PVU
  254.   * @param  IWDGx IWDG Instance
  255.   * @retval State of bit (1 or 0).
  256.   */
  257. __STATIC_INLINE uint32_t LL_IWDG_IsActiveFlag_PVU(IWDG_TypeDef *IWDGx)
  258. {
  259.   return (READ_BIT(IWDGx->SR, IWDG_SR_PVU) == (IWDG_SR_PVU));
  260. }
  261.  
  262. /**
  263.   * @brief  Check if flag Reload Value Update is set or not
  264.   * @rmtoll SR           RVU           LL_IWDG_IsActiveFlag_RVU
  265.   * @param  IWDGx IWDG Instance
  266.   * @retval State of bit (1 or 0).
  267.   */
  268. __STATIC_INLINE uint32_t LL_IWDG_IsActiveFlag_RVU(IWDG_TypeDef *IWDGx)
  269. {
  270.   return (READ_BIT(IWDGx->SR, IWDG_SR_RVU) == (IWDG_SR_RVU));
  271. }
  272.  
  273.  
  274. /**
  275.   * @brief  Check if all flags Prescaler, Reload & Window Value Update are reset or not
  276.   * @rmtoll SR           PVU           LL_IWDG_IsReady\n
  277.   *         SR           RVU           LL_IWDG_IsReady
  278.   * @param  IWDGx IWDG Instance
  279.   * @retval State of bits (1 or 0).
  280.   */
  281. __STATIC_INLINE uint32_t LL_IWDG_IsReady(IWDG_TypeDef *IWDGx)
  282. {
  283.   return (READ_BIT(IWDGx->SR, IWDG_SR_PVU | IWDG_SR_RVU) == 0U);
  284. }
  285.  
  286. /**
  287.   * @}
  288.   */
  289.  
  290.  
  291. /**
  292.   * @}
  293.   */
  294.  
  295. /**
  296.   * @}
  297.   */
  298.  
  299. #endif /* IWDG) */
  300.  
  301. /**
  302.   * @}
  303.   */
  304.  
  305. #ifdef __cplusplus
  306. }
  307. #endif
  308.  
  309. #endif /* STM32F1xx_LL_IWDG_H */
  310.  
  311. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
  312.