mbed SDK library sources

Fork of mbed-src by mbed official

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Committer:
mbed_official
Date:
Mon Feb 03 09:30:05 2014 +0000
Revision:
84:f54042cbc282
Parent:
70:c1fbde68b492
Synchronized with git revision bbbd8699601c42149ccf0c37bc42bb6856ccc4c6

Full URL: https://github.com/mbedmicro/mbed/commit/bbbd8699601c42149ccf0c37bc42bb6856ccc4c6/

[NUCLEO_L152RE/F030_R8] SPI, I2C, Ticker, PWM updates

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 52:a51c77007319 1 /**
mbed_official 52:a51c77007319 2 ******************************************************************************
mbed_official 52:a51c77007319 3 * @file stm32f10x_wwdg.c
mbed_official 52:a51c77007319 4 * @author MCD Application Team
mbed_official 84:f54042cbc282 5 * @version V3.6.1
mbed_official 84:f54042cbc282 6 * @date 05-March-2012
mbed_official 52:a51c77007319 7 * @brief This file provides all the WWDG firmware functions.
mbed_official 70:c1fbde68b492 8 *******************************************************************************
mbed_official 70:c1fbde68b492 9 * Copyright (c) 2014, STMicroelectronics
mbed_official 70:c1fbde68b492 10 * All rights reserved.
mbed_official 70:c1fbde68b492 11 *
mbed_official 70:c1fbde68b492 12 * Redistribution and use in source and binary forms, with or without
mbed_official 70:c1fbde68b492 13 * modification, are permitted provided that the following conditions are met:
mbed_official 70:c1fbde68b492 14 *
mbed_official 70:c1fbde68b492 15 * 1. Redistributions of source code must retain the above copyright notice,
mbed_official 70:c1fbde68b492 16 * this list of conditions and the following disclaimer.
mbed_official 70:c1fbde68b492 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
mbed_official 70:c1fbde68b492 18 * this list of conditions and the following disclaimer in the documentation
mbed_official 70:c1fbde68b492 19 * and/or other materials provided with the distribution.
mbed_official 70:c1fbde68b492 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
mbed_official 70:c1fbde68b492 21 * may be used to endorse or promote products derived from this software
mbed_official 70:c1fbde68b492 22 * without specific prior written permission.
mbed_official 70:c1fbde68b492 23 *
mbed_official 70:c1fbde68b492 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
mbed_official 70:c1fbde68b492 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
mbed_official 70:c1fbde68b492 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 70:c1fbde68b492 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
mbed_official 70:c1fbde68b492 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
mbed_official 70:c1fbde68b492 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
mbed_official 70:c1fbde68b492 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
mbed_official 70:c1fbde68b492 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
mbed_official 70:c1fbde68b492 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
mbed_official 70:c1fbde68b492 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 70:c1fbde68b492 34 *******************************************************************************
mbed_official 70:c1fbde68b492 35 */
mbed_official 52:a51c77007319 36
mbed_official 52:a51c77007319 37 /* Includes ------------------------------------------------------------------*/
mbed_official 52:a51c77007319 38 #include "stm32f10x_wwdg.h"
mbed_official 52:a51c77007319 39 #include "stm32f10x_rcc.h"
mbed_official 52:a51c77007319 40
mbed_official 52:a51c77007319 41 /** @addtogroup STM32F10x_StdPeriph_Driver
mbed_official 52:a51c77007319 42 * @{
mbed_official 52:a51c77007319 43 */
mbed_official 52:a51c77007319 44
mbed_official 52:a51c77007319 45 /** @defgroup WWDG
mbed_official 52:a51c77007319 46 * @brief WWDG driver modules
mbed_official 52:a51c77007319 47 * @{
mbed_official 52:a51c77007319 48 */
mbed_official 52:a51c77007319 49
mbed_official 52:a51c77007319 50 /** @defgroup WWDG_Private_TypesDefinitions
mbed_official 52:a51c77007319 51 * @{
mbed_official 52:a51c77007319 52 */
mbed_official 52:a51c77007319 53
mbed_official 52:a51c77007319 54 /**
mbed_official 52:a51c77007319 55 * @}
mbed_official 52:a51c77007319 56 */
mbed_official 52:a51c77007319 57
mbed_official 52:a51c77007319 58 /** @defgroup WWDG_Private_Defines
mbed_official 52:a51c77007319 59 * @{
mbed_official 52:a51c77007319 60 */
mbed_official 52:a51c77007319 61
mbed_official 52:a51c77007319 62 /* ----------- WWDG registers bit address in the alias region ----------- */
mbed_official 52:a51c77007319 63 #define WWDG_OFFSET (WWDG_BASE - PERIPH_BASE)
mbed_official 52:a51c77007319 64
mbed_official 52:a51c77007319 65 /* Alias word address of EWI bit */
mbed_official 52:a51c77007319 66 #define CFR_OFFSET (WWDG_OFFSET + 0x04)
mbed_official 52:a51c77007319 67 #define EWI_BitNumber 0x09
mbed_official 52:a51c77007319 68 #define CFR_EWI_BB (PERIPH_BB_BASE + (CFR_OFFSET * 32) + (EWI_BitNumber * 4))
mbed_official 52:a51c77007319 69
mbed_official 52:a51c77007319 70 /* --------------------- WWDG registers bit mask ------------------------ */
mbed_official 52:a51c77007319 71
mbed_official 52:a51c77007319 72 /* CR register bit mask */
mbed_official 52:a51c77007319 73 #define CR_WDGA_Set ((uint32_t)0x00000080)
mbed_official 52:a51c77007319 74
mbed_official 52:a51c77007319 75 /* CFR register bit mask */
mbed_official 52:a51c77007319 76 #define CFR_WDGTB_Mask ((uint32_t)0xFFFFFE7F)
mbed_official 52:a51c77007319 77 #define CFR_W_Mask ((uint32_t)0xFFFFFF80)
mbed_official 52:a51c77007319 78 #define BIT_Mask ((uint8_t)0x7F)
mbed_official 52:a51c77007319 79
mbed_official 52:a51c77007319 80 /**
mbed_official 52:a51c77007319 81 * @}
mbed_official 52:a51c77007319 82 */
mbed_official 52:a51c77007319 83
mbed_official 52:a51c77007319 84 /** @defgroup WWDG_Private_Macros
mbed_official 52:a51c77007319 85 * @{
mbed_official 52:a51c77007319 86 */
mbed_official 52:a51c77007319 87
mbed_official 52:a51c77007319 88 /**
mbed_official 52:a51c77007319 89 * @}
mbed_official 52:a51c77007319 90 */
mbed_official 52:a51c77007319 91
mbed_official 52:a51c77007319 92 /** @defgroup WWDG_Private_Variables
mbed_official 52:a51c77007319 93 * @{
mbed_official 52:a51c77007319 94 */
mbed_official 52:a51c77007319 95
mbed_official 52:a51c77007319 96 /**
mbed_official 52:a51c77007319 97 * @}
mbed_official 52:a51c77007319 98 */
mbed_official 52:a51c77007319 99
mbed_official 52:a51c77007319 100 /** @defgroup WWDG_Private_FunctionPrototypes
mbed_official 52:a51c77007319 101 * @{
mbed_official 52:a51c77007319 102 */
mbed_official 52:a51c77007319 103
mbed_official 52:a51c77007319 104 /**
mbed_official 52:a51c77007319 105 * @}
mbed_official 52:a51c77007319 106 */
mbed_official 52:a51c77007319 107
mbed_official 52:a51c77007319 108 /** @defgroup WWDG_Private_Functions
mbed_official 52:a51c77007319 109 * @{
mbed_official 52:a51c77007319 110 */
mbed_official 52:a51c77007319 111
mbed_official 52:a51c77007319 112 /**
mbed_official 52:a51c77007319 113 * @brief Deinitializes the WWDG peripheral registers to their default reset values.
mbed_official 52:a51c77007319 114 * @param None
mbed_official 52:a51c77007319 115 * @retval None
mbed_official 52:a51c77007319 116 */
mbed_official 52:a51c77007319 117 void WWDG_DeInit(void)
mbed_official 52:a51c77007319 118 {
mbed_official 52:a51c77007319 119 RCC_APB1PeriphResetCmd(RCC_APB1Periph_WWDG, ENABLE);
mbed_official 52:a51c77007319 120 RCC_APB1PeriphResetCmd(RCC_APB1Periph_WWDG, DISABLE);
mbed_official 52:a51c77007319 121 }
mbed_official 52:a51c77007319 122
mbed_official 52:a51c77007319 123 /**
mbed_official 52:a51c77007319 124 * @brief Sets the WWDG Prescaler.
mbed_official 52:a51c77007319 125 * @param WWDG_Prescaler: specifies the WWDG Prescaler.
mbed_official 52:a51c77007319 126 * This parameter can be one of the following values:
mbed_official 52:a51c77007319 127 * @arg WWDG_Prescaler_1: WWDG counter clock = (PCLK1/4096)/1
mbed_official 52:a51c77007319 128 * @arg WWDG_Prescaler_2: WWDG counter clock = (PCLK1/4096)/2
mbed_official 52:a51c77007319 129 * @arg WWDG_Prescaler_4: WWDG counter clock = (PCLK1/4096)/4
mbed_official 52:a51c77007319 130 * @arg WWDG_Prescaler_8: WWDG counter clock = (PCLK1/4096)/8
mbed_official 52:a51c77007319 131 * @retval None
mbed_official 52:a51c77007319 132 */
mbed_official 52:a51c77007319 133 void WWDG_SetPrescaler(uint32_t WWDG_Prescaler)
mbed_official 52:a51c77007319 134 {
mbed_official 52:a51c77007319 135 uint32_t tmpreg = 0;
mbed_official 52:a51c77007319 136 /* Check the parameters */
mbed_official 52:a51c77007319 137 assert_param(IS_WWDG_PRESCALER(WWDG_Prescaler));
mbed_official 52:a51c77007319 138 /* Clear WDGTB[1:0] bits */
mbed_official 52:a51c77007319 139 tmpreg = WWDG->CFR & CFR_WDGTB_Mask;
mbed_official 52:a51c77007319 140 /* Set WDGTB[1:0] bits according to WWDG_Prescaler value */
mbed_official 52:a51c77007319 141 tmpreg |= WWDG_Prescaler;
mbed_official 52:a51c77007319 142 /* Store the new value */
mbed_official 52:a51c77007319 143 WWDG->CFR = tmpreg;
mbed_official 52:a51c77007319 144 }
mbed_official 52:a51c77007319 145
mbed_official 52:a51c77007319 146 /**
mbed_official 52:a51c77007319 147 * @brief Sets the WWDG window value.
mbed_official 52:a51c77007319 148 * @param WindowValue: specifies the window value to be compared to the downcounter.
mbed_official 52:a51c77007319 149 * This parameter value must be lower than 0x80.
mbed_official 52:a51c77007319 150 * @retval None
mbed_official 52:a51c77007319 151 */
mbed_official 52:a51c77007319 152 void WWDG_SetWindowValue(uint8_t WindowValue)
mbed_official 52:a51c77007319 153 {
mbed_official 52:a51c77007319 154 __IO uint32_t tmpreg = 0;
mbed_official 52:a51c77007319 155
mbed_official 52:a51c77007319 156 /* Check the parameters */
mbed_official 52:a51c77007319 157 assert_param(IS_WWDG_WINDOW_VALUE(WindowValue));
mbed_official 52:a51c77007319 158 /* Clear W[6:0] bits */
mbed_official 52:a51c77007319 159
mbed_official 52:a51c77007319 160 tmpreg = WWDG->CFR & CFR_W_Mask;
mbed_official 52:a51c77007319 161
mbed_official 52:a51c77007319 162 /* Set W[6:0] bits according to WindowValue value */
mbed_official 52:a51c77007319 163 tmpreg |= WindowValue & (uint32_t) BIT_Mask;
mbed_official 52:a51c77007319 164
mbed_official 52:a51c77007319 165 /* Store the new value */
mbed_official 52:a51c77007319 166 WWDG->CFR = tmpreg;
mbed_official 52:a51c77007319 167 }
mbed_official 52:a51c77007319 168
mbed_official 52:a51c77007319 169 /**
mbed_official 52:a51c77007319 170 * @brief Enables the WWDG Early Wakeup interrupt(EWI).
mbed_official 52:a51c77007319 171 * @param None
mbed_official 52:a51c77007319 172 * @retval None
mbed_official 52:a51c77007319 173 */
mbed_official 52:a51c77007319 174 void WWDG_EnableIT(void)
mbed_official 52:a51c77007319 175 {
mbed_official 52:a51c77007319 176 *(__IO uint32_t *) CFR_EWI_BB = (uint32_t)ENABLE;
mbed_official 52:a51c77007319 177 }
mbed_official 52:a51c77007319 178
mbed_official 52:a51c77007319 179 /**
mbed_official 52:a51c77007319 180 * @brief Sets the WWDG counter value.
mbed_official 52:a51c77007319 181 * @param Counter: specifies the watchdog counter value.
mbed_official 52:a51c77007319 182 * This parameter must be a number between 0x40 and 0x7F.
mbed_official 52:a51c77007319 183 * @retval None
mbed_official 52:a51c77007319 184 */
mbed_official 52:a51c77007319 185 void WWDG_SetCounter(uint8_t Counter)
mbed_official 52:a51c77007319 186 {
mbed_official 52:a51c77007319 187 /* Check the parameters */
mbed_official 52:a51c77007319 188 assert_param(IS_WWDG_COUNTER(Counter));
mbed_official 52:a51c77007319 189 /* Write to T[6:0] bits to configure the counter value, no need to do
mbed_official 52:a51c77007319 190 a read-modify-write; writing a 0 to WDGA bit does nothing */
mbed_official 52:a51c77007319 191 WWDG->CR = Counter & BIT_Mask;
mbed_official 52:a51c77007319 192 }
mbed_official 52:a51c77007319 193
mbed_official 52:a51c77007319 194 /**
mbed_official 52:a51c77007319 195 * @brief Enables WWDG and load the counter value.
mbed_official 52:a51c77007319 196 * @param Counter: specifies the watchdog counter value.
mbed_official 52:a51c77007319 197 * This parameter must be a number between 0x40 and 0x7F.
mbed_official 52:a51c77007319 198 * @retval None
mbed_official 52:a51c77007319 199 */
mbed_official 52:a51c77007319 200 void WWDG_Enable(uint8_t Counter)
mbed_official 52:a51c77007319 201 {
mbed_official 52:a51c77007319 202 /* Check the parameters */
mbed_official 52:a51c77007319 203 assert_param(IS_WWDG_COUNTER(Counter));
mbed_official 52:a51c77007319 204 WWDG->CR = CR_WDGA_Set | Counter;
mbed_official 52:a51c77007319 205 }
mbed_official 52:a51c77007319 206
mbed_official 52:a51c77007319 207 /**
mbed_official 52:a51c77007319 208 * @brief Checks whether the Early Wakeup interrupt flag is set or not.
mbed_official 52:a51c77007319 209 * @param None
mbed_official 52:a51c77007319 210 * @retval The new state of the Early Wakeup interrupt flag (SET or RESET)
mbed_official 52:a51c77007319 211 */
mbed_official 52:a51c77007319 212 FlagStatus WWDG_GetFlagStatus(void)
mbed_official 52:a51c77007319 213 {
mbed_official 52:a51c77007319 214 return (FlagStatus)(WWDG->SR);
mbed_official 52:a51c77007319 215 }
mbed_official 52:a51c77007319 216
mbed_official 52:a51c77007319 217 /**
mbed_official 52:a51c77007319 218 * @brief Clears Early Wakeup interrupt flag.
mbed_official 52:a51c77007319 219 * @param None
mbed_official 52:a51c77007319 220 * @retval None
mbed_official 52:a51c77007319 221 */
mbed_official 52:a51c77007319 222 void WWDG_ClearFlag(void)
mbed_official 52:a51c77007319 223 {
mbed_official 52:a51c77007319 224 WWDG->SR = (uint32_t)RESET;
mbed_official 52:a51c77007319 225 }
mbed_official 52:a51c77007319 226
mbed_official 52:a51c77007319 227 /**
mbed_official 52:a51c77007319 228 * @}
mbed_official 52:a51c77007319 229 */
mbed_official 52:a51c77007319 230
mbed_official 52:a51c77007319 231 /**
mbed_official 52:a51c77007319 232 * @}
mbed_official 52:a51c77007319 233 */
mbed_official 52:a51c77007319 234
mbed_official 52:a51c77007319 235 /**
mbed_official 52:a51c77007319 236 * @}
mbed_official 52:a51c77007319 237 */
mbed_official 52:a51c77007319 238
mbed_official 84:f54042cbc282 239 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/