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 Dec 02 11:30:05 2013 +0000
Revision:
52:a51c77007319
Child:
70:c1fbde68b492
Synchronized with git revision 49df530ae72ce97ccc773d1f2c13b38e868e6abd

Full URL: https://github.com/mbedmicro/mbed/commit/49df530ae72ce97ccc773d1f2c13b38e868e6abd/

Add STMicroelectronics NUCLEO_F103RB target

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_fsmc.c
mbed_official 52:a51c77007319 4 * @author MCD Application Team
mbed_official 52:a51c77007319 5 * @version V3.5.0
mbed_official 52:a51c77007319 6 * @date 11-March-2011
mbed_official 52:a51c77007319 7 * @brief This file provides all the FSMC firmware functions.
mbed_official 52:a51c77007319 8 ******************************************************************************
mbed_official 52:a51c77007319 9 * @attention
mbed_official 52:a51c77007319 10 *
mbed_official 52:a51c77007319 11 * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
mbed_official 52:a51c77007319 12 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
mbed_official 52:a51c77007319 13 * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
mbed_official 52:a51c77007319 14 * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
mbed_official 52:a51c77007319 15 * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
mbed_official 52:a51c77007319 16 * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
mbed_official 52:a51c77007319 17 *
mbed_official 52:a51c77007319 18 * <h2><center>&copy; COPYRIGHT 2011 STMicroelectronics</center></h2>
mbed_official 52:a51c77007319 19 ******************************************************************************
mbed_official 52:a51c77007319 20 */
mbed_official 52:a51c77007319 21
mbed_official 52:a51c77007319 22 /* Includes ------------------------------------------------------------------*/
mbed_official 52:a51c77007319 23 #include "stm32f10x_fsmc.h"
mbed_official 52:a51c77007319 24 #include "stm32f10x_rcc.h"
mbed_official 52:a51c77007319 25
mbed_official 52:a51c77007319 26 /** @addtogroup STM32F10x_StdPeriph_Driver
mbed_official 52:a51c77007319 27 * @{
mbed_official 52:a51c77007319 28 */
mbed_official 52:a51c77007319 29
mbed_official 52:a51c77007319 30 /** @defgroup FSMC
mbed_official 52:a51c77007319 31 * @brief FSMC driver modules
mbed_official 52:a51c77007319 32 * @{
mbed_official 52:a51c77007319 33 */
mbed_official 52:a51c77007319 34
mbed_official 52:a51c77007319 35 /** @defgroup FSMC_Private_TypesDefinitions
mbed_official 52:a51c77007319 36 * @{
mbed_official 52:a51c77007319 37 */
mbed_official 52:a51c77007319 38 /**
mbed_official 52:a51c77007319 39 * @}
mbed_official 52:a51c77007319 40 */
mbed_official 52:a51c77007319 41
mbed_official 52:a51c77007319 42 /** @defgroup FSMC_Private_Defines
mbed_official 52:a51c77007319 43 * @{
mbed_official 52:a51c77007319 44 */
mbed_official 52:a51c77007319 45
mbed_official 52:a51c77007319 46 /* --------------------- FSMC registers bit mask ---------------------------- */
mbed_official 52:a51c77007319 47
mbed_official 52:a51c77007319 48 /* FSMC BCRx Mask */
mbed_official 52:a51c77007319 49 #define BCR_MBKEN_Set ((uint32_t)0x00000001)
mbed_official 52:a51c77007319 50 #define BCR_MBKEN_Reset ((uint32_t)0x000FFFFE)
mbed_official 52:a51c77007319 51 #define BCR_FACCEN_Set ((uint32_t)0x00000040)
mbed_official 52:a51c77007319 52
mbed_official 52:a51c77007319 53 /* FSMC PCRx Mask */
mbed_official 52:a51c77007319 54 #define PCR_PBKEN_Set ((uint32_t)0x00000004)
mbed_official 52:a51c77007319 55 #define PCR_PBKEN_Reset ((uint32_t)0x000FFFFB)
mbed_official 52:a51c77007319 56 #define PCR_ECCEN_Set ((uint32_t)0x00000040)
mbed_official 52:a51c77007319 57 #define PCR_ECCEN_Reset ((uint32_t)0x000FFFBF)
mbed_official 52:a51c77007319 58 #define PCR_MemoryType_NAND ((uint32_t)0x00000008)
mbed_official 52:a51c77007319 59 /**
mbed_official 52:a51c77007319 60 * @}
mbed_official 52:a51c77007319 61 */
mbed_official 52:a51c77007319 62
mbed_official 52:a51c77007319 63 /** @defgroup FSMC_Private_Macros
mbed_official 52:a51c77007319 64 * @{
mbed_official 52:a51c77007319 65 */
mbed_official 52:a51c77007319 66
mbed_official 52:a51c77007319 67 /**
mbed_official 52:a51c77007319 68 * @}
mbed_official 52:a51c77007319 69 */
mbed_official 52:a51c77007319 70
mbed_official 52:a51c77007319 71 /** @defgroup FSMC_Private_Variables
mbed_official 52:a51c77007319 72 * @{
mbed_official 52:a51c77007319 73 */
mbed_official 52:a51c77007319 74
mbed_official 52:a51c77007319 75 /**
mbed_official 52:a51c77007319 76 * @}
mbed_official 52:a51c77007319 77 */
mbed_official 52:a51c77007319 78
mbed_official 52:a51c77007319 79 /** @defgroup FSMC_Private_FunctionPrototypes
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 * @}
mbed_official 52:a51c77007319 85 */
mbed_official 52:a51c77007319 86
mbed_official 52:a51c77007319 87 /** @defgroup FSMC_Private_Functions
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 * @brief Deinitializes the FSMC NOR/SRAM Banks registers to their default
mbed_official 52:a51c77007319 93 * reset values.
mbed_official 52:a51c77007319 94 * @param FSMC_Bank: specifies the FSMC Bank to be used
mbed_official 52:a51c77007319 95 * This parameter can be one of the following values:
mbed_official 52:a51c77007319 96 * @arg FSMC_Bank1_NORSRAM1: FSMC Bank1 NOR/SRAM1
mbed_official 52:a51c77007319 97 * @arg FSMC_Bank1_NORSRAM2: FSMC Bank1 NOR/SRAM2
mbed_official 52:a51c77007319 98 * @arg FSMC_Bank1_NORSRAM3: FSMC Bank1 NOR/SRAM3
mbed_official 52:a51c77007319 99 * @arg FSMC_Bank1_NORSRAM4: FSMC Bank1 NOR/SRAM4
mbed_official 52:a51c77007319 100 * @retval None
mbed_official 52:a51c77007319 101 */
mbed_official 52:a51c77007319 102 void FSMC_NORSRAMDeInit(uint32_t FSMC_Bank)
mbed_official 52:a51c77007319 103 {
mbed_official 52:a51c77007319 104 /* Check the parameter */
mbed_official 52:a51c77007319 105 assert_param(IS_FSMC_NORSRAM_BANK(FSMC_Bank));
mbed_official 52:a51c77007319 106
mbed_official 52:a51c77007319 107 /* FSMC_Bank1_NORSRAM1 */
mbed_official 52:a51c77007319 108 if(FSMC_Bank == FSMC_Bank1_NORSRAM1)
mbed_official 52:a51c77007319 109 {
mbed_official 52:a51c77007319 110 FSMC_Bank1->BTCR[FSMC_Bank] = 0x000030DB;
mbed_official 52:a51c77007319 111 }
mbed_official 52:a51c77007319 112 /* FSMC_Bank1_NORSRAM2, FSMC_Bank1_NORSRAM3 or FSMC_Bank1_NORSRAM4 */
mbed_official 52:a51c77007319 113 else
mbed_official 52:a51c77007319 114 {
mbed_official 52:a51c77007319 115 FSMC_Bank1->BTCR[FSMC_Bank] = 0x000030D2;
mbed_official 52:a51c77007319 116 }
mbed_official 52:a51c77007319 117 FSMC_Bank1->BTCR[FSMC_Bank + 1] = 0x0FFFFFFF;
mbed_official 52:a51c77007319 118 FSMC_Bank1E->BWTR[FSMC_Bank] = 0x0FFFFFFF;
mbed_official 52:a51c77007319 119 }
mbed_official 52:a51c77007319 120
mbed_official 52:a51c77007319 121 /**
mbed_official 52:a51c77007319 122 * @brief Deinitializes the FSMC NAND Banks registers to their default reset values.
mbed_official 52:a51c77007319 123 * @param FSMC_Bank: specifies the FSMC Bank to be used
mbed_official 52:a51c77007319 124 * This parameter can be one of the following values:
mbed_official 52:a51c77007319 125 * @arg FSMC_Bank2_NAND: FSMC Bank2 NAND
mbed_official 52:a51c77007319 126 * @arg FSMC_Bank3_NAND: FSMC Bank3 NAND
mbed_official 52:a51c77007319 127 * @retval None
mbed_official 52:a51c77007319 128 */
mbed_official 52:a51c77007319 129 void FSMC_NANDDeInit(uint32_t FSMC_Bank)
mbed_official 52:a51c77007319 130 {
mbed_official 52:a51c77007319 131 /* Check the parameter */
mbed_official 52:a51c77007319 132 assert_param(IS_FSMC_NAND_BANK(FSMC_Bank));
mbed_official 52:a51c77007319 133
mbed_official 52:a51c77007319 134 if(FSMC_Bank == FSMC_Bank2_NAND)
mbed_official 52:a51c77007319 135 {
mbed_official 52:a51c77007319 136 /* Set the FSMC_Bank2 registers to their reset values */
mbed_official 52:a51c77007319 137 FSMC_Bank2->PCR2 = 0x00000018;
mbed_official 52:a51c77007319 138 FSMC_Bank2->SR2 = 0x00000040;
mbed_official 52:a51c77007319 139 FSMC_Bank2->PMEM2 = 0xFCFCFCFC;
mbed_official 52:a51c77007319 140 FSMC_Bank2->PATT2 = 0xFCFCFCFC;
mbed_official 52:a51c77007319 141 }
mbed_official 52:a51c77007319 142 /* FSMC_Bank3_NAND */
mbed_official 52:a51c77007319 143 else
mbed_official 52:a51c77007319 144 {
mbed_official 52:a51c77007319 145 /* Set the FSMC_Bank3 registers to their reset values */
mbed_official 52:a51c77007319 146 FSMC_Bank3->PCR3 = 0x00000018;
mbed_official 52:a51c77007319 147 FSMC_Bank3->SR3 = 0x00000040;
mbed_official 52:a51c77007319 148 FSMC_Bank3->PMEM3 = 0xFCFCFCFC;
mbed_official 52:a51c77007319 149 FSMC_Bank3->PATT3 = 0xFCFCFCFC;
mbed_official 52:a51c77007319 150 }
mbed_official 52:a51c77007319 151 }
mbed_official 52:a51c77007319 152
mbed_official 52:a51c77007319 153 /**
mbed_official 52:a51c77007319 154 * @brief Deinitializes the FSMC PCCARD Bank registers to their default reset values.
mbed_official 52:a51c77007319 155 * @param None
mbed_official 52:a51c77007319 156 * @retval None
mbed_official 52:a51c77007319 157 */
mbed_official 52:a51c77007319 158 void FSMC_PCCARDDeInit(void)
mbed_official 52:a51c77007319 159 {
mbed_official 52:a51c77007319 160 /* Set the FSMC_Bank4 registers to their reset values */
mbed_official 52:a51c77007319 161 FSMC_Bank4->PCR4 = 0x00000018;
mbed_official 52:a51c77007319 162 FSMC_Bank4->SR4 = 0x00000000;
mbed_official 52:a51c77007319 163 FSMC_Bank4->PMEM4 = 0xFCFCFCFC;
mbed_official 52:a51c77007319 164 FSMC_Bank4->PATT4 = 0xFCFCFCFC;
mbed_official 52:a51c77007319 165 FSMC_Bank4->PIO4 = 0xFCFCFCFC;
mbed_official 52:a51c77007319 166 }
mbed_official 52:a51c77007319 167
mbed_official 52:a51c77007319 168 /**
mbed_official 52:a51c77007319 169 * @brief Initializes the FSMC NOR/SRAM Banks according to the specified
mbed_official 52:a51c77007319 170 * parameters in the FSMC_NORSRAMInitStruct.
mbed_official 52:a51c77007319 171 * @param FSMC_NORSRAMInitStruct : pointer to a FSMC_NORSRAMInitTypeDef
mbed_official 52:a51c77007319 172 * structure that contains the configuration information for
mbed_official 52:a51c77007319 173 * the FSMC NOR/SRAM specified Banks.
mbed_official 52:a51c77007319 174 * @retval None
mbed_official 52:a51c77007319 175 */
mbed_official 52:a51c77007319 176 void FSMC_NORSRAMInit(FSMC_NORSRAMInitTypeDef* FSMC_NORSRAMInitStruct)
mbed_official 52:a51c77007319 177 {
mbed_official 52:a51c77007319 178 /* Check the parameters */
mbed_official 52:a51c77007319 179 assert_param(IS_FSMC_NORSRAM_BANK(FSMC_NORSRAMInitStruct->FSMC_Bank));
mbed_official 52:a51c77007319 180 assert_param(IS_FSMC_MUX(FSMC_NORSRAMInitStruct->FSMC_DataAddressMux));
mbed_official 52:a51c77007319 181 assert_param(IS_FSMC_MEMORY(FSMC_NORSRAMInitStruct->FSMC_MemoryType));
mbed_official 52:a51c77007319 182 assert_param(IS_FSMC_MEMORY_WIDTH(FSMC_NORSRAMInitStruct->FSMC_MemoryDataWidth));
mbed_official 52:a51c77007319 183 assert_param(IS_FSMC_BURSTMODE(FSMC_NORSRAMInitStruct->FSMC_BurstAccessMode));
mbed_official 52:a51c77007319 184 assert_param(IS_FSMC_ASYNWAIT(FSMC_NORSRAMInitStruct->FSMC_AsynchronousWait));
mbed_official 52:a51c77007319 185 assert_param(IS_FSMC_WAIT_POLARITY(FSMC_NORSRAMInitStruct->FSMC_WaitSignalPolarity));
mbed_official 52:a51c77007319 186 assert_param(IS_FSMC_WRAP_MODE(FSMC_NORSRAMInitStruct->FSMC_WrapMode));
mbed_official 52:a51c77007319 187 assert_param(IS_FSMC_WAIT_SIGNAL_ACTIVE(FSMC_NORSRAMInitStruct->FSMC_WaitSignalActive));
mbed_official 52:a51c77007319 188 assert_param(IS_FSMC_WRITE_OPERATION(FSMC_NORSRAMInitStruct->FSMC_WriteOperation));
mbed_official 52:a51c77007319 189 assert_param(IS_FSMC_WAITE_SIGNAL(FSMC_NORSRAMInitStruct->FSMC_WaitSignal));
mbed_official 52:a51c77007319 190 assert_param(IS_FSMC_EXTENDED_MODE(FSMC_NORSRAMInitStruct->FSMC_ExtendedMode));
mbed_official 52:a51c77007319 191 assert_param(IS_FSMC_WRITE_BURST(FSMC_NORSRAMInitStruct->FSMC_WriteBurst));
mbed_official 52:a51c77007319 192 assert_param(IS_FSMC_ADDRESS_SETUP_TIME(FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_AddressSetupTime));
mbed_official 52:a51c77007319 193 assert_param(IS_FSMC_ADDRESS_HOLD_TIME(FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_AddressHoldTime));
mbed_official 52:a51c77007319 194 assert_param(IS_FSMC_DATASETUP_TIME(FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_DataSetupTime));
mbed_official 52:a51c77007319 195 assert_param(IS_FSMC_TURNAROUND_TIME(FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_BusTurnAroundDuration));
mbed_official 52:a51c77007319 196 assert_param(IS_FSMC_CLK_DIV(FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_CLKDivision));
mbed_official 52:a51c77007319 197 assert_param(IS_FSMC_DATA_LATENCY(FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_DataLatency));
mbed_official 52:a51c77007319 198 assert_param(IS_FSMC_ACCESS_MODE(FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_AccessMode));
mbed_official 52:a51c77007319 199
mbed_official 52:a51c77007319 200 /* Bank1 NOR/SRAM control register configuration */
mbed_official 52:a51c77007319 201 FSMC_Bank1->BTCR[FSMC_NORSRAMInitStruct->FSMC_Bank] =
mbed_official 52:a51c77007319 202 (uint32_t)FSMC_NORSRAMInitStruct->FSMC_DataAddressMux |
mbed_official 52:a51c77007319 203 FSMC_NORSRAMInitStruct->FSMC_MemoryType |
mbed_official 52:a51c77007319 204 FSMC_NORSRAMInitStruct->FSMC_MemoryDataWidth |
mbed_official 52:a51c77007319 205 FSMC_NORSRAMInitStruct->FSMC_BurstAccessMode |
mbed_official 52:a51c77007319 206 FSMC_NORSRAMInitStruct->FSMC_AsynchronousWait |
mbed_official 52:a51c77007319 207 FSMC_NORSRAMInitStruct->FSMC_WaitSignalPolarity |
mbed_official 52:a51c77007319 208 FSMC_NORSRAMInitStruct->FSMC_WrapMode |
mbed_official 52:a51c77007319 209 FSMC_NORSRAMInitStruct->FSMC_WaitSignalActive |
mbed_official 52:a51c77007319 210 FSMC_NORSRAMInitStruct->FSMC_WriteOperation |
mbed_official 52:a51c77007319 211 FSMC_NORSRAMInitStruct->FSMC_WaitSignal |
mbed_official 52:a51c77007319 212 FSMC_NORSRAMInitStruct->FSMC_ExtendedMode |
mbed_official 52:a51c77007319 213 FSMC_NORSRAMInitStruct->FSMC_WriteBurst;
mbed_official 52:a51c77007319 214
mbed_official 52:a51c77007319 215 if(FSMC_NORSRAMInitStruct->FSMC_MemoryType == FSMC_MemoryType_NOR)
mbed_official 52:a51c77007319 216 {
mbed_official 52:a51c77007319 217 FSMC_Bank1->BTCR[FSMC_NORSRAMInitStruct->FSMC_Bank] |= (uint32_t)BCR_FACCEN_Set;
mbed_official 52:a51c77007319 218 }
mbed_official 52:a51c77007319 219
mbed_official 52:a51c77007319 220 /* Bank1 NOR/SRAM timing register configuration */
mbed_official 52:a51c77007319 221 FSMC_Bank1->BTCR[FSMC_NORSRAMInitStruct->FSMC_Bank+1] =
mbed_official 52:a51c77007319 222 (uint32_t)FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_AddressSetupTime |
mbed_official 52:a51c77007319 223 (FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_AddressHoldTime << 4) |
mbed_official 52:a51c77007319 224 (FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_DataSetupTime << 8) |
mbed_official 52:a51c77007319 225 (FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_BusTurnAroundDuration << 16) |
mbed_official 52:a51c77007319 226 (FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_CLKDivision << 20) |
mbed_official 52:a51c77007319 227 (FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_DataLatency << 24) |
mbed_official 52:a51c77007319 228 FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_AccessMode;
mbed_official 52:a51c77007319 229
mbed_official 52:a51c77007319 230
mbed_official 52:a51c77007319 231 /* Bank1 NOR/SRAM timing register for write configuration, if extended mode is used */
mbed_official 52:a51c77007319 232 if(FSMC_NORSRAMInitStruct->FSMC_ExtendedMode == FSMC_ExtendedMode_Enable)
mbed_official 52:a51c77007319 233 {
mbed_official 52:a51c77007319 234 assert_param(IS_FSMC_ADDRESS_SETUP_TIME(FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_AddressSetupTime));
mbed_official 52:a51c77007319 235 assert_param(IS_FSMC_ADDRESS_HOLD_TIME(FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_AddressHoldTime));
mbed_official 52:a51c77007319 236 assert_param(IS_FSMC_DATASETUP_TIME(FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_DataSetupTime));
mbed_official 52:a51c77007319 237 assert_param(IS_FSMC_CLK_DIV(FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_CLKDivision));
mbed_official 52:a51c77007319 238 assert_param(IS_FSMC_DATA_LATENCY(FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_DataLatency));
mbed_official 52:a51c77007319 239 assert_param(IS_FSMC_ACCESS_MODE(FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_AccessMode));
mbed_official 52:a51c77007319 240 FSMC_Bank1E->BWTR[FSMC_NORSRAMInitStruct->FSMC_Bank] =
mbed_official 52:a51c77007319 241 (uint32_t)FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_AddressSetupTime |
mbed_official 52:a51c77007319 242 (FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_AddressHoldTime << 4 )|
mbed_official 52:a51c77007319 243 (FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_DataSetupTime << 8) |
mbed_official 52:a51c77007319 244 (FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_CLKDivision << 20) |
mbed_official 52:a51c77007319 245 (FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_DataLatency << 24) |
mbed_official 52:a51c77007319 246 FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_AccessMode;
mbed_official 52:a51c77007319 247 }
mbed_official 52:a51c77007319 248 else
mbed_official 52:a51c77007319 249 {
mbed_official 52:a51c77007319 250 FSMC_Bank1E->BWTR[FSMC_NORSRAMInitStruct->FSMC_Bank] = 0x0FFFFFFF;
mbed_official 52:a51c77007319 251 }
mbed_official 52:a51c77007319 252 }
mbed_official 52:a51c77007319 253
mbed_official 52:a51c77007319 254 /**
mbed_official 52:a51c77007319 255 * @brief Initializes the FSMC NAND Banks according to the specified
mbed_official 52:a51c77007319 256 * parameters in the FSMC_NANDInitStruct.
mbed_official 52:a51c77007319 257 * @param FSMC_NANDInitStruct : pointer to a FSMC_NANDInitTypeDef
mbed_official 52:a51c77007319 258 * structure that contains the configuration information for the FSMC
mbed_official 52:a51c77007319 259 * NAND specified Banks.
mbed_official 52:a51c77007319 260 * @retval None
mbed_official 52:a51c77007319 261 */
mbed_official 52:a51c77007319 262 void FSMC_NANDInit(FSMC_NANDInitTypeDef* FSMC_NANDInitStruct)
mbed_official 52:a51c77007319 263 {
mbed_official 52:a51c77007319 264 uint32_t tmppcr = 0x00000000, tmppmem = 0x00000000, tmppatt = 0x00000000;
mbed_official 52:a51c77007319 265
mbed_official 52:a51c77007319 266 /* Check the parameters */
mbed_official 52:a51c77007319 267 assert_param( IS_FSMC_NAND_BANK(FSMC_NANDInitStruct->FSMC_Bank));
mbed_official 52:a51c77007319 268 assert_param( IS_FSMC_WAIT_FEATURE(FSMC_NANDInitStruct->FSMC_Waitfeature));
mbed_official 52:a51c77007319 269 assert_param( IS_FSMC_MEMORY_WIDTH(FSMC_NANDInitStruct->FSMC_MemoryDataWidth));
mbed_official 52:a51c77007319 270 assert_param( IS_FSMC_ECC_STATE(FSMC_NANDInitStruct->FSMC_ECC));
mbed_official 52:a51c77007319 271 assert_param( IS_FSMC_ECCPAGE_SIZE(FSMC_NANDInitStruct->FSMC_ECCPageSize));
mbed_official 52:a51c77007319 272 assert_param( IS_FSMC_TCLR_TIME(FSMC_NANDInitStruct->FSMC_TCLRSetupTime));
mbed_official 52:a51c77007319 273 assert_param( IS_FSMC_TAR_TIME(FSMC_NANDInitStruct->FSMC_TARSetupTime));
mbed_official 52:a51c77007319 274 assert_param(IS_FSMC_SETUP_TIME(FSMC_NANDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_SetupTime));
mbed_official 52:a51c77007319 275 assert_param(IS_FSMC_WAIT_TIME(FSMC_NANDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_WaitSetupTime));
mbed_official 52:a51c77007319 276 assert_param(IS_FSMC_HOLD_TIME(FSMC_NANDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_HoldSetupTime));
mbed_official 52:a51c77007319 277 assert_param(IS_FSMC_HIZ_TIME(FSMC_NANDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_HiZSetupTime));
mbed_official 52:a51c77007319 278 assert_param(IS_FSMC_SETUP_TIME(FSMC_NANDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_SetupTime));
mbed_official 52:a51c77007319 279 assert_param(IS_FSMC_WAIT_TIME(FSMC_NANDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_WaitSetupTime));
mbed_official 52:a51c77007319 280 assert_param(IS_FSMC_HOLD_TIME(FSMC_NANDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_HoldSetupTime));
mbed_official 52:a51c77007319 281 assert_param(IS_FSMC_HIZ_TIME(FSMC_NANDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_HiZSetupTime));
mbed_official 52:a51c77007319 282
mbed_official 52:a51c77007319 283 /* Set the tmppcr value according to FSMC_NANDInitStruct parameters */
mbed_official 52:a51c77007319 284 tmppcr = (uint32_t)FSMC_NANDInitStruct->FSMC_Waitfeature |
mbed_official 52:a51c77007319 285 PCR_MemoryType_NAND |
mbed_official 52:a51c77007319 286 FSMC_NANDInitStruct->FSMC_MemoryDataWidth |
mbed_official 52:a51c77007319 287 FSMC_NANDInitStruct->FSMC_ECC |
mbed_official 52:a51c77007319 288 FSMC_NANDInitStruct->FSMC_ECCPageSize |
mbed_official 52:a51c77007319 289 (FSMC_NANDInitStruct->FSMC_TCLRSetupTime << 9 )|
mbed_official 52:a51c77007319 290 (FSMC_NANDInitStruct->FSMC_TARSetupTime << 13);
mbed_official 52:a51c77007319 291
mbed_official 52:a51c77007319 292 /* Set tmppmem value according to FSMC_CommonSpaceTimingStructure parameters */
mbed_official 52:a51c77007319 293 tmppmem = (uint32_t)FSMC_NANDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_SetupTime |
mbed_official 52:a51c77007319 294 (FSMC_NANDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_WaitSetupTime << 8) |
mbed_official 52:a51c77007319 295 (FSMC_NANDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_HoldSetupTime << 16)|
mbed_official 52:a51c77007319 296 (FSMC_NANDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_HiZSetupTime << 24);
mbed_official 52:a51c77007319 297
mbed_official 52:a51c77007319 298 /* Set tmppatt value according to FSMC_AttributeSpaceTimingStructure parameters */
mbed_official 52:a51c77007319 299 tmppatt = (uint32_t)FSMC_NANDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_SetupTime |
mbed_official 52:a51c77007319 300 (FSMC_NANDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_WaitSetupTime << 8) |
mbed_official 52:a51c77007319 301 (FSMC_NANDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_HoldSetupTime << 16)|
mbed_official 52:a51c77007319 302 (FSMC_NANDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_HiZSetupTime << 24);
mbed_official 52:a51c77007319 303
mbed_official 52:a51c77007319 304 if(FSMC_NANDInitStruct->FSMC_Bank == FSMC_Bank2_NAND)
mbed_official 52:a51c77007319 305 {
mbed_official 52:a51c77007319 306 /* FSMC_Bank2_NAND registers configuration */
mbed_official 52:a51c77007319 307 FSMC_Bank2->PCR2 = tmppcr;
mbed_official 52:a51c77007319 308 FSMC_Bank2->PMEM2 = tmppmem;
mbed_official 52:a51c77007319 309 FSMC_Bank2->PATT2 = tmppatt;
mbed_official 52:a51c77007319 310 }
mbed_official 52:a51c77007319 311 else
mbed_official 52:a51c77007319 312 {
mbed_official 52:a51c77007319 313 /* FSMC_Bank3_NAND registers configuration */
mbed_official 52:a51c77007319 314 FSMC_Bank3->PCR3 = tmppcr;
mbed_official 52:a51c77007319 315 FSMC_Bank3->PMEM3 = tmppmem;
mbed_official 52:a51c77007319 316 FSMC_Bank3->PATT3 = tmppatt;
mbed_official 52:a51c77007319 317 }
mbed_official 52:a51c77007319 318 }
mbed_official 52:a51c77007319 319
mbed_official 52:a51c77007319 320 /**
mbed_official 52:a51c77007319 321 * @brief Initializes the FSMC PCCARD Bank according to the specified
mbed_official 52:a51c77007319 322 * parameters in the FSMC_PCCARDInitStruct.
mbed_official 52:a51c77007319 323 * @param FSMC_PCCARDInitStruct : pointer to a FSMC_PCCARDInitTypeDef
mbed_official 52:a51c77007319 324 * structure that contains the configuration information for the FSMC
mbed_official 52:a51c77007319 325 * PCCARD Bank.
mbed_official 52:a51c77007319 326 * @retval None
mbed_official 52:a51c77007319 327 */
mbed_official 52:a51c77007319 328 void FSMC_PCCARDInit(FSMC_PCCARDInitTypeDef* FSMC_PCCARDInitStruct)
mbed_official 52:a51c77007319 329 {
mbed_official 52:a51c77007319 330 /* Check the parameters */
mbed_official 52:a51c77007319 331 assert_param(IS_FSMC_WAIT_FEATURE(FSMC_PCCARDInitStruct->FSMC_Waitfeature));
mbed_official 52:a51c77007319 332 assert_param(IS_FSMC_TCLR_TIME(FSMC_PCCARDInitStruct->FSMC_TCLRSetupTime));
mbed_official 52:a51c77007319 333 assert_param(IS_FSMC_TAR_TIME(FSMC_PCCARDInitStruct->FSMC_TARSetupTime));
mbed_official 52:a51c77007319 334
mbed_official 52:a51c77007319 335 assert_param(IS_FSMC_SETUP_TIME(FSMC_PCCARDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_SetupTime));
mbed_official 52:a51c77007319 336 assert_param(IS_FSMC_WAIT_TIME(FSMC_PCCARDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_WaitSetupTime));
mbed_official 52:a51c77007319 337 assert_param(IS_FSMC_HOLD_TIME(FSMC_PCCARDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_HoldSetupTime));
mbed_official 52:a51c77007319 338 assert_param(IS_FSMC_HIZ_TIME(FSMC_PCCARDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_HiZSetupTime));
mbed_official 52:a51c77007319 339
mbed_official 52:a51c77007319 340 assert_param(IS_FSMC_SETUP_TIME(FSMC_PCCARDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_SetupTime));
mbed_official 52:a51c77007319 341 assert_param(IS_FSMC_WAIT_TIME(FSMC_PCCARDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_WaitSetupTime));
mbed_official 52:a51c77007319 342 assert_param(IS_FSMC_HOLD_TIME(FSMC_PCCARDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_HoldSetupTime));
mbed_official 52:a51c77007319 343 assert_param(IS_FSMC_HIZ_TIME(FSMC_PCCARDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_HiZSetupTime));
mbed_official 52:a51c77007319 344 assert_param(IS_FSMC_SETUP_TIME(FSMC_PCCARDInitStruct->FSMC_IOSpaceTimingStruct->FSMC_SetupTime));
mbed_official 52:a51c77007319 345 assert_param(IS_FSMC_WAIT_TIME(FSMC_PCCARDInitStruct->FSMC_IOSpaceTimingStruct->FSMC_WaitSetupTime));
mbed_official 52:a51c77007319 346 assert_param(IS_FSMC_HOLD_TIME(FSMC_PCCARDInitStruct->FSMC_IOSpaceTimingStruct->FSMC_HoldSetupTime));
mbed_official 52:a51c77007319 347 assert_param(IS_FSMC_HIZ_TIME(FSMC_PCCARDInitStruct->FSMC_IOSpaceTimingStruct->FSMC_HiZSetupTime));
mbed_official 52:a51c77007319 348
mbed_official 52:a51c77007319 349 /* Set the PCR4 register value according to FSMC_PCCARDInitStruct parameters */
mbed_official 52:a51c77007319 350 FSMC_Bank4->PCR4 = (uint32_t)FSMC_PCCARDInitStruct->FSMC_Waitfeature |
mbed_official 52:a51c77007319 351 FSMC_MemoryDataWidth_16b |
mbed_official 52:a51c77007319 352 (FSMC_PCCARDInitStruct->FSMC_TCLRSetupTime << 9) |
mbed_official 52:a51c77007319 353 (FSMC_PCCARDInitStruct->FSMC_TARSetupTime << 13);
mbed_official 52:a51c77007319 354
mbed_official 52:a51c77007319 355 /* Set PMEM4 register value according to FSMC_CommonSpaceTimingStructure parameters */
mbed_official 52:a51c77007319 356 FSMC_Bank4->PMEM4 = (uint32_t)FSMC_PCCARDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_SetupTime |
mbed_official 52:a51c77007319 357 (FSMC_PCCARDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_WaitSetupTime << 8) |
mbed_official 52:a51c77007319 358 (FSMC_PCCARDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_HoldSetupTime << 16)|
mbed_official 52:a51c77007319 359 (FSMC_PCCARDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_HiZSetupTime << 24);
mbed_official 52:a51c77007319 360
mbed_official 52:a51c77007319 361 /* Set PATT4 register value according to FSMC_AttributeSpaceTimingStructure parameters */
mbed_official 52:a51c77007319 362 FSMC_Bank4->PATT4 = (uint32_t)FSMC_PCCARDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_SetupTime |
mbed_official 52:a51c77007319 363 (FSMC_PCCARDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_WaitSetupTime << 8) |
mbed_official 52:a51c77007319 364 (FSMC_PCCARDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_HoldSetupTime << 16)|
mbed_official 52:a51c77007319 365 (FSMC_PCCARDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_HiZSetupTime << 24);
mbed_official 52:a51c77007319 366
mbed_official 52:a51c77007319 367 /* Set PIO4 register value according to FSMC_IOSpaceTimingStructure parameters */
mbed_official 52:a51c77007319 368 FSMC_Bank4->PIO4 = (uint32_t)FSMC_PCCARDInitStruct->FSMC_IOSpaceTimingStruct->FSMC_SetupTime |
mbed_official 52:a51c77007319 369 (FSMC_PCCARDInitStruct->FSMC_IOSpaceTimingStruct->FSMC_WaitSetupTime << 8) |
mbed_official 52:a51c77007319 370 (FSMC_PCCARDInitStruct->FSMC_IOSpaceTimingStruct->FSMC_HoldSetupTime << 16)|
mbed_official 52:a51c77007319 371 (FSMC_PCCARDInitStruct->FSMC_IOSpaceTimingStruct->FSMC_HiZSetupTime << 24);
mbed_official 52:a51c77007319 372 }
mbed_official 52:a51c77007319 373
mbed_official 52:a51c77007319 374 /**
mbed_official 52:a51c77007319 375 * @brief Fills each FSMC_NORSRAMInitStruct member with its default value.
mbed_official 52:a51c77007319 376 * @param FSMC_NORSRAMInitStruct: pointer to a FSMC_NORSRAMInitTypeDef
mbed_official 52:a51c77007319 377 * structure which will be initialized.
mbed_official 52:a51c77007319 378 * @retval None
mbed_official 52:a51c77007319 379 */
mbed_official 52:a51c77007319 380 void FSMC_NORSRAMStructInit(FSMC_NORSRAMInitTypeDef* FSMC_NORSRAMInitStruct)
mbed_official 52:a51c77007319 381 {
mbed_official 52:a51c77007319 382 /* Reset NOR/SRAM Init structure parameters values */
mbed_official 52:a51c77007319 383 FSMC_NORSRAMInitStruct->FSMC_Bank = FSMC_Bank1_NORSRAM1;
mbed_official 52:a51c77007319 384 FSMC_NORSRAMInitStruct->FSMC_DataAddressMux = FSMC_DataAddressMux_Enable;
mbed_official 52:a51c77007319 385 FSMC_NORSRAMInitStruct->FSMC_MemoryType = FSMC_MemoryType_SRAM;
mbed_official 52:a51c77007319 386 FSMC_NORSRAMInitStruct->FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_8b;
mbed_official 52:a51c77007319 387 FSMC_NORSRAMInitStruct->FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;
mbed_official 52:a51c77007319 388 FSMC_NORSRAMInitStruct->FSMC_AsynchronousWait = FSMC_AsynchronousWait_Disable;
mbed_official 52:a51c77007319 389 FSMC_NORSRAMInitStruct->FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
mbed_official 52:a51c77007319 390 FSMC_NORSRAMInitStruct->FSMC_WrapMode = FSMC_WrapMode_Disable;
mbed_official 52:a51c77007319 391 FSMC_NORSRAMInitStruct->FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;
mbed_official 52:a51c77007319 392 FSMC_NORSRAMInitStruct->FSMC_WriteOperation = FSMC_WriteOperation_Enable;
mbed_official 52:a51c77007319 393 FSMC_NORSRAMInitStruct->FSMC_WaitSignal = FSMC_WaitSignal_Enable;
mbed_official 52:a51c77007319 394 FSMC_NORSRAMInitStruct->FSMC_ExtendedMode = FSMC_ExtendedMode_Disable;
mbed_official 52:a51c77007319 395 FSMC_NORSRAMInitStruct->FSMC_WriteBurst = FSMC_WriteBurst_Disable;
mbed_official 52:a51c77007319 396 FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_AddressSetupTime = 0xF;
mbed_official 52:a51c77007319 397 FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_AddressHoldTime = 0xF;
mbed_official 52:a51c77007319 398 FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_DataSetupTime = 0xFF;
mbed_official 52:a51c77007319 399 FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_BusTurnAroundDuration = 0xF;
mbed_official 52:a51c77007319 400 FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_CLKDivision = 0xF;
mbed_official 52:a51c77007319 401 FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_DataLatency = 0xF;
mbed_official 52:a51c77007319 402 FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_AccessMode = FSMC_AccessMode_A;
mbed_official 52:a51c77007319 403 FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_AddressSetupTime = 0xF;
mbed_official 52:a51c77007319 404 FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_AddressHoldTime = 0xF;
mbed_official 52:a51c77007319 405 FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_DataSetupTime = 0xFF;
mbed_official 52:a51c77007319 406 FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_BusTurnAroundDuration = 0xF;
mbed_official 52:a51c77007319 407 FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_CLKDivision = 0xF;
mbed_official 52:a51c77007319 408 FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_DataLatency = 0xF;
mbed_official 52:a51c77007319 409 FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_AccessMode = FSMC_AccessMode_A;
mbed_official 52:a51c77007319 410 }
mbed_official 52:a51c77007319 411
mbed_official 52:a51c77007319 412 /**
mbed_official 52:a51c77007319 413 * @brief Fills each FSMC_NANDInitStruct member with its default value.
mbed_official 52:a51c77007319 414 * @param FSMC_NANDInitStruct: pointer to a FSMC_NANDInitTypeDef
mbed_official 52:a51c77007319 415 * structure which will be initialized.
mbed_official 52:a51c77007319 416 * @retval None
mbed_official 52:a51c77007319 417 */
mbed_official 52:a51c77007319 418 void FSMC_NANDStructInit(FSMC_NANDInitTypeDef* FSMC_NANDInitStruct)
mbed_official 52:a51c77007319 419 {
mbed_official 52:a51c77007319 420 /* Reset NAND Init structure parameters values */
mbed_official 52:a51c77007319 421 FSMC_NANDInitStruct->FSMC_Bank = FSMC_Bank2_NAND;
mbed_official 52:a51c77007319 422 FSMC_NANDInitStruct->FSMC_Waitfeature = FSMC_Waitfeature_Disable;
mbed_official 52:a51c77007319 423 FSMC_NANDInitStruct->FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_8b;
mbed_official 52:a51c77007319 424 FSMC_NANDInitStruct->FSMC_ECC = FSMC_ECC_Disable;
mbed_official 52:a51c77007319 425 FSMC_NANDInitStruct->FSMC_ECCPageSize = FSMC_ECCPageSize_256Bytes;
mbed_official 52:a51c77007319 426 FSMC_NANDInitStruct->FSMC_TCLRSetupTime = 0x0;
mbed_official 52:a51c77007319 427 FSMC_NANDInitStruct->FSMC_TARSetupTime = 0x0;
mbed_official 52:a51c77007319 428 FSMC_NANDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_SetupTime = 0xFC;
mbed_official 52:a51c77007319 429 FSMC_NANDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_WaitSetupTime = 0xFC;
mbed_official 52:a51c77007319 430 FSMC_NANDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_HoldSetupTime = 0xFC;
mbed_official 52:a51c77007319 431 FSMC_NANDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_HiZSetupTime = 0xFC;
mbed_official 52:a51c77007319 432 FSMC_NANDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_SetupTime = 0xFC;
mbed_official 52:a51c77007319 433 FSMC_NANDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_WaitSetupTime = 0xFC;
mbed_official 52:a51c77007319 434 FSMC_NANDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_HoldSetupTime = 0xFC;
mbed_official 52:a51c77007319 435 FSMC_NANDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_HiZSetupTime = 0xFC;
mbed_official 52:a51c77007319 436 }
mbed_official 52:a51c77007319 437
mbed_official 52:a51c77007319 438 /**
mbed_official 52:a51c77007319 439 * @brief Fills each FSMC_PCCARDInitStruct member with its default value.
mbed_official 52:a51c77007319 440 * @param FSMC_PCCARDInitStruct: pointer to a FSMC_PCCARDInitTypeDef
mbed_official 52:a51c77007319 441 * structure which will be initialized.
mbed_official 52:a51c77007319 442 * @retval None
mbed_official 52:a51c77007319 443 */
mbed_official 52:a51c77007319 444 void FSMC_PCCARDStructInit(FSMC_PCCARDInitTypeDef* FSMC_PCCARDInitStruct)
mbed_official 52:a51c77007319 445 {
mbed_official 52:a51c77007319 446 /* Reset PCCARD Init structure parameters values */
mbed_official 52:a51c77007319 447 FSMC_PCCARDInitStruct->FSMC_Waitfeature = FSMC_Waitfeature_Disable;
mbed_official 52:a51c77007319 448 FSMC_PCCARDInitStruct->FSMC_TCLRSetupTime = 0x0;
mbed_official 52:a51c77007319 449 FSMC_PCCARDInitStruct->FSMC_TARSetupTime = 0x0;
mbed_official 52:a51c77007319 450 FSMC_PCCARDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_SetupTime = 0xFC;
mbed_official 52:a51c77007319 451 FSMC_PCCARDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_WaitSetupTime = 0xFC;
mbed_official 52:a51c77007319 452 FSMC_PCCARDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_HoldSetupTime = 0xFC;
mbed_official 52:a51c77007319 453 FSMC_PCCARDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_HiZSetupTime = 0xFC;
mbed_official 52:a51c77007319 454 FSMC_PCCARDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_SetupTime = 0xFC;
mbed_official 52:a51c77007319 455 FSMC_PCCARDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_WaitSetupTime = 0xFC;
mbed_official 52:a51c77007319 456 FSMC_PCCARDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_HoldSetupTime = 0xFC;
mbed_official 52:a51c77007319 457 FSMC_PCCARDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_HiZSetupTime = 0xFC;
mbed_official 52:a51c77007319 458 FSMC_PCCARDInitStruct->FSMC_IOSpaceTimingStruct->FSMC_SetupTime = 0xFC;
mbed_official 52:a51c77007319 459 FSMC_PCCARDInitStruct->FSMC_IOSpaceTimingStruct->FSMC_WaitSetupTime = 0xFC;
mbed_official 52:a51c77007319 460 FSMC_PCCARDInitStruct->FSMC_IOSpaceTimingStruct->FSMC_HoldSetupTime = 0xFC;
mbed_official 52:a51c77007319 461 FSMC_PCCARDInitStruct->FSMC_IOSpaceTimingStruct->FSMC_HiZSetupTime = 0xFC;
mbed_official 52:a51c77007319 462 }
mbed_official 52:a51c77007319 463
mbed_official 52:a51c77007319 464 /**
mbed_official 52:a51c77007319 465 * @brief Enables or disables the specified NOR/SRAM Memory Bank.
mbed_official 52:a51c77007319 466 * @param FSMC_Bank: specifies the FSMC Bank to be used
mbed_official 52:a51c77007319 467 * This parameter can be one of the following values:
mbed_official 52:a51c77007319 468 * @arg FSMC_Bank1_NORSRAM1: FSMC Bank1 NOR/SRAM1
mbed_official 52:a51c77007319 469 * @arg FSMC_Bank1_NORSRAM2: FSMC Bank1 NOR/SRAM2
mbed_official 52:a51c77007319 470 * @arg FSMC_Bank1_NORSRAM3: FSMC Bank1 NOR/SRAM3
mbed_official 52:a51c77007319 471 * @arg FSMC_Bank1_NORSRAM4: FSMC Bank1 NOR/SRAM4
mbed_official 52:a51c77007319 472 * @param NewState: new state of the FSMC_Bank. This parameter can be: ENABLE or DISABLE.
mbed_official 52:a51c77007319 473 * @retval None
mbed_official 52:a51c77007319 474 */
mbed_official 52:a51c77007319 475 void FSMC_NORSRAMCmd(uint32_t FSMC_Bank, FunctionalState NewState)
mbed_official 52:a51c77007319 476 {
mbed_official 52:a51c77007319 477 assert_param(IS_FSMC_NORSRAM_BANK(FSMC_Bank));
mbed_official 52:a51c77007319 478 assert_param(IS_FUNCTIONAL_STATE(NewState));
mbed_official 52:a51c77007319 479
mbed_official 52:a51c77007319 480 if (NewState != DISABLE)
mbed_official 52:a51c77007319 481 {
mbed_official 52:a51c77007319 482 /* Enable the selected NOR/SRAM Bank by setting the PBKEN bit in the BCRx register */
mbed_official 52:a51c77007319 483 FSMC_Bank1->BTCR[FSMC_Bank] |= BCR_MBKEN_Set;
mbed_official 52:a51c77007319 484 }
mbed_official 52:a51c77007319 485 else
mbed_official 52:a51c77007319 486 {
mbed_official 52:a51c77007319 487 /* Disable the selected NOR/SRAM Bank by clearing the PBKEN bit in the BCRx register */
mbed_official 52:a51c77007319 488 FSMC_Bank1->BTCR[FSMC_Bank] &= BCR_MBKEN_Reset;
mbed_official 52:a51c77007319 489 }
mbed_official 52:a51c77007319 490 }
mbed_official 52:a51c77007319 491
mbed_official 52:a51c77007319 492 /**
mbed_official 52:a51c77007319 493 * @brief Enables or disables the specified NAND Memory Bank.
mbed_official 52:a51c77007319 494 * @param FSMC_Bank: specifies the FSMC Bank to be used
mbed_official 52:a51c77007319 495 * This parameter can be one of the following values:
mbed_official 52:a51c77007319 496 * @arg FSMC_Bank2_NAND: FSMC Bank2 NAND
mbed_official 52:a51c77007319 497 * @arg FSMC_Bank3_NAND: FSMC Bank3 NAND
mbed_official 52:a51c77007319 498 * @param NewState: new state of the FSMC_Bank. This parameter can be: ENABLE or DISABLE.
mbed_official 52:a51c77007319 499 * @retval None
mbed_official 52:a51c77007319 500 */
mbed_official 52:a51c77007319 501 void FSMC_NANDCmd(uint32_t FSMC_Bank, FunctionalState NewState)
mbed_official 52:a51c77007319 502 {
mbed_official 52:a51c77007319 503 assert_param(IS_FSMC_NAND_BANK(FSMC_Bank));
mbed_official 52:a51c77007319 504 assert_param(IS_FUNCTIONAL_STATE(NewState));
mbed_official 52:a51c77007319 505
mbed_official 52:a51c77007319 506 if (NewState != DISABLE)
mbed_official 52:a51c77007319 507 {
mbed_official 52:a51c77007319 508 /* Enable the selected NAND Bank by setting the PBKEN bit in the PCRx register */
mbed_official 52:a51c77007319 509 if(FSMC_Bank == FSMC_Bank2_NAND)
mbed_official 52:a51c77007319 510 {
mbed_official 52:a51c77007319 511 FSMC_Bank2->PCR2 |= PCR_PBKEN_Set;
mbed_official 52:a51c77007319 512 }
mbed_official 52:a51c77007319 513 else
mbed_official 52:a51c77007319 514 {
mbed_official 52:a51c77007319 515 FSMC_Bank3->PCR3 |= PCR_PBKEN_Set;
mbed_official 52:a51c77007319 516 }
mbed_official 52:a51c77007319 517 }
mbed_official 52:a51c77007319 518 else
mbed_official 52:a51c77007319 519 {
mbed_official 52:a51c77007319 520 /* Disable the selected NAND Bank by clearing the PBKEN bit in the PCRx register */
mbed_official 52:a51c77007319 521 if(FSMC_Bank == FSMC_Bank2_NAND)
mbed_official 52:a51c77007319 522 {
mbed_official 52:a51c77007319 523 FSMC_Bank2->PCR2 &= PCR_PBKEN_Reset;
mbed_official 52:a51c77007319 524 }
mbed_official 52:a51c77007319 525 else
mbed_official 52:a51c77007319 526 {
mbed_official 52:a51c77007319 527 FSMC_Bank3->PCR3 &= PCR_PBKEN_Reset;
mbed_official 52:a51c77007319 528 }
mbed_official 52:a51c77007319 529 }
mbed_official 52:a51c77007319 530 }
mbed_official 52:a51c77007319 531
mbed_official 52:a51c77007319 532 /**
mbed_official 52:a51c77007319 533 * @brief Enables or disables the PCCARD Memory Bank.
mbed_official 52:a51c77007319 534 * @param NewState: new state of the PCCARD Memory Bank.
mbed_official 52:a51c77007319 535 * This parameter can be: ENABLE or DISABLE.
mbed_official 52:a51c77007319 536 * @retval None
mbed_official 52:a51c77007319 537 */
mbed_official 52:a51c77007319 538 void FSMC_PCCARDCmd(FunctionalState NewState)
mbed_official 52:a51c77007319 539 {
mbed_official 52:a51c77007319 540 assert_param(IS_FUNCTIONAL_STATE(NewState));
mbed_official 52:a51c77007319 541
mbed_official 52:a51c77007319 542 if (NewState != DISABLE)
mbed_official 52:a51c77007319 543 {
mbed_official 52:a51c77007319 544 /* Enable the PCCARD Bank by setting the PBKEN bit in the PCR4 register */
mbed_official 52:a51c77007319 545 FSMC_Bank4->PCR4 |= PCR_PBKEN_Set;
mbed_official 52:a51c77007319 546 }
mbed_official 52:a51c77007319 547 else
mbed_official 52:a51c77007319 548 {
mbed_official 52:a51c77007319 549 /* Disable the PCCARD Bank by clearing the PBKEN bit in the PCR4 register */
mbed_official 52:a51c77007319 550 FSMC_Bank4->PCR4 &= PCR_PBKEN_Reset;
mbed_official 52:a51c77007319 551 }
mbed_official 52:a51c77007319 552 }
mbed_official 52:a51c77007319 553
mbed_official 52:a51c77007319 554 /**
mbed_official 52:a51c77007319 555 * @brief Enables or disables the FSMC NAND ECC feature.
mbed_official 52:a51c77007319 556 * @param FSMC_Bank: specifies the FSMC Bank to be used
mbed_official 52:a51c77007319 557 * This parameter can be one of the following values:
mbed_official 52:a51c77007319 558 * @arg FSMC_Bank2_NAND: FSMC Bank2 NAND
mbed_official 52:a51c77007319 559 * @arg FSMC_Bank3_NAND: FSMC Bank3 NAND
mbed_official 52:a51c77007319 560 * @param NewState: new state of the FSMC NAND ECC feature.
mbed_official 52:a51c77007319 561 * This parameter can be: ENABLE or DISABLE.
mbed_official 52:a51c77007319 562 * @retval None
mbed_official 52:a51c77007319 563 */
mbed_official 52:a51c77007319 564 void FSMC_NANDECCCmd(uint32_t FSMC_Bank, FunctionalState NewState)
mbed_official 52:a51c77007319 565 {
mbed_official 52:a51c77007319 566 assert_param(IS_FSMC_NAND_BANK(FSMC_Bank));
mbed_official 52:a51c77007319 567 assert_param(IS_FUNCTIONAL_STATE(NewState));
mbed_official 52:a51c77007319 568
mbed_official 52:a51c77007319 569 if (NewState != DISABLE)
mbed_official 52:a51c77007319 570 {
mbed_official 52:a51c77007319 571 /* Enable the selected NAND Bank ECC function by setting the ECCEN bit in the PCRx register */
mbed_official 52:a51c77007319 572 if(FSMC_Bank == FSMC_Bank2_NAND)
mbed_official 52:a51c77007319 573 {
mbed_official 52:a51c77007319 574 FSMC_Bank2->PCR2 |= PCR_ECCEN_Set;
mbed_official 52:a51c77007319 575 }
mbed_official 52:a51c77007319 576 else
mbed_official 52:a51c77007319 577 {
mbed_official 52:a51c77007319 578 FSMC_Bank3->PCR3 |= PCR_ECCEN_Set;
mbed_official 52:a51c77007319 579 }
mbed_official 52:a51c77007319 580 }
mbed_official 52:a51c77007319 581 else
mbed_official 52:a51c77007319 582 {
mbed_official 52:a51c77007319 583 /* Disable the selected NAND Bank ECC function by clearing the ECCEN bit in the PCRx register */
mbed_official 52:a51c77007319 584 if(FSMC_Bank == FSMC_Bank2_NAND)
mbed_official 52:a51c77007319 585 {
mbed_official 52:a51c77007319 586 FSMC_Bank2->PCR2 &= PCR_ECCEN_Reset;
mbed_official 52:a51c77007319 587 }
mbed_official 52:a51c77007319 588 else
mbed_official 52:a51c77007319 589 {
mbed_official 52:a51c77007319 590 FSMC_Bank3->PCR3 &= PCR_ECCEN_Reset;
mbed_official 52:a51c77007319 591 }
mbed_official 52:a51c77007319 592 }
mbed_official 52:a51c77007319 593 }
mbed_official 52:a51c77007319 594
mbed_official 52:a51c77007319 595 /**
mbed_official 52:a51c77007319 596 * @brief Returns the error correction code register value.
mbed_official 52:a51c77007319 597 * @param FSMC_Bank: specifies the FSMC Bank to be used
mbed_official 52:a51c77007319 598 * This parameter can be one of the following values:
mbed_official 52:a51c77007319 599 * @arg FSMC_Bank2_NAND: FSMC Bank2 NAND
mbed_official 52:a51c77007319 600 * @arg FSMC_Bank3_NAND: FSMC Bank3 NAND
mbed_official 52:a51c77007319 601 * @retval The Error Correction Code (ECC) value.
mbed_official 52:a51c77007319 602 */
mbed_official 52:a51c77007319 603 uint32_t FSMC_GetECC(uint32_t FSMC_Bank)
mbed_official 52:a51c77007319 604 {
mbed_official 52:a51c77007319 605 uint32_t eccval = 0x00000000;
mbed_official 52:a51c77007319 606
mbed_official 52:a51c77007319 607 if(FSMC_Bank == FSMC_Bank2_NAND)
mbed_official 52:a51c77007319 608 {
mbed_official 52:a51c77007319 609 /* Get the ECCR2 register value */
mbed_official 52:a51c77007319 610 eccval = FSMC_Bank2->ECCR2;
mbed_official 52:a51c77007319 611 }
mbed_official 52:a51c77007319 612 else
mbed_official 52:a51c77007319 613 {
mbed_official 52:a51c77007319 614 /* Get the ECCR3 register value */
mbed_official 52:a51c77007319 615 eccval = FSMC_Bank3->ECCR3;
mbed_official 52:a51c77007319 616 }
mbed_official 52:a51c77007319 617 /* Return the error correction code value */
mbed_official 52:a51c77007319 618 return(eccval);
mbed_official 52:a51c77007319 619 }
mbed_official 52:a51c77007319 620
mbed_official 52:a51c77007319 621 /**
mbed_official 52:a51c77007319 622 * @brief Enables or disables the specified FSMC interrupts.
mbed_official 52:a51c77007319 623 * @param FSMC_Bank: specifies the FSMC Bank to be used
mbed_official 52:a51c77007319 624 * This parameter can be one of the following values:
mbed_official 52:a51c77007319 625 * @arg FSMC_Bank2_NAND: FSMC Bank2 NAND
mbed_official 52:a51c77007319 626 * @arg FSMC_Bank3_NAND: FSMC Bank3 NAND
mbed_official 52:a51c77007319 627 * @arg FSMC_Bank4_PCCARD: FSMC Bank4 PCCARD
mbed_official 52:a51c77007319 628 * @param FSMC_IT: specifies the FSMC interrupt sources to be enabled or disabled.
mbed_official 52:a51c77007319 629 * This parameter can be any combination of the following values:
mbed_official 52:a51c77007319 630 * @arg FSMC_IT_RisingEdge: Rising edge detection interrupt.
mbed_official 52:a51c77007319 631 * @arg FSMC_IT_Level: Level edge detection interrupt.
mbed_official 52:a51c77007319 632 * @arg FSMC_IT_FallingEdge: Falling edge detection interrupt.
mbed_official 52:a51c77007319 633 * @param NewState: new state of the specified FSMC interrupts.
mbed_official 52:a51c77007319 634 * This parameter can be: ENABLE or DISABLE.
mbed_official 52:a51c77007319 635 * @retval None
mbed_official 52:a51c77007319 636 */
mbed_official 52:a51c77007319 637 void FSMC_ITConfig(uint32_t FSMC_Bank, uint32_t FSMC_IT, FunctionalState NewState)
mbed_official 52:a51c77007319 638 {
mbed_official 52:a51c77007319 639 assert_param(IS_FSMC_IT_BANK(FSMC_Bank));
mbed_official 52:a51c77007319 640 assert_param(IS_FSMC_IT(FSMC_IT));
mbed_official 52:a51c77007319 641 assert_param(IS_FUNCTIONAL_STATE(NewState));
mbed_official 52:a51c77007319 642
mbed_official 52:a51c77007319 643 if (NewState != DISABLE)
mbed_official 52:a51c77007319 644 {
mbed_official 52:a51c77007319 645 /* Enable the selected FSMC_Bank2 interrupts */
mbed_official 52:a51c77007319 646 if(FSMC_Bank == FSMC_Bank2_NAND)
mbed_official 52:a51c77007319 647 {
mbed_official 52:a51c77007319 648 FSMC_Bank2->SR2 |= FSMC_IT;
mbed_official 52:a51c77007319 649 }
mbed_official 52:a51c77007319 650 /* Enable the selected FSMC_Bank3 interrupts */
mbed_official 52:a51c77007319 651 else if (FSMC_Bank == FSMC_Bank3_NAND)
mbed_official 52:a51c77007319 652 {
mbed_official 52:a51c77007319 653 FSMC_Bank3->SR3 |= FSMC_IT;
mbed_official 52:a51c77007319 654 }
mbed_official 52:a51c77007319 655 /* Enable the selected FSMC_Bank4 interrupts */
mbed_official 52:a51c77007319 656 else
mbed_official 52:a51c77007319 657 {
mbed_official 52:a51c77007319 658 FSMC_Bank4->SR4 |= FSMC_IT;
mbed_official 52:a51c77007319 659 }
mbed_official 52:a51c77007319 660 }
mbed_official 52:a51c77007319 661 else
mbed_official 52:a51c77007319 662 {
mbed_official 52:a51c77007319 663 /* Disable the selected FSMC_Bank2 interrupts */
mbed_official 52:a51c77007319 664 if(FSMC_Bank == FSMC_Bank2_NAND)
mbed_official 52:a51c77007319 665 {
mbed_official 52:a51c77007319 666
mbed_official 52:a51c77007319 667 FSMC_Bank2->SR2 &= (uint32_t)~FSMC_IT;
mbed_official 52:a51c77007319 668 }
mbed_official 52:a51c77007319 669 /* Disable the selected FSMC_Bank3 interrupts */
mbed_official 52:a51c77007319 670 else if (FSMC_Bank == FSMC_Bank3_NAND)
mbed_official 52:a51c77007319 671 {
mbed_official 52:a51c77007319 672 FSMC_Bank3->SR3 &= (uint32_t)~FSMC_IT;
mbed_official 52:a51c77007319 673 }
mbed_official 52:a51c77007319 674 /* Disable the selected FSMC_Bank4 interrupts */
mbed_official 52:a51c77007319 675 else
mbed_official 52:a51c77007319 676 {
mbed_official 52:a51c77007319 677 FSMC_Bank4->SR4 &= (uint32_t)~FSMC_IT;
mbed_official 52:a51c77007319 678 }
mbed_official 52:a51c77007319 679 }
mbed_official 52:a51c77007319 680 }
mbed_official 52:a51c77007319 681
mbed_official 52:a51c77007319 682 /**
mbed_official 52:a51c77007319 683 * @brief Checks whether the specified FSMC flag is set or not.
mbed_official 52:a51c77007319 684 * @param FSMC_Bank: specifies the FSMC Bank to be used
mbed_official 52:a51c77007319 685 * This parameter can be one of the following values:
mbed_official 52:a51c77007319 686 * @arg FSMC_Bank2_NAND: FSMC Bank2 NAND
mbed_official 52:a51c77007319 687 * @arg FSMC_Bank3_NAND: FSMC Bank3 NAND
mbed_official 52:a51c77007319 688 * @arg FSMC_Bank4_PCCARD: FSMC Bank4 PCCARD
mbed_official 52:a51c77007319 689 * @param FSMC_FLAG: specifies the flag to check.
mbed_official 52:a51c77007319 690 * This parameter can be one of the following values:
mbed_official 52:a51c77007319 691 * @arg FSMC_FLAG_RisingEdge: Rising egde detection Flag.
mbed_official 52:a51c77007319 692 * @arg FSMC_FLAG_Level: Level detection Flag.
mbed_official 52:a51c77007319 693 * @arg FSMC_FLAG_FallingEdge: Falling egde detection Flag.
mbed_official 52:a51c77007319 694 * @arg FSMC_FLAG_FEMPT: Fifo empty Flag.
mbed_official 52:a51c77007319 695 * @retval The new state of FSMC_FLAG (SET or RESET).
mbed_official 52:a51c77007319 696 */
mbed_official 52:a51c77007319 697 FlagStatus FSMC_GetFlagStatus(uint32_t FSMC_Bank, uint32_t FSMC_FLAG)
mbed_official 52:a51c77007319 698 {
mbed_official 52:a51c77007319 699 FlagStatus bitstatus = RESET;
mbed_official 52:a51c77007319 700 uint32_t tmpsr = 0x00000000;
mbed_official 52:a51c77007319 701
mbed_official 52:a51c77007319 702 /* Check the parameters */
mbed_official 52:a51c77007319 703 assert_param(IS_FSMC_GETFLAG_BANK(FSMC_Bank));
mbed_official 52:a51c77007319 704 assert_param(IS_FSMC_GET_FLAG(FSMC_FLAG));
mbed_official 52:a51c77007319 705
mbed_official 52:a51c77007319 706 if(FSMC_Bank == FSMC_Bank2_NAND)
mbed_official 52:a51c77007319 707 {
mbed_official 52:a51c77007319 708 tmpsr = FSMC_Bank2->SR2;
mbed_official 52:a51c77007319 709 }
mbed_official 52:a51c77007319 710 else if(FSMC_Bank == FSMC_Bank3_NAND)
mbed_official 52:a51c77007319 711 {
mbed_official 52:a51c77007319 712 tmpsr = FSMC_Bank3->SR3;
mbed_official 52:a51c77007319 713 }
mbed_official 52:a51c77007319 714 /* FSMC_Bank4_PCCARD*/
mbed_official 52:a51c77007319 715 else
mbed_official 52:a51c77007319 716 {
mbed_official 52:a51c77007319 717 tmpsr = FSMC_Bank4->SR4;
mbed_official 52:a51c77007319 718 }
mbed_official 52:a51c77007319 719
mbed_official 52:a51c77007319 720 /* Get the flag status */
mbed_official 52:a51c77007319 721 if ((tmpsr & FSMC_FLAG) != (uint16_t)RESET )
mbed_official 52:a51c77007319 722 {
mbed_official 52:a51c77007319 723 bitstatus = SET;
mbed_official 52:a51c77007319 724 }
mbed_official 52:a51c77007319 725 else
mbed_official 52:a51c77007319 726 {
mbed_official 52:a51c77007319 727 bitstatus = RESET;
mbed_official 52:a51c77007319 728 }
mbed_official 52:a51c77007319 729 /* Return the flag status */
mbed_official 52:a51c77007319 730 return bitstatus;
mbed_official 52:a51c77007319 731 }
mbed_official 52:a51c77007319 732
mbed_official 52:a51c77007319 733 /**
mbed_official 52:a51c77007319 734 * @brief Clears the FSMC's pending flags.
mbed_official 52:a51c77007319 735 * @param FSMC_Bank: specifies the FSMC Bank to be used
mbed_official 52:a51c77007319 736 * This parameter can be one of the following values:
mbed_official 52:a51c77007319 737 * @arg FSMC_Bank2_NAND: FSMC Bank2 NAND
mbed_official 52:a51c77007319 738 * @arg FSMC_Bank3_NAND: FSMC Bank3 NAND
mbed_official 52:a51c77007319 739 * @arg FSMC_Bank4_PCCARD: FSMC Bank4 PCCARD
mbed_official 52:a51c77007319 740 * @param FSMC_FLAG: specifies the flag to clear.
mbed_official 52:a51c77007319 741 * This parameter can be any combination of the following values:
mbed_official 52:a51c77007319 742 * @arg FSMC_FLAG_RisingEdge: Rising egde detection Flag.
mbed_official 52:a51c77007319 743 * @arg FSMC_FLAG_Level: Level detection Flag.
mbed_official 52:a51c77007319 744 * @arg FSMC_FLAG_FallingEdge: Falling egde detection Flag.
mbed_official 52:a51c77007319 745 * @retval None
mbed_official 52:a51c77007319 746 */
mbed_official 52:a51c77007319 747 void FSMC_ClearFlag(uint32_t FSMC_Bank, uint32_t FSMC_FLAG)
mbed_official 52:a51c77007319 748 {
mbed_official 52:a51c77007319 749 /* Check the parameters */
mbed_official 52:a51c77007319 750 assert_param(IS_FSMC_GETFLAG_BANK(FSMC_Bank));
mbed_official 52:a51c77007319 751 assert_param(IS_FSMC_CLEAR_FLAG(FSMC_FLAG)) ;
mbed_official 52:a51c77007319 752
mbed_official 52:a51c77007319 753 if(FSMC_Bank == FSMC_Bank2_NAND)
mbed_official 52:a51c77007319 754 {
mbed_official 52:a51c77007319 755 FSMC_Bank2->SR2 &= ~FSMC_FLAG;
mbed_official 52:a51c77007319 756 }
mbed_official 52:a51c77007319 757 else if(FSMC_Bank == FSMC_Bank3_NAND)
mbed_official 52:a51c77007319 758 {
mbed_official 52:a51c77007319 759 FSMC_Bank3->SR3 &= ~FSMC_FLAG;
mbed_official 52:a51c77007319 760 }
mbed_official 52:a51c77007319 761 /* FSMC_Bank4_PCCARD*/
mbed_official 52:a51c77007319 762 else
mbed_official 52:a51c77007319 763 {
mbed_official 52:a51c77007319 764 FSMC_Bank4->SR4 &= ~FSMC_FLAG;
mbed_official 52:a51c77007319 765 }
mbed_official 52:a51c77007319 766 }
mbed_official 52:a51c77007319 767
mbed_official 52:a51c77007319 768 /**
mbed_official 52:a51c77007319 769 * @brief Checks whether the specified FSMC interrupt has occurred or not.
mbed_official 52:a51c77007319 770 * @param FSMC_Bank: specifies the FSMC Bank to be used
mbed_official 52:a51c77007319 771 * This parameter can be one of the following values:
mbed_official 52:a51c77007319 772 * @arg FSMC_Bank2_NAND: FSMC Bank2 NAND
mbed_official 52:a51c77007319 773 * @arg FSMC_Bank3_NAND: FSMC Bank3 NAND
mbed_official 52:a51c77007319 774 * @arg FSMC_Bank4_PCCARD: FSMC Bank4 PCCARD
mbed_official 52:a51c77007319 775 * @param FSMC_IT: specifies the FSMC interrupt source to check.
mbed_official 52:a51c77007319 776 * This parameter can be one of the following values:
mbed_official 52:a51c77007319 777 * @arg FSMC_IT_RisingEdge: Rising edge detection interrupt.
mbed_official 52:a51c77007319 778 * @arg FSMC_IT_Level: Level edge detection interrupt.
mbed_official 52:a51c77007319 779 * @arg FSMC_IT_FallingEdge: Falling edge detection interrupt.
mbed_official 52:a51c77007319 780 * @retval The new state of FSMC_IT (SET or RESET).
mbed_official 52:a51c77007319 781 */
mbed_official 52:a51c77007319 782 ITStatus FSMC_GetITStatus(uint32_t FSMC_Bank, uint32_t FSMC_IT)
mbed_official 52:a51c77007319 783 {
mbed_official 52:a51c77007319 784 ITStatus bitstatus = RESET;
mbed_official 52:a51c77007319 785 uint32_t tmpsr = 0x0, itstatus = 0x0, itenable = 0x0;
mbed_official 52:a51c77007319 786
mbed_official 52:a51c77007319 787 /* Check the parameters */
mbed_official 52:a51c77007319 788 assert_param(IS_FSMC_IT_BANK(FSMC_Bank));
mbed_official 52:a51c77007319 789 assert_param(IS_FSMC_GET_IT(FSMC_IT));
mbed_official 52:a51c77007319 790
mbed_official 52:a51c77007319 791 if(FSMC_Bank == FSMC_Bank2_NAND)
mbed_official 52:a51c77007319 792 {
mbed_official 52:a51c77007319 793 tmpsr = FSMC_Bank2->SR2;
mbed_official 52:a51c77007319 794 }
mbed_official 52:a51c77007319 795 else if(FSMC_Bank == FSMC_Bank3_NAND)
mbed_official 52:a51c77007319 796 {
mbed_official 52:a51c77007319 797 tmpsr = FSMC_Bank3->SR3;
mbed_official 52:a51c77007319 798 }
mbed_official 52:a51c77007319 799 /* FSMC_Bank4_PCCARD*/
mbed_official 52:a51c77007319 800 else
mbed_official 52:a51c77007319 801 {
mbed_official 52:a51c77007319 802 tmpsr = FSMC_Bank4->SR4;
mbed_official 52:a51c77007319 803 }
mbed_official 52:a51c77007319 804
mbed_official 52:a51c77007319 805 itstatus = tmpsr & FSMC_IT;
mbed_official 52:a51c77007319 806
mbed_official 52:a51c77007319 807 itenable = tmpsr & (FSMC_IT >> 3);
mbed_official 52:a51c77007319 808 if ((itstatus != (uint32_t)RESET) && (itenable != (uint32_t)RESET))
mbed_official 52:a51c77007319 809 {
mbed_official 52:a51c77007319 810 bitstatus = SET;
mbed_official 52:a51c77007319 811 }
mbed_official 52:a51c77007319 812 else
mbed_official 52:a51c77007319 813 {
mbed_official 52:a51c77007319 814 bitstatus = RESET;
mbed_official 52:a51c77007319 815 }
mbed_official 52:a51c77007319 816 return bitstatus;
mbed_official 52:a51c77007319 817 }
mbed_official 52:a51c77007319 818
mbed_official 52:a51c77007319 819 /**
mbed_official 52:a51c77007319 820 * @brief Clears the FSMC's interrupt pending bits.
mbed_official 52:a51c77007319 821 * @param FSMC_Bank: specifies the FSMC Bank to be used
mbed_official 52:a51c77007319 822 * This parameter can be one of the following values:
mbed_official 52:a51c77007319 823 * @arg FSMC_Bank2_NAND: FSMC Bank2 NAND
mbed_official 52:a51c77007319 824 * @arg FSMC_Bank3_NAND: FSMC Bank3 NAND
mbed_official 52:a51c77007319 825 * @arg FSMC_Bank4_PCCARD: FSMC Bank4 PCCARD
mbed_official 52:a51c77007319 826 * @param FSMC_IT: specifies the interrupt pending bit to clear.
mbed_official 52:a51c77007319 827 * This parameter can be any combination of the following values:
mbed_official 52:a51c77007319 828 * @arg FSMC_IT_RisingEdge: Rising edge detection interrupt.
mbed_official 52:a51c77007319 829 * @arg FSMC_IT_Level: Level edge detection interrupt.
mbed_official 52:a51c77007319 830 * @arg FSMC_IT_FallingEdge: Falling edge detection interrupt.
mbed_official 52:a51c77007319 831 * @retval None
mbed_official 52:a51c77007319 832 */
mbed_official 52:a51c77007319 833 void FSMC_ClearITPendingBit(uint32_t FSMC_Bank, uint32_t FSMC_IT)
mbed_official 52:a51c77007319 834 {
mbed_official 52:a51c77007319 835 /* Check the parameters */
mbed_official 52:a51c77007319 836 assert_param(IS_FSMC_IT_BANK(FSMC_Bank));
mbed_official 52:a51c77007319 837 assert_param(IS_FSMC_IT(FSMC_IT));
mbed_official 52:a51c77007319 838
mbed_official 52:a51c77007319 839 if(FSMC_Bank == FSMC_Bank2_NAND)
mbed_official 52:a51c77007319 840 {
mbed_official 52:a51c77007319 841 FSMC_Bank2->SR2 &= ~(FSMC_IT >> 3);
mbed_official 52:a51c77007319 842 }
mbed_official 52:a51c77007319 843 else if(FSMC_Bank == FSMC_Bank3_NAND)
mbed_official 52:a51c77007319 844 {
mbed_official 52:a51c77007319 845 FSMC_Bank3->SR3 &= ~(FSMC_IT >> 3);
mbed_official 52:a51c77007319 846 }
mbed_official 52:a51c77007319 847 /* FSMC_Bank4_PCCARD*/
mbed_official 52:a51c77007319 848 else
mbed_official 52:a51c77007319 849 {
mbed_official 52:a51c77007319 850 FSMC_Bank4->SR4 &= ~(FSMC_IT >> 3);
mbed_official 52:a51c77007319 851 }
mbed_official 52:a51c77007319 852 }
mbed_official 52:a51c77007319 853
mbed_official 52:a51c77007319 854 /**
mbed_official 52:a51c77007319 855 * @}
mbed_official 52:a51c77007319 856 */
mbed_official 52:a51c77007319 857
mbed_official 52:a51c77007319 858 /**
mbed_official 52:a51c77007319 859 * @}
mbed_official 52:a51c77007319 860 */
mbed_official 52:a51c77007319 861
mbed_official 52:a51c77007319 862 /**
mbed_official 52:a51c77007319 863 * @}
mbed_official 52:a51c77007319 864 */
mbed_official 52:a51c77007319 865
mbed_official 52:a51c77007319 866 /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/