ON Semiconductor / mbed-os

Dependents:   mbed-TFT-example-NCS36510 mbed-Accelerometer-example-NCS36510 mbed-Accelerometer-example-NCS36510

Committer:
group-onsemi
Date:
Wed Jan 25 20:34:15 2017 +0000
Revision:
0:098463de4c5d
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
group-onsemi 0:098463de4c5d 1 /**
group-onsemi 0:098463de4c5d 2 ******************************************************************************
group-onsemi 0:098463de4c5d 3 * @file stm32l0xx_hal_firewall.c
group-onsemi 0:098463de4c5d 4 * @author MCD Application Team
group-onsemi 0:098463de4c5d 5 * @version V1.7.0
group-onsemi 0:098463de4c5d 6 * @date 31-May-2016
group-onsemi 0:098463de4c5d 7 * @brief FIREWALL HAL module driver.
group-onsemi 0:098463de4c5d 8 * This file provides firmware functions to manage the Firewall
group-onsemi 0:098463de4c5d 9 * Peripheral initialization and enabling.
group-onsemi 0:098463de4c5d 10 *
group-onsemi 0:098463de4c5d 11 *
group-onsemi 0:098463de4c5d 12 @verbatim
group-onsemi 0:098463de4c5d 13 ===============================================================================
group-onsemi 0:098463de4c5d 14 ##### How to use this driver #####
group-onsemi 0:098463de4c5d 15 ===============================================================================
group-onsemi 0:098463de4c5d 16 [..]
group-onsemi 0:098463de4c5d 17 The FIREWALL HAL driver can be used as follows:
group-onsemi 0:098463de4c5d 18
group-onsemi 0:098463de4c5d 19 (#) Declare a FIREWALL_InitTypeDef initialization structure.
group-onsemi 0:098463de4c5d 20
group-onsemi 0:098463de4c5d 21 (#) Resort to HAL_FIREWALL_Config() API to initialize the Firewall
group-onsemi 0:098463de4c5d 22
group-onsemi 0:098463de4c5d 23 (#) Enable the FIREWALL in calling HAL_FIREWALL_EnableFirewall() API
group-onsemi 0:098463de4c5d 24
group-onsemi 0:098463de4c5d 25 (#) To ensure that any code executed outside the protected segment closes the
group-onsemi 0:098463de4c5d 26 FIREWALL, the user must set the flag FIREWALL_PRE_ARM_SET in calling
group-onsemi 0:098463de4c5d 27 __HAL_FIREWALL_PREARM_ENABLE() macro if called within a protected code segment
group-onsemi 0:098463de4c5d 28 or
group-onsemi 0:098463de4c5d 29 HAL_FIREWALL_EnablePreArmFlag() API if called outside of protected code segment
group-onsemi 0:098463de4c5d 30 after HAL_FIREWALL_Config() call.
group-onsemi 0:098463de4c5d 31
group-onsemi 0:098463de4c5d 32
group-onsemi 0:098463de4c5d 33 @endverbatim
group-onsemi 0:098463de4c5d 34 ******************************************************************************
group-onsemi 0:098463de4c5d 35 * @attention
group-onsemi 0:098463de4c5d 36 *
group-onsemi 0:098463de4c5d 37 * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
group-onsemi 0:098463de4c5d 38 *
group-onsemi 0:098463de4c5d 39 * Redistribution and use in source and binary forms, with or without modification,
group-onsemi 0:098463de4c5d 40 * are permitted provided that the following conditions are met:
group-onsemi 0:098463de4c5d 41 * 1. Redistributions of source code must retain the above copyright notice,
group-onsemi 0:098463de4c5d 42 * this list of conditions and the following disclaimer.
group-onsemi 0:098463de4c5d 43 * 2. Redistributions in binary form must reproduce the above copyright notice,
group-onsemi 0:098463de4c5d 44 * this list of conditions and the following disclaimer in the documentation
group-onsemi 0:098463de4c5d 45 * and/or other materials provided with the distribution.
group-onsemi 0:098463de4c5d 46 * 3. Neither the name of STMicroelectronics nor the names of its contributors
group-onsemi 0:098463de4c5d 47 * may be used to endorse or promote products derived from this software
group-onsemi 0:098463de4c5d 48 * without specific prior written permission.
group-onsemi 0:098463de4c5d 49 *
group-onsemi 0:098463de4c5d 50 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
group-onsemi 0:098463de4c5d 51 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
group-onsemi 0:098463de4c5d 52 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
group-onsemi 0:098463de4c5d 53 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
group-onsemi 0:098463de4c5d 54 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
group-onsemi 0:098463de4c5d 55 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
group-onsemi 0:098463de4c5d 56 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
group-onsemi 0:098463de4c5d 57 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
group-onsemi 0:098463de4c5d 58 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
group-onsemi 0:098463de4c5d 59 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
group-onsemi 0:098463de4c5d 60 *
group-onsemi 0:098463de4c5d 61 ******************************************************************************
group-onsemi 0:098463de4c5d 62 */
group-onsemi 0:098463de4c5d 63 #if !defined (STM32L011xx) && !defined (STM32L021xx) && !defined (STM32L031xx) && !defined (STM32L041xx)
group-onsemi 0:098463de4c5d 64
group-onsemi 0:098463de4c5d 65 /* Includes ------------------------------------------------------------------*/
group-onsemi 0:098463de4c5d 66 #include "stm32l0xx_hal.h"
group-onsemi 0:098463de4c5d 67
group-onsemi 0:098463de4c5d 68 /** @addtogroup STM32L0xx_HAL_Driver
group-onsemi 0:098463de4c5d 69 * @{
group-onsemi 0:098463de4c5d 70 */
group-onsemi 0:098463de4c5d 71
group-onsemi 0:098463de4c5d 72 #ifdef HAL_FIREWALL_MODULE_ENABLED
group-onsemi 0:098463de4c5d 73
group-onsemi 0:098463de4c5d 74 /** @addtogroup FIREWALL
group-onsemi 0:098463de4c5d 75 * @brief HAL FIREWALL module driver
group-onsemi 0:098463de4c5d 76 * @{
group-onsemi 0:098463de4c5d 77 */
group-onsemi 0:098463de4c5d 78
group-onsemi 0:098463de4c5d 79
group-onsemi 0:098463de4c5d 80
group-onsemi 0:098463de4c5d 81 /** @addtogroup FIREWALL_Exported_Functions
group-onsemi 0:098463de4c5d 82 * @{
group-onsemi 0:098463de4c5d 83 */
group-onsemi 0:098463de4c5d 84
group-onsemi 0:098463de4c5d 85 /** @addtogroup FIREWALL_Exported_Functions_Group1
group-onsemi 0:098463de4c5d 86 * @brief Initialization and Configuration Functions
group-onsemi 0:098463de4c5d 87 *
group-onsemi 0:098463de4c5d 88 @verbatim
group-onsemi 0:098463de4c5d 89 ===============================================================================
group-onsemi 0:098463de4c5d 90 ##### Initialization and Configuration functions #####
group-onsemi 0:098463de4c5d 91 ===============================================================================
group-onsemi 0:098463de4c5d 92 [..]
group-onsemi 0:098463de4c5d 93 This subsection provides the functions allowing to initialize the Firewall.
group-onsemi 0:098463de4c5d 94 Initialization is done by HAL_FIREWALL_Config():
group-onsemi 0:098463de4c5d 95
group-onsemi 0:098463de4c5d 96 (+) Enable the Firewall clock thru __HAL_RCC_FIREWALL_CLK_ENABLE() macro.
group-onsemi 0:098463de4c5d 97
group-onsemi 0:098463de4c5d 98 (+) Set the protected code segment address start and length.
group-onsemi 0:098463de4c5d 99
group-onsemi 0:098463de4c5d 100 (+) Set the protected non-volatile and/or volatile data segments
group-onsemi 0:098463de4c5d 101 address starts and lengths if applicable.
group-onsemi 0:098463de4c5d 102
group-onsemi 0:098463de4c5d 103 (+) Set the volatile data segment execution and sharing status.
group-onsemi 0:098463de4c5d 104
group-onsemi 0:098463de4c5d 105 (+) Length must be set to 0 for an unprotected segment.
group-onsemi 0:098463de4c5d 106
group-onsemi 0:098463de4c5d 107 @endverbatim
group-onsemi 0:098463de4c5d 108 * @{
group-onsemi 0:098463de4c5d 109 */
group-onsemi 0:098463de4c5d 110
group-onsemi 0:098463de4c5d 111 /**
group-onsemi 0:098463de4c5d 112 * @brief Initialize the Firewall according to the FIREWALL_InitTypeDef structure parameters.
group-onsemi 0:098463de4c5d 113 * @param fw_init: Firewall initialization structure
group-onsemi 0:098463de4c5d 114 * @note The API returns HAL_ERROR if the Firewall is already enabled.
group-onsemi 0:098463de4c5d 115 * @retval HAL status
group-onsemi 0:098463de4c5d 116 */
group-onsemi 0:098463de4c5d 117 HAL_StatusTypeDef HAL_FIREWALL_Config(FIREWALL_InitTypeDef * fw_init)
group-onsemi 0:098463de4c5d 118 {
group-onsemi 0:098463de4c5d 119 /* Check the Firewall initialization structure allocation */
group-onsemi 0:098463de4c5d 120 if(fw_init == NULL)
group-onsemi 0:098463de4c5d 121 {
group-onsemi 0:098463de4c5d 122 return HAL_ERROR;
group-onsemi 0:098463de4c5d 123 }
group-onsemi 0:098463de4c5d 124
group-onsemi 0:098463de4c5d 125 /* Enable Firewall clock */
group-onsemi 0:098463de4c5d 126 __HAL_RCC_FIREWALL_CLK_ENABLE();
group-onsemi 0:098463de4c5d 127
group-onsemi 0:098463de4c5d 128 /* Make sure that Firewall is not enabled already */
group-onsemi 0:098463de4c5d 129 if (__HAL_FIREWALL_IS_ENABLED() != RESET)
group-onsemi 0:098463de4c5d 130 {
group-onsemi 0:098463de4c5d 131 return HAL_ERROR;
group-onsemi 0:098463de4c5d 132 }
group-onsemi 0:098463de4c5d 133
group-onsemi 0:098463de4c5d 134 /* Check Firewall configuration addresses and lengths when segment is protected */
group-onsemi 0:098463de4c5d 135 /* Code segment */
group-onsemi 0:098463de4c5d 136 if (fw_init->CodeSegmentLength != 0U)
group-onsemi 0:098463de4c5d 137 {
group-onsemi 0:098463de4c5d 138 assert_param(IS_FIREWALL_CODE_SEGMENT_ADDRESS(fw_init->CodeSegmentStartAddress));
group-onsemi 0:098463de4c5d 139 assert_param(IS_FIREWALL_CODE_SEGMENT_LENGTH(fw_init->CodeSegmentStartAddress, fw_init->CodeSegmentLength));
group-onsemi 0:098463de4c5d 140 }
group-onsemi 0:098463de4c5d 141 /* Non volatile data segment */
group-onsemi 0:098463de4c5d 142 if (fw_init->NonVDataSegmentLength != 0U)
group-onsemi 0:098463de4c5d 143 {
group-onsemi 0:098463de4c5d 144 assert_param(IS_FIREWALL_NONVOLATILEDATA_SEGMENT_ADDRESS(fw_init->NonVDataSegmentStartAddress));
group-onsemi 0:098463de4c5d 145 assert_param(IS_FIREWALL_NONVOLATILEDATA_SEGMENT_LENGTH(fw_init->NonVDataSegmentStartAddress, fw_init->NonVDataSegmentLength));
group-onsemi 0:098463de4c5d 146 }
group-onsemi 0:098463de4c5d 147 /* Volatile data segment */
group-onsemi 0:098463de4c5d 148 if (fw_init->VDataSegmentLength != 0U)
group-onsemi 0:098463de4c5d 149 {
group-onsemi 0:098463de4c5d 150 assert_param(IS_FIREWALL_VOLATILEDATA_SEGMENT_ADDRESS(fw_init->VDataSegmentStartAddress));
group-onsemi 0:098463de4c5d 151 assert_param(IS_FIREWALL_VOLATILEDATA_SEGMENT_LENGTH(fw_init->VDataSegmentStartAddress, fw_init->VDataSegmentLength));
group-onsemi 0:098463de4c5d 152 }
group-onsemi 0:098463de4c5d 153
group-onsemi 0:098463de4c5d 154 /* Check Firewall Configuration Register parameters */
group-onsemi 0:098463de4c5d 155 assert_param(IS_FIREWALL_VOLATILEDATA_EXECUTE(fw_init->VolatileDataExecution));
group-onsemi 0:098463de4c5d 156 assert_param(IS_FIREWALL_VOLATILEDATA_SHARE(fw_init->VolatileDataShared));
group-onsemi 0:098463de4c5d 157
group-onsemi 0:098463de4c5d 158
group-onsemi 0:098463de4c5d 159 /* Configuration */
group-onsemi 0:098463de4c5d 160
group-onsemi 0:098463de4c5d 161 /* Protected code segment start address configuration */
group-onsemi 0:098463de4c5d 162 WRITE_REG(FIREWALL->CSSA, (FW_CSSA_ADD & fw_init->CodeSegmentStartAddress));
group-onsemi 0:098463de4c5d 163 /* Protected code segment length configuration */
group-onsemi 0:098463de4c5d 164 WRITE_REG(FIREWALL->CSL, (FW_CSL_LENG & fw_init->CodeSegmentLength));
group-onsemi 0:098463de4c5d 165
group-onsemi 0:098463de4c5d 166 /* Protected non volatile data segment start address configuration */
group-onsemi 0:098463de4c5d 167 WRITE_REG(FIREWALL->NVDSSA, (FW_NVDSSA_ADD & fw_init->NonVDataSegmentStartAddress));
group-onsemi 0:098463de4c5d 168 /* Protected non volatile data segment length configuration */
group-onsemi 0:098463de4c5d 169 WRITE_REG(FIREWALL->NVDSL, (FW_NVDSL_LENG & fw_init->NonVDataSegmentLength));
group-onsemi 0:098463de4c5d 170
group-onsemi 0:098463de4c5d 171 /* Protected volatile data segment start address configuration */
group-onsemi 0:098463de4c5d 172 WRITE_REG(FIREWALL->VDSSA, (FW_VDSSA_ADD & fw_init->VDataSegmentStartAddress));
group-onsemi 0:098463de4c5d 173 /* Protected volatile data segment length configuration */
group-onsemi 0:098463de4c5d 174 WRITE_REG(FIREWALL->VDSL, (FW_VDSL_LENG & fw_init->VDataSegmentLength));
group-onsemi 0:098463de4c5d 175
group-onsemi 0:098463de4c5d 176 /* Set Firewall Configuration Register VDE and VDS bits
group-onsemi 0:098463de4c5d 177 (volatile data execution and shared configuration) */
group-onsemi 0:098463de4c5d 178 MODIFY_REG(FIREWALL->CR, FW_CR_VDS|FW_CR_VDE, fw_init->VolatileDataExecution|fw_init->VolatileDataShared);
group-onsemi 0:098463de4c5d 179
group-onsemi 0:098463de4c5d 180 return HAL_OK;
group-onsemi 0:098463de4c5d 181 }
group-onsemi 0:098463de4c5d 182
group-onsemi 0:098463de4c5d 183 /**
group-onsemi 0:098463de4c5d 184 * @brief Retrieve the Firewall configuration.
group-onsemi 0:098463de4c5d 185 * @param fw_config: Firewall configuration, type is same as initialization structure
group-onsemi 0:098463de4c5d 186 * @note This API can't be executed inside a code area protected by the Firewall
group-onsemi 0:098463de4c5d 187 * when the Firewall is enabled
group-onsemi 0:098463de4c5d 188 * @note If NVDSL register is different from 0, that is, if the non volatile data segment
group-onsemi 0:098463de4c5d 189 * is defined, this API can't be executed when the Firewall is enabled.
group-onsemi 0:098463de4c5d 190 * @note User should resort to __HAL_FIREWALL_GET_PREARM() macro to retrieve FPA bit status
group-onsemi 0:098463de4c5d 191 * @retval None
group-onsemi 0:098463de4c5d 192 */
group-onsemi 0:098463de4c5d 193 void HAL_FIREWALL_GetConfig(FIREWALL_InitTypeDef * fw_config)
group-onsemi 0:098463de4c5d 194 {
group-onsemi 0:098463de4c5d 195
group-onsemi 0:098463de4c5d 196 /* Enable Firewall clock, in case no Firewall configuration has been carried
group-onsemi 0:098463de4c5d 197 out up to this point */
group-onsemi 0:098463de4c5d 198 __HAL_RCC_FIREWALL_CLK_ENABLE();
group-onsemi 0:098463de4c5d 199
group-onsemi 0:098463de4c5d 200 /* Retrieve code segment protection setting */
group-onsemi 0:098463de4c5d 201 fw_config->CodeSegmentStartAddress = (READ_REG(FIREWALL->CSSA) & FW_CSSA_ADD);
group-onsemi 0:098463de4c5d 202 fw_config->CodeSegmentLength = (READ_REG(FIREWALL->CSL) & FW_CSL_LENG);
group-onsemi 0:098463de4c5d 203
group-onsemi 0:098463de4c5d 204 /* Retrieve non volatile data segment protection setting */
group-onsemi 0:098463de4c5d 205 fw_config->NonVDataSegmentStartAddress = (READ_REG(FIREWALL->NVDSSA) & FW_NVDSSA_ADD);
group-onsemi 0:098463de4c5d 206 fw_config->NonVDataSegmentLength = (READ_REG(FIREWALL->NVDSL) & FW_NVDSL_LENG);
group-onsemi 0:098463de4c5d 207
group-onsemi 0:098463de4c5d 208 /* Retrieve volatile data segment protection setting */
group-onsemi 0:098463de4c5d 209 fw_config->VDataSegmentStartAddress = (READ_REG(FIREWALL->VDSSA) & FW_VDSSA_ADD);
group-onsemi 0:098463de4c5d 210 fw_config->VDataSegmentLength = (READ_REG(FIREWALL->VDSL) & FW_VDSL_LENG);
group-onsemi 0:098463de4c5d 211
group-onsemi 0:098463de4c5d 212 /* Retrieve volatile data execution setting */
group-onsemi 0:098463de4c5d 213 fw_config->VolatileDataExecution = (READ_REG(FIREWALL->CR) & FW_CR_VDE);
group-onsemi 0:098463de4c5d 214
group-onsemi 0:098463de4c5d 215 /* Retrieve volatile data shared setting */
group-onsemi 0:098463de4c5d 216 fw_config->VolatileDataShared = (READ_REG(FIREWALL->CR) & FW_CR_VDS);
group-onsemi 0:098463de4c5d 217
group-onsemi 0:098463de4c5d 218 return;
group-onsemi 0:098463de4c5d 219 }
group-onsemi 0:098463de4c5d 220
group-onsemi 0:098463de4c5d 221
group-onsemi 0:098463de4c5d 222
group-onsemi 0:098463de4c5d 223 /**
group-onsemi 0:098463de4c5d 224 * @brief Enable FIREWALL.
group-onsemi 0:098463de4c5d 225 * @note Firewall is enabled in clearing FWDIS bit of SYSCFG CFGR1 register.
group-onsemi 0:098463de4c5d 226 * Once enabled, the Firewall cannot be disabled by software. Only a
group-onsemi 0:098463de4c5d 227 * system reset can set again FWDIS bit.
group-onsemi 0:098463de4c5d 228 * @retval None
group-onsemi 0:098463de4c5d 229 */
group-onsemi 0:098463de4c5d 230 void HAL_FIREWALL_EnableFirewall(void)
group-onsemi 0:098463de4c5d 231 {
group-onsemi 0:098463de4c5d 232 /* Clears FWDIS bit of SYSCFG CFGR1 register */
group-onsemi 0:098463de4c5d 233 CLEAR_BIT(SYSCFG->CFGR2, SYSCFG_CFGR2_FWDISEN);
group-onsemi 0:098463de4c5d 234
group-onsemi 0:098463de4c5d 235 }
group-onsemi 0:098463de4c5d 236
group-onsemi 0:098463de4c5d 237 /**
group-onsemi 0:098463de4c5d 238 * @brief Enable FIREWALL pre arm.
group-onsemi 0:098463de4c5d 239 * @note When FPA bit is set, any code executed outside the protected segment
group-onsemi 0:098463de4c5d 240 * will close the Firewall.
group-onsemi 0:098463de4c5d 241 * @note This API provides the same service as __HAL_FIREWALL_PREARM_ENABLE() macro
group-onsemi 0:098463de4c5d 242 * but can't be executed inside a code area protected by the Firewall.
group-onsemi 0:098463de4c5d 243 * @note When the Firewall is disabled, user can resort to HAL_FIREWALL_EnablePreArmFlag() API any time.
group-onsemi 0:098463de4c5d 244 * @note When the Firewall is enabled and NVDSL register is equal to 0 (that is,
group-onsemi 0:098463de4c5d 245 * when the non volatile data segment is not defined),
group-onsemi 0:098463de4c5d 246 * ** this API can be executed when the Firewall is closed
group-onsemi 0:098463de4c5d 247 * ** when the Firewall is opened, user should resort to
group-onsemi 0:098463de4c5d 248 * __HAL_FIREWALL_PREARM_ENABLE() macro instead
group-onsemi 0:098463de4c5d 249 * @note When the Firewall is enabled and NVDSL register is different from 0
group-onsemi 0:098463de4c5d 250 * (that is, when the non volatile data segment is defined)
group-onsemi 0:098463de4c5d 251 * ** FW_CR register can be accessed only when the Firewall is opened:
group-onsemi 0:098463de4c5d 252 * user should resort to __HAL_FIREWALL_PREARM_ENABLE() macro instead.
group-onsemi 0:098463de4c5d 253 * @retval None
group-onsemi 0:098463de4c5d 254 */
group-onsemi 0:098463de4c5d 255 void HAL_FIREWALL_EnablePreArmFlag(void)
group-onsemi 0:098463de4c5d 256 {
group-onsemi 0:098463de4c5d 257 /* Set FPA bit */
group-onsemi 0:098463de4c5d 258 SET_BIT(FIREWALL->CR, FW_CR_FPA);
group-onsemi 0:098463de4c5d 259 }
group-onsemi 0:098463de4c5d 260
group-onsemi 0:098463de4c5d 261
group-onsemi 0:098463de4c5d 262 /**
group-onsemi 0:098463de4c5d 263 * @brief Disable FIREWALL pre arm.
group-onsemi 0:098463de4c5d 264 * @note When FPA bit is reset, any code executed outside the protected segment
group-onsemi 0:098463de4c5d 265 * when the Firewall is opened will generate a system reset.
group-onsemi 0:098463de4c5d 266 * @note This API provides the same service as __HAL_FIREWALL_PREARM_DISABLE() macro
group-onsemi 0:098463de4c5d 267 * but can't be executed inside a code area protected by the Firewall.
group-onsemi 0:098463de4c5d 268 * @note When the Firewall is disabled, user can resort to HAL_FIREWALL_EnablePreArmFlag() API any time.
group-onsemi 0:098463de4c5d 269 * @note When the Firewall is enabled and NVDSL register is equal to 0 (that is,
group-onsemi 0:098463de4c5d 270 * when the non volatile data segment is not defined),
group-onsemi 0:098463de4c5d 271 * ** this API can be executed when the Firewall is closed
group-onsemi 0:098463de4c5d 272 * ** when the Firewall is opened, user should resort to
group-onsemi 0:098463de4c5d 273 * __HAL_FIREWALL_PREARM_DISABLE() macro instead
group-onsemi 0:098463de4c5d 274 * @note When the Firewall is enabled and NVDSL register is different from 0
group-onsemi 0:098463de4c5d 275 * (that is, when the non volatile data segment is defined)
group-onsemi 0:098463de4c5d 276 * ** FW_CR register can be accessed only when the Firewall is opened:
group-onsemi 0:098463de4c5d 277 * user should resort to __HAL_FIREWALL_PREARM_DISABLE() macro instead.
group-onsemi 0:098463de4c5d 278
group-onsemi 0:098463de4c5d 279 * @retval None
group-onsemi 0:098463de4c5d 280 */
group-onsemi 0:098463de4c5d 281 void HAL_FIREWALL_DisablePreArmFlag(void)
group-onsemi 0:098463de4c5d 282 {
group-onsemi 0:098463de4c5d 283 /* Clear FPA bit */
group-onsemi 0:098463de4c5d 284 CLEAR_BIT(FIREWALL->CR, FW_CR_FPA);
group-onsemi 0:098463de4c5d 285 }
group-onsemi 0:098463de4c5d 286
group-onsemi 0:098463de4c5d 287 /**
group-onsemi 0:098463de4c5d 288 * @}
group-onsemi 0:098463de4c5d 289 */
group-onsemi 0:098463de4c5d 290
group-onsemi 0:098463de4c5d 291 /**
group-onsemi 0:098463de4c5d 292 * @}
group-onsemi 0:098463de4c5d 293 */
group-onsemi 0:098463de4c5d 294
group-onsemi 0:098463de4c5d 295 /**
group-onsemi 0:098463de4c5d 296 * @}
group-onsemi 0:098463de4c5d 297 */
group-onsemi 0:098463de4c5d 298
group-onsemi 0:098463de4c5d 299 #endif /* HAL_FIREWALL_MODULE_ENABLED */
group-onsemi 0:098463de4c5d 300
group-onsemi 0:098463de4c5d 301 /**
group-onsemi 0:098463de4c5d 302 * @}
group-onsemi 0:098463de4c5d 303 */
group-onsemi 0:098463de4c5d 304
group-onsemi 0:098463de4c5d 305 #endif /* #if !defined (STM32L011xx) && !defined (STM32L021xx) && !defined (STM32L031xx) && !defined (STM32L041xx) */
group-onsemi 0:098463de4c5d 306
group-onsemi 0:098463de4c5d 307 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/