/******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** * File Name : stm32f10x_wwdg.c * Author : MCD Application Team * Version : V2.0.2 * Date : 07/11/2008 * Description : This file provides all the WWDG firmware functions. ******************************************************************************** * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. *******************************************************************************/ /* Includes ------------------------------------------------------------------*/ #include "stm32f10x_wwdg.h" #include "stm32f10x_rcc.h" /* Private typedef -----------------------------------------------------------*/ /* Private define ------------------------------------------------------------*/ /* ----------- WWDG registers bit address in the alias region ----------- */ #define WWDG_OFFSET (WWDG_BASE - PERIPH_BASE) /* Alias word address of EWI bit */ #define CFR_OFFSET (WWDG_OFFSET + 0x04) #define EWI_BitNumber 0x09 #define CFR_EWI_BB (PERIPH_BB_BASE + (CFR_OFFSET * 32) + (EWI_BitNumber * 4)) /* --------------------- WWDG registers bit mask ------------------------ */ /* CR register bit mask */ #define CR_WDGA_Set ((u32)0x00000080) /* CFR register bit mask */ #define CFR_WDGTB_Mask ((u32)0xFFFFFE7F) #define CFR_W_Mask ((u32)0xFFFFFF80) #define BIT_Mask ((u8)0x7F) /* Private macro -------------------------------------------------------------*/ /* Private variables ---------------------------------------------------------*/ /* Private function prototypes -----------------------------------------------*/ /* Private functions ---------------------------------------------------------*/ /******************************************************************************* * Function Name : WWDG_DeInit * Description : Deinitializes the WWDG peripheral registers to their default * reset values. * Input : None * Output : None * Return : None *******************************************************************************/ void WWDG_DeInit(void) { RCC_APB1PeriphResetCmd(RCC_APB1Periph_WWDG, ENABLE); RCC_APB1PeriphResetCmd(RCC_APB1Periph_WWDG, DISABLE); } /******************************************************************************* * Function Name : WWDG_SetPrescaler * Description : Sets the WWDG Prescaler. * Input : - WWDG_Prescaler: specifies the WWDG Prescaler. * This parameter can be one of the following values: * - WWDG_Prescaler_1: WWDG counter clock = (PCLK1/4096)/1 * - WWDG_Prescaler_2: WWDG counter clock = (PCLK1/4096)/2 * - WWDG_Prescaler_4: WWDG counter clock = (PCLK1/4096)/4 * - WWDG_Prescaler_8: WWDG counter clock = (PCLK1/4096)/8 * Output : None * Return : None *******************************************************************************/ void WWDG_SetPrescaler(u32 WWDG_Prescaler) { u32 tmpreg = 0; /* Check the parameters */ assert_param(IS_WWDG_PRESCALER(WWDG_Prescaler)); /* Clear WDGTB[1:0] bits */ tmpreg = WWDG->CFR & CFR_WDGTB_Mask; /* Set WDGTB[1:0] bits according to WWDG_Prescaler value */ tmpreg |= WWDG_Prescaler; /* Store the new value */ WWDG->CFR = tmpreg; } /******************************************************************************* * Function Name : WWDG_SetWindowValue * Description : Sets the WWDG window value. * Input : - WindowValue: specifies the window value to be compared to * the downcounter. * This parameter value must be lower than 0x80. * Output : None * Return : None *******************************************************************************/ void WWDG_SetWindowValue(u8 WindowValue) { u32 tmpreg = 0; /* Check the parameters */ assert_param(IS_WWDG_WINDOW_VALUE(WindowValue)); /* Clear W[6:0] bits */ tmpreg = WWDG->CFR & CFR_W_Mask; /* Set W[6:0] bits according to WindowValue value */ tmpreg |= WindowValue & BIT_Mask; /* Store the new value */ WWDG->CFR = tmpreg; } /******************************************************************************* * Function Name : WWDG_EnableIT * Description : Enables the WWDG Early Wakeup interrupt(EWI). * Input : None * Output : None * Return : None *******************************************************************************/ void WWDG_EnableIT(void) { *(vu32 *) CFR_EWI_BB = (u32)ENABLE; } /******************************************************************************* * Function Name : WWDG_SetCounter * Description : Sets the WWDG counter value. * Input : - Counter: specifies the watchdog counter value. * This parameter must be a number between 0x40 and 0x7F. * Output : None * Return : None *******************************************************************************/ void WWDG_SetCounter(u8 Counter) { /* Check the parameters */ assert_param(IS_WWDG_COUNTER(Counter)); /* Write to T[6:0] bits to configure the counter value, no need to do a read-modify-write; writing a 0 to WDGA bit does nothing */ WWDG->CR = Counter & BIT_Mask; } /******************************************************************************* * Function Name : WWDG_Enable * Description : Enables WWDG and load the counter value. * - Counter: specifies the watchdog counter value. * This parameter must be a number between 0x40 and 0x7F. * Input : None * Output : None * Return : None *******************************************************************************/ void WWDG_Enable(u8 Counter) { /* Check the parameters */ assert_param(IS_WWDG_COUNTER(Counter)); WWDG->CR = CR_WDGA_Set | Counter; } /******************************************************************************* * Function Name : WWDG_GetFlagStatus * Description : Checks whether the Early Wakeup interrupt flag is set or not. * Input : None * Output : None * Return : The new state of the Early Wakeup interrupt flag (SET or RESET) *******************************************************************************/ FlagStatus WWDG_GetFlagStatus(void) { return (FlagStatus)(WWDG->SR); } /******************************************************************************* * Function Name : WWDG_ClearFlag * Description : Clears Early Wakeup interrupt flag. * Input : None * Output : None * Return : None *******************************************************************************/ void WWDG_ClearFlag(void) { WWDG->SR = (u32)RESET; } /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/