Subversion Repositories DashDisplay

Rev

Rev 2 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. /**
  2.   ******************************************************************************
  3.   * @file    stm32f1xx_hal_wwdg.h
  4.   * @author  MCD Application Team
  5.   * @version V1.0.4
  6.   * @date    29-April-2016
  7.   * @brief   Header file of WWDG HAL module.
  8.   ******************************************************************************
  9.   * @attention
  10.   *
  11.   * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
  12.   *
  13.   * Redistribution and use in source and binary forms, with or without modification,
  14.   * are permitted provided that the following conditions are met:
  15.   *   1. Redistributions of source code must retain the above copyright notice,
  16.   *      this list of conditions and the following disclaimer.
  17.   *   2. Redistributions in binary form must reproduce the above copyright notice,
  18.   *      this list of conditions and the following disclaimer in the documentation
  19.   *      and/or other materials provided with the distribution.
  20.   *   3. Neither the name of STMicroelectronics nor the names of its contributors
  21.   *      may be used to endorse or promote products derived from this software
  22.   *      without specific prior written permission.
  23.   *
  24.   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  25.   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  26.   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  27.   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
  28.   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  29.   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  30.   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  31.   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  32.   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  33.   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  34.   *
  35.   ******************************************************************************
  36.   */
  37.  
  38. /* Define to prevent recursive inclusion -------------------------------------*/
  39. #ifndef __STM32F1xx_HAL_WWDG_H
  40. #define __STM32F1xx_HAL_WWDG_H
  41.  
  42. #ifdef __cplusplus
  43.  extern "C" {
  44. #endif
  45.  
  46. /* Includes ------------------------------------------------------------------*/
  47. #include "stm32f1xx_hal_def.h"
  48.  
  49. /** @addtogroup STM32F1xx_HAL_Driver
  50.   * @{
  51.   */
  52.  
  53. /** @addtogroup WWDG
  54.   * @{
  55.   */
  56.  
  57. /* Exported types ------------------------------------------------------------*/
  58.  
  59. /** @defgroup WWDG_Exported_Types WWDG Exported Types
  60.   * @{
  61.   */
  62.  
  63. /**
  64.   * @brief  WWDG HAL State Structure definition
  65.   */
  66. typedef enum
  67. {
  68.   HAL_WWDG_STATE_RESET     = 0x00,  /*!< WWDG not yet initialized or disabled */
  69.   HAL_WWDG_STATE_READY     = 0x01,  /*!< WWDG initialized and ready for use   */
  70.   HAL_WWDG_STATE_BUSY      = 0x02,  /*!< WWDG internal process is ongoing     */
  71.   HAL_WWDG_STATE_TIMEOUT   = 0x03,  /*!< WWDG timeout state                   */
  72.   HAL_WWDG_STATE_ERROR     = 0x04   /*!< WWDG error state                     */
  73. }HAL_WWDG_StateTypeDef;
  74.  
  75. /**
  76.   * @brief  WWDG Init structure definition  
  77.   */
  78. typedef struct
  79. {
  80.   uint32_t Prescaler;  /*!< Specifies the prescaler value of the WWDG.
  81.                             This parameter can be a value of @ref WWDG_Prescaler */
  82.  
  83.   uint32_t Window;     /*!< Specifies the WWDG window value to be compared to the downcounter.
  84.                             This parameter must be a number lower than Max_Data = 0x80 */
  85.  
  86.   uint32_t Counter;    /*!< Specifies the WWDG free-running downcounter value.
  87.                             This parameter must be a number between Min_Data = 0x40 and Max_Data = 0x7F */
  88.  
  89. }WWDG_InitTypeDef;
  90.  
  91. /**
  92.   * @brief  WWDG handle Structure definition  
  93.   */
  94. typedef struct
  95. {
  96.   WWDG_TypeDef                 *Instance;  /*!< Register base address    */
  97.  
  98.   WWDG_InitTypeDef             Init;       /*!< WWDG required parameters */
  99.  
  100.   HAL_LockTypeDef              Lock;       /*!< WWDG locking object      */
  101.  
  102.   __IO HAL_WWDG_StateTypeDef   State;      /*!< WWDG communication state */
  103.  
  104. }WWDG_HandleTypeDef;
  105.  
  106. /**
  107.   * @}
  108.   */
  109.  
  110. /* Exported constants --------------------------------------------------------*/
  111.  
  112. /** @defgroup WWDG_Exported_Constants WWDG Exported Constants
  113.   * @{
  114.   */
  115.  
  116. /** @defgroup WWDG_Interrupt_definition WWDG Interrupt definition
  117.   * @{
  118.   */
  119. #define WWDG_IT_EWI                       WWDG_CFR_EWI  /*!< Early wakeup interrupt */
  120. /**
  121.   * @}
  122.   */
  123.  
  124. /** @defgroup WWDG_Flag_definition WWDG Flag definition
  125.   * @brief WWDG Flag definition
  126.   * @{
  127.   */
  128. #define WWDG_FLAG_EWIF                    WWDG_SR_EWIF  /*!< Early wakeup interrupt flag */
  129. /**
  130.   * @}
  131.   */
  132.  
  133. /** @defgroup WWDG_Prescaler WWDG Prescaler
  134.   * @{
  135.   */
  136. #define WWDG_PRESCALER_1   ((uint32_t)0x00000000)  /*!< WWDG counter clock = (PCLK1/4096)/1 */
  137. #define WWDG_PRESCALER_2                  WWDG_CFR_WDGTB0  /*!< WWDG counter clock = (PCLK1/4096)/2 */
  138. #define WWDG_PRESCALER_4                  WWDG_CFR_WDGTB1  /*!< WWDG counter clock = (PCLK1/4096)/4 */
  139. #define WWDG_PRESCALER_8                  WWDG_CFR_WDGTB  /*!< WWDG counter clock = (PCLK1/4096)/8 */
  140.  
  141. /**
  142.   * @}
  143.   */
  144.  
  145. /**
  146.   * @}
  147.   */
  148.  
  149. /* Private macros ------------------------------------------------------------*/
  150.  
  151. /** @defgroup WWDG_Private_Macros WWDG Private Macros
  152.   * @{
  153.   */
  154. #define IS_WWDG_PRESCALER(__PRESCALER__) (((__PRESCALER__) == WWDG_PRESCALER_1) || \
  155.                                           ((__PRESCALER__) == WWDG_PRESCALER_2) || \
  156.                                           ((__PRESCALER__) == WWDG_PRESCALER_4) || \
  157.                                           ((__PRESCALER__) == WWDG_PRESCALER_8))
  158.  
  159. #define IS_WWDG_WINDOW(__WINDOW__) ((__WINDOW__) <= 0x7F)
  160.  
  161.  
  162. #define IS_WWDG_COUNTER(__COUNTER__) (((__COUNTER__) >= 0x40) && ((__COUNTER__) <= 0x7F))
  163. /**
  164.   * @}
  165.   */
  166.  
  167.  
  168. /* Exported macros ------------------------------------------------------------*/
  169.  
  170. /** @defgroup WWDG_Exported_Macros WWDG Exported Macros
  171.   * @{
  172.   */
  173.  
  174. /** @brief Reset WWDG handle state
  175.   * @param  __HANDLE__: WWDG handle
  176.   * @retval None
  177.   */
  178. #define __HAL_WWDG_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_WWDG_STATE_RESET)
  179.  
  180. /**
  181.   * @brief  Enables the WWDG peripheral.
  182.   * @param  __HANDLE__: WWDG handle
  183.   * @retval None
  184.   */
  185. #define __HAL_WWDG_ENABLE(__HANDLE__)             SET_BIT((__HANDLE__)->Instance->CR, WWDG_CR_WDGA)
  186.  
  187. /**
  188.   * @brief  Disables the WWDG peripheral.
  189.   * @param  __HANDLE__: WWDG handle
  190.   * @note   WARNING: This is a dummy macro for HAL code alignment.
  191.   *         Once enable, WWDG Peripheral cannot be disabled except by a system reset.
  192.   * @retval None
  193.   */
  194. #define __HAL_WWDG_DISABLE(__HANDLE__)                      /* dummy  macro */
  195.  
  196. /**
  197.   * @brief  Enables the WWDG early wakeup interrupt.
  198.   * @param  __HANDLE__: WWDG handle
  199.   * @param  __INTERRUPT__: specifies the interrupt to enable.
  200.   *         This parameter can be one of the following values:
  201.   *            @arg WWDG_IT_EWI: Early wakeup interrupt
  202.   * @note   Once enabled this interrupt cannot be disabled except by a system reset.
  203.   * @retval None
  204.   */
  205. #define __HAL_WWDG_ENABLE_IT(__HANDLE__, __INTERRUPT__)     SET_BIT((__HANDLE__)->Instance->CFR, (__INTERRUPT__))
  206.  
  207. /**
  208.   * @brief  Disables the WWDG early wakeup interrupt.
  209.   * @param  __HANDLE__: WWDG handle
  210.   * @param  __INTERRUPT__: specifies the interrupt to disable.
  211.   *         This parameter can be one of the following values:
  212.   *            @arg WWDG_IT_EWI: Early wakeup interrupt
  213.   * @note   WARNING: This is a dummy macro for HAL code alignment.
  214.   *         Once enabled this interrupt cannot be disabled except by a system reset.
  215.   * @retval None
  216.   */
  217. #define __HAL_WWDG_DISABLE_IT(__HANDLE__, __INTERRUPT__)                   /* dummy  macro */
  218.  
  219. /**
  220.   * @brief  Gets the selected WWDG's it status.
  221.   * @param  __HANDLE__: WWDG handle
  222.   * @param  __INTERRUPT__: specifies the it to check.
  223.   *        This parameter can be one of the following values:
  224.   *            @arg WWDG_FLAG_EWIF: Early wakeup interrupt IT
  225.   * @retval The new state of WWDG_FLAG (SET or RESET).
  226.   */
  227. #define __HAL_WWDG_GET_IT(__HANDLE__, __INTERRUPT__)       __HAL_WWDG_GET_FLAG((__HANDLE__),(__INTERRUPT__))
  228.  
  229. /** @brief  Clear the WWDG's interrupt pending bits
  230.   *         bits to clear the selected interrupt pending bits.
  231.   * @param  __HANDLE__: WWDG handle
  232.   * @param  __INTERRUPT__: specifies the interrupt pending bit to clear.
  233.   *         This parameter can be one of the following values:
  234.   *            @arg WWDG_FLAG_EWIF: Early wakeup interrupt flag
  235.   */
  236. #define __HAL_WWDG_CLEAR_IT(__HANDLE__, __INTERRUPT__)     __HAL_WWDG_CLEAR_FLAG((__HANDLE__), (__INTERRUPT__))
  237.  
  238. /**
  239.   * @brief  Gets the selected WWDG's flag status.
  240.   * @param  __HANDLE__: WWDG handle
  241.   * @param  __FLAG__: specifies the flag to check.
  242.   *         This parameter can be one of the following values:
  243.   *            @arg WWDG_FLAG_EWIF: Early wakeup interrupt flag
  244.   * @retval The new state of WWDG_FLAG (SET or RESET).
  245.   */
  246. #define __HAL_WWDG_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->SR & (__FLAG__)) == (__FLAG__))
  247.  
  248. /**
  249.   * @brief  Clears the WWDG's pending flags.
  250.   * @param  __HANDLE__: WWDG handle
  251.   * @param  __FLAG__: specifies the flag to clear.
  252.   *         This parameter can be one of the following values:
  253.   *            @arg WWDG_FLAG_EWIF: Early wakeup interrupt flag
  254.   * @retval None
  255.   */
  256. #define __HAL_WWDG_CLEAR_FLAG(__HANDLE__, __FLAG__)         ((__HANDLE__)->Instance->SR = ~(__FLAG__))
  257.  
  258. /** @brief  Checks if the specified WWDG interrupt source is enabled or disabled.
  259.   * @param  __HANDLE__: WWDG Handle.
  260.   * @param  __INTERRUPT__: specifies the WWDG interrupt source to check.
  261.   *          This parameter can be one of the following values:
  262.   *            @arg WWDG_IT_EWI: Early Wakeup Interrupt
  263.   * @retval state of __INTERRUPT__ (TRUE or FALSE).
  264.   */
  265. #define __HAL_WWDG_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->CFR & (__INTERRUPT__)) == (__INTERRUPT__))
  266.  
  267. /**
  268.   * @}
  269.   */
  270.  
  271. /* Exported functions --------------------------------------------------------*/
  272.  
  273. /** @addtogroup WWDG_Exported_Functions
  274.   * @{
  275.   */
  276.  
  277. /** @addtogroup WWDG_Exported_Functions_Group1
  278.   * @{
  279.   */
  280. /* Initialization/de-initialization functions  **********************************/
  281. HAL_StatusTypeDef HAL_WWDG_Init(WWDG_HandleTypeDef *hwwdg);
  282. HAL_StatusTypeDef HAL_WWDG_DeInit(WWDG_HandleTypeDef *hwwdg);
  283. void HAL_WWDG_MspInit(WWDG_HandleTypeDef *hwwdg);
  284. void HAL_WWDG_MspDeInit(WWDG_HandleTypeDef *hwwdg);
  285. void HAL_WWDG_WakeupCallback(WWDG_HandleTypeDef* hwwdg);
  286.  
  287. /**
  288.   * @}
  289.   */
  290.  
  291. /** @addtogroup WWDG_Exported_Functions_Group2
  292.   * @{
  293.   */
  294. /* I/O operation functions ******************************************************/
  295. HAL_StatusTypeDef HAL_WWDG_Start(WWDG_HandleTypeDef *hwwdg);
  296. HAL_StatusTypeDef HAL_WWDG_Start_IT(WWDG_HandleTypeDef *hwwdg);
  297. HAL_StatusTypeDef HAL_WWDG_Refresh(WWDG_HandleTypeDef *hwwdg, uint32_t Counter);
  298. void HAL_WWDG_IRQHandler(WWDG_HandleTypeDef *hwwdg);
  299.  
  300. /**
  301.   * @}
  302.   */
  303.  
  304. /** @addtogroup WWDG_Exported_Functions_Group3
  305.   * @{
  306.   */
  307. /* Peripheral State functions  **************************************************/
  308. HAL_WWDG_StateTypeDef HAL_WWDG_GetState(WWDG_HandleTypeDef *hwwdg);
  309.  
  310. /**
  311.   * @}
  312.   */
  313.  
  314. /**
  315.   * @}
  316.   */
  317.  
  318. /**
  319.   * @}
  320.   */
  321.  
  322. /**
  323.   * @}
  324.   */
  325.  
  326. #ifdef __cplusplus
  327. }
  328. #endif
  329.  
  330. #endif /* __STM32F1xx_HAL_WWDG_H */
  331.  
  332. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
  333.