mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

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:
Fri Oct 31 11:00:10 2014 +0000
Revision:
376:cb4d9db17537
Synchronized with git revision 07b49da75eac883fc8916d3d6b6962664b8db29e

Full URL: https://github.com/mbedmicro/mbed/commit/07b49da75eac883fc8916d3d6b6962664b8db29e/

Targets: DISCO_L053C8 - new platform - STM32L0 Discovery board

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 376:cb4d9db17537 1 /**
mbed_official 376:cb4d9db17537 2 ******************************************************************************
mbed_official 376:cb4d9db17537 3 * @file stm32l0xx_hal_flash_ramfunc.c
mbed_official 376:cb4d9db17537 4 * @author MCD Application Team
mbed_official 376:cb4d9db17537 5 * @version V1.1.0
mbed_official 376:cb4d9db17537 6 * @date 18-June-2014
mbed_official 376:cb4d9db17537 7 * @brief FLASH RAMFUNC driver.
mbed_official 376:cb4d9db17537 8 * This file provides a Flash firmware functions which should be
mbed_official 376:cb4d9db17537 9 * executed from internal SRAM
mbed_official 376:cb4d9db17537 10 * + FLASH HalfPage Programming
mbed_official 376:cb4d9db17537 11 * + FLASH Power Down in Run mode
mbed_official 376:cb4d9db17537 12 *
mbed_official 376:cb4d9db17537 13 * @verbatim
mbed_official 376:cb4d9db17537 14
mbed_official 376:cb4d9db17537 15 *** ARM Compiler ***
mbed_official 376:cb4d9db17537 16 --------------------
mbed_official 376:cb4d9db17537 17 [..] RAM functions are defined using the toolchain options.
mbed_official 376:cb4d9db17537 18 Functions that are be executed in RAM should reside in a separate
mbed_official 376:cb4d9db17537 19 source module. Using the 'Options for File' dialog you can simply change
mbed_official 376:cb4d9db17537 20 the 'Code / Const' area of a module to a memory space in physical RAM.
mbed_official 376:cb4d9db17537 21 Available memory areas are declared in the 'Target' tab of the
mbed_official 376:cb4d9db17537 22 Options for Target' dialog.
mbed_official 376:cb4d9db17537 23
mbed_official 376:cb4d9db17537 24 *** ICCARM Compiler ***
mbed_official 376:cb4d9db17537 25 -----------------------
mbed_official 376:cb4d9db17537 26 [..] RAM functions are defined using a specific toolchain keyword "__ramfunc".
mbed_official 376:cb4d9db17537 27
mbed_official 376:cb4d9db17537 28 *** GNU Compiler ***
mbed_official 376:cb4d9db17537 29 --------------------
mbed_official 376:cb4d9db17537 30 [..] RAM functions are defined using a specific toolchain attribute
mbed_official 376:cb4d9db17537 31 "__attribute__((section(".RamFunc")))".
mbed_official 376:cb4d9db17537 32
mbed_official 376:cb4d9db17537 33 @endverbatim
mbed_official 376:cb4d9db17537 34 ******************************************************************************
mbed_official 376:cb4d9db17537 35 * @attention
mbed_official 376:cb4d9db17537 36 *
mbed_official 376:cb4d9db17537 37 * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
mbed_official 376:cb4d9db17537 38 *
mbed_official 376:cb4d9db17537 39 * Redistribution and use in source and binary forms, with or without modification,
mbed_official 376:cb4d9db17537 40 * are permitted provided that the following conditions are met:
mbed_official 376:cb4d9db17537 41 * 1. Redistributions of source code must retain the above copyright notice,
mbed_official 376:cb4d9db17537 42 * this list of conditions and the following disclaimer.
mbed_official 376:cb4d9db17537 43 * 2. Redistributions in binary form must reproduce the above copyright notice,
mbed_official 376:cb4d9db17537 44 * this list of conditions and the following disclaimer in the documentation
mbed_official 376:cb4d9db17537 45 * and/or other materials provided with the distribution.
mbed_official 376:cb4d9db17537 46 * 3. Neither the name of STMicroelectronics nor the names of its contributors
mbed_official 376:cb4d9db17537 47 * may be used to endorse or promote products derived from this software
mbed_official 376:cb4d9db17537 48 * without specific prior written permission.
mbed_official 376:cb4d9db17537 49 *
mbed_official 376:cb4d9db17537 50 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
mbed_official 376:cb4d9db17537 51 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
mbed_official 376:cb4d9db17537 52 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 376:cb4d9db17537 53 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
mbed_official 376:cb4d9db17537 54 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
mbed_official 376:cb4d9db17537 55 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
mbed_official 376:cb4d9db17537 56 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
mbed_official 376:cb4d9db17537 57 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
mbed_official 376:cb4d9db17537 58 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
mbed_official 376:cb4d9db17537 59 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 376:cb4d9db17537 60 *
mbed_official 376:cb4d9db17537 61 ******************************************************************************
mbed_official 376:cb4d9db17537 62 */
mbed_official 376:cb4d9db17537 63
mbed_official 376:cb4d9db17537 64 /* Includes ------------------------------------------------------------------*/
mbed_official 376:cb4d9db17537 65 #include "stm32l0xx_hal.h"
mbed_official 376:cb4d9db17537 66 /** @addtogroup STM32L0XX_HAL_Driver
mbed_official 376:cb4d9db17537 67 * @{
mbed_official 376:cb4d9db17537 68 */
mbed_official 376:cb4d9db17537 69
mbed_official 376:cb4d9db17537 70 /** @defgroup FLASHRamfunc Driver
mbed_official 376:cb4d9db17537 71 * @brief FLASH functions executed from RAM
mbed_official 376:cb4d9db17537 72 * @{
mbed_official 376:cb4d9db17537 73 */
mbed_official 376:cb4d9db17537 74
mbed_official 376:cb4d9db17537 75 #ifdef HAL_FLASH_MODULE_ENABLED
mbed_official 376:cb4d9db17537 76
mbed_official 376:cb4d9db17537 77 /* Private typedef -----------------------------------------------------------*/
mbed_official 376:cb4d9db17537 78 /* Private define ------------------------------------------------------------*/
mbed_official 376:cb4d9db17537 79 /* Private macro -------------------------------------------------------------*/
mbed_official 376:cb4d9db17537 80 /* Private variables ---------------------------------------------------------*/
mbed_official 376:cb4d9db17537 81 /* Private function prototypes -----------------------------------------------*/
mbed_official 376:cb4d9db17537 82 static __RAM_FUNC FLASH_Program_HalfPage(uint32_t Address, uint32_t *Data);
mbed_official 376:cb4d9db17537 83
mbed_official 376:cb4d9db17537 84 /* Private functions ---------------------------------------------------------*/
mbed_official 376:cb4d9db17537 85
mbed_official 376:cb4d9db17537 86 /** @defgroup FLASHRamfunc_Private_Functions
mbed_official 376:cb4d9db17537 87 * @{
mbed_official 376:cb4d9db17537 88 */
mbed_official 376:cb4d9db17537 89
mbed_official 376:cb4d9db17537 90 /** @defgroup FLASHRamfunc_Group1 Peripheral features functions
mbed_official 376:cb4d9db17537 91 * @brief Data transfers functions
mbed_official 376:cb4d9db17537 92 *
mbed_official 376:cb4d9db17537 93 @verbatim
mbed_official 376:cb4d9db17537 94 ===============================================================================
mbed_official 376:cb4d9db17537 95 ##### ramfunc functions #####
mbed_official 376:cb4d9db17537 96 ===============================================================================
mbed_official 376:cb4d9db17537 97 [..]
mbed_official 376:cb4d9db17537 98 This subsection provides a set of functions that should be executed from RAM
mbed_official 376:cb4d9db17537 99 transfers.
mbed_official 376:cb4d9db17537 100
mbed_official 376:cb4d9db17537 101 @endverbatim
mbed_official 376:cb4d9db17537 102 * @{
mbed_official 376:cb4d9db17537 103 */
mbed_official 376:cb4d9db17537 104
mbed_official 376:cb4d9db17537 105 /**
mbed_official 376:cb4d9db17537 106 * @brief Program a half page word at a specified address,
mbed_official 376:cb4d9db17537 107 * @note This function should be executed from RAM
mbed_official 376:cb4d9db17537 108 * @param Address: specifies the address to be programmed,
mbed_official 376:cb4d9db17537 109 * the address should be half page aligned.
mbed_official 376:cb4d9db17537 110 * @param *Data: specifies the buffer of data to be programmed,
mbed_official 376:cb4d9db17537 111 * the size of the buffer is 16 words.
mbed_official 376:cb4d9db17537 112 *
mbed_official 376:cb4d9db17537 113 * @retval HAL_StatusTypeDef HAL Status
mbed_official 376:cb4d9db17537 114 */
mbed_official 376:cb4d9db17537 115 __RAM_FUNC HAL_FLASHEx_HalfPageProgram(uint32_t Address, uint32_t *Data)
mbed_official 376:cb4d9db17537 116 {
mbed_official 376:cb4d9db17537 117 HAL_StatusTypeDef status = HAL_OK;
mbed_official 376:cb4d9db17537 118 uint32_t timeout = 0xFFFFFFFF;
mbed_official 376:cb4d9db17537 119 /*Program word (32-bit) at a specified address.*/
mbed_official 376:cb4d9db17537 120 FLASH_Program_HalfPage(Address, Data);
mbed_official 376:cb4d9db17537 121
mbed_official 376:cb4d9db17537 122 /* Wait for a FLASH operation to complete or a TIMEOUT to occur */
mbed_official 376:cb4d9db17537 123 while(((FLASH->SR & FLASH_FLAG_BSY) != 0x00) && (timeout != 0x00))
mbed_official 376:cb4d9db17537 124 {
mbed_official 376:cb4d9db17537 125 timeout--;
mbed_official 376:cb4d9db17537 126 }
mbed_official 376:cb4d9db17537 127
mbed_official 376:cb4d9db17537 128 if(timeout == 0x00 )
mbed_official 376:cb4d9db17537 129 {
mbed_official 376:cb4d9db17537 130 return HAL_TIMEOUT;
mbed_official 376:cb4d9db17537 131 }
mbed_official 376:cb4d9db17537 132
mbed_official 376:cb4d9db17537 133 /* Reset PROG bit */
mbed_official 376:cb4d9db17537 134 FLASH->PECR &= ~FLASH_PECR_PROG;
mbed_official 376:cb4d9db17537 135 FLASH->PECR &= ~FLASH_PECR_FPRG;
mbed_official 376:cb4d9db17537 136 return status;
mbed_official 376:cb4d9db17537 137 }
mbed_official 376:cb4d9db17537 138
mbed_official 376:cb4d9db17537 139 /**
mbed_official 376:cb4d9db17537 140 * @brief Enable the Power down in Run Mode
mbed_official 376:cb4d9db17537 141 * @note This function should be called and executed from SRAM memory
mbed_official 376:cb4d9db17537 142 * @param None
mbed_official 376:cb4d9db17537 143 * @retval None
mbed_official 376:cb4d9db17537 144 */
mbed_official 376:cb4d9db17537 145 __RAM_FUNC HAL_FLASHEx_EnableRunPowerDown(void)
mbed_official 376:cb4d9db17537 146 {
mbed_official 376:cb4d9db17537 147 /* Enable the Power Down in Run mode*/
mbed_official 376:cb4d9db17537 148 __HAL_FLASH_POWER_DOWN_ENABLE();
mbed_official 376:cb4d9db17537 149
mbed_official 376:cb4d9db17537 150 return HAL_OK;
mbed_official 376:cb4d9db17537 151
mbed_official 376:cb4d9db17537 152 }
mbed_official 376:cb4d9db17537 153
mbed_official 376:cb4d9db17537 154 /**
mbed_official 376:cb4d9db17537 155 * @brief Disable the Power down in Run Mode
mbed_official 376:cb4d9db17537 156 * @note This function should be called and executed from SRAM memory
mbed_official 376:cb4d9db17537 157 * @param None
mbed_official 376:cb4d9db17537 158 * @retval None
mbed_official 376:cb4d9db17537 159 */
mbed_official 376:cb4d9db17537 160 __RAM_FUNC HAL_FLASHEx_DisableRunPowerDown(void)
mbed_official 376:cb4d9db17537 161 {
mbed_official 376:cb4d9db17537 162 /* Disable the Power Down in Run mode*/
mbed_official 376:cb4d9db17537 163 __HAL_FLASH_POWER_DOWN_DISABLE();
mbed_official 376:cb4d9db17537 164
mbed_official 376:cb4d9db17537 165 return HAL_OK;
mbed_official 376:cb4d9db17537 166 }
mbed_official 376:cb4d9db17537 167
mbed_official 376:cb4d9db17537 168 /**
mbed_official 376:cb4d9db17537 169 * @}
mbed_official 376:cb4d9db17537 170 */
mbed_official 376:cb4d9db17537 171
mbed_official 376:cb4d9db17537 172 /**
mbed_official 376:cb4d9db17537 173 * @brief Program a half page in program memory.
mbed_official 376:cb4d9db17537 174 * @param Address: The Half page address in program memory to be written.
mbed_official 376:cb4d9db17537 175 * @param Data:
mbed_official 376:cb4d9db17537 176 * @retval None
mbed_official 376:cb4d9db17537 177 */
mbed_official 376:cb4d9db17537 178 static __RAM_FUNC FLASH_Program_HalfPage(uint32_t Address, uint32_t *Data)
mbed_official 376:cb4d9db17537 179 {
mbed_official 376:cb4d9db17537 180 HAL_StatusTypeDef status = HAL_OK;
mbed_official 376:cb4d9db17537 181 uint32_t i =0;
mbed_official 376:cb4d9db17537 182
mbed_official 376:cb4d9db17537 183 /* Set PROG bit */
mbed_official 376:cb4d9db17537 184 FLASH->PECR |= FLASH_PECR_PROG;
mbed_official 376:cb4d9db17537 185
mbed_official 376:cb4d9db17537 186 /* Set FPRG bit */
mbed_official 376:cb4d9db17537 187 FLASH->PECR |= FLASH_PECR_FPRG;
mbed_official 376:cb4d9db17537 188
mbed_official 376:cb4d9db17537 189 *(__IO uint32_t*)Address = Data[0];
mbed_official 376:cb4d9db17537 190
mbed_official 376:cb4d9db17537 191 for(i = 1; i <= 15; i++)
mbed_official 376:cb4d9db17537 192 {
mbed_official 376:cb4d9db17537 193 *(__IO uint32_t*)(Address + 4) = Data[i];
mbed_official 376:cb4d9db17537 194 }
mbed_official 376:cb4d9db17537 195 return status;
mbed_official 376:cb4d9db17537 196 }
mbed_official 376:cb4d9db17537 197
mbed_official 376:cb4d9db17537 198 /**
mbed_official 376:cb4d9db17537 199 * @}
mbed_official 376:cb4d9db17537 200 */
mbed_official 376:cb4d9db17537 201 #endif /* HAL_FLASH_MODULE_ENABLED */
mbed_official 376:cb4d9db17537 202
mbed_official 376:cb4d9db17537 203
mbed_official 376:cb4d9db17537 204
mbed_official 376:cb4d9db17537 205 /**
mbed_official 376:cb4d9db17537 206 * @}
mbed_official 376:cb4d9db17537 207 */
mbed_official 376:cb4d9db17537 208
mbed_official 376:cb4d9db17537 209 /**
mbed_official 376:cb4d9db17537 210 * @}
mbed_official 376:cb4d9db17537 211 */
mbed_official 376:cb4d9db17537 212
mbed_official 376:cb4d9db17537 213
mbed_official 376:cb4d9db17537 214 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
mbed_official 376:cb4d9db17537 215
mbed_official 376:cb4d9db17537 216