20#ifndef STM32F4xx_LL_FSMC_H
21#define STM32F4xx_LL_FSMC_H
41#if defined(FSMC_Bank1)
43#define IS_FSMC_NORSRAM_BANK(__BANK__) (((__BANK__) == FSMC_NORSRAM_BANK1) || \
44 ((__BANK__) == FSMC_NORSRAM_BANK2) || \
45 ((__BANK__) == FSMC_NORSRAM_BANK3) || \
46 ((__BANK__) == FSMC_NORSRAM_BANK4))
47#define IS_FSMC_MUX(__MUX__) (((__MUX__) == FSMC_DATA_ADDRESS_MUX_DISABLE) || \
48 ((__MUX__) == FSMC_DATA_ADDRESS_MUX_ENABLE))
49#define IS_FSMC_MEMORY(__MEMORY__) (((__MEMORY__) == FSMC_MEMORY_TYPE_SRAM) || \
50 ((__MEMORY__) == FSMC_MEMORY_TYPE_PSRAM)|| \
51 ((__MEMORY__) == FSMC_MEMORY_TYPE_NOR))
52#define IS_FSMC_NORSRAM_MEMORY_WIDTH(__WIDTH__) (((__WIDTH__) == FSMC_NORSRAM_MEM_BUS_WIDTH_8) || \
53 ((__WIDTH__) == FSMC_NORSRAM_MEM_BUS_WIDTH_16) || \
54 ((__WIDTH__) == FSMC_NORSRAM_MEM_BUS_WIDTH_32))
55#define IS_FSMC_PAGESIZE(__SIZE__) (((__SIZE__) == FSMC_PAGE_SIZE_NONE) || \
56 ((__SIZE__) == FSMC_PAGE_SIZE_128) || \
57 ((__SIZE__) == FSMC_PAGE_SIZE_256) || \
58 ((__SIZE__) == FSMC_PAGE_SIZE_512) || \
59 ((__SIZE__) == FSMC_PAGE_SIZE_1024))
60#if defined(FSMC_BCR1_WFDIS)
61#define IS_FSMC_WRITE_FIFO(__FIFO__) (((__FIFO__) == FSMC_WRITE_FIFO_DISABLE) || \
62 ((__FIFO__) == FSMC_WRITE_FIFO_ENABLE))
64#define IS_FSMC_ACCESS_MODE(__MODE__) (((__MODE__) == FSMC_ACCESS_MODE_A) || \
65 ((__MODE__) == FSMC_ACCESS_MODE_B) || \
66 ((__MODE__) == FSMC_ACCESS_MODE_C) || \
67 ((__MODE__) == FSMC_ACCESS_MODE_D))
68#define IS_FSMC_BURSTMODE(__STATE__) (((__STATE__) == FSMC_BURST_ACCESS_MODE_DISABLE) || \
69 ((__STATE__) == FSMC_BURST_ACCESS_MODE_ENABLE))
70#define IS_FSMC_WAIT_POLARITY(__POLARITY__) (((__POLARITY__) == FSMC_WAIT_SIGNAL_POLARITY_LOW) || \
71 ((__POLARITY__) == FSMC_WAIT_SIGNAL_POLARITY_HIGH))
72#define IS_FSMC_WRAP_MODE(__MODE__) (((__MODE__) == FSMC_WRAP_MODE_DISABLE) || \
73 ((__MODE__) == FSMC_WRAP_MODE_ENABLE))
74#define IS_FSMC_WAIT_SIGNAL_ACTIVE(__ACTIVE__) (((__ACTIVE__) == FSMC_WAIT_TIMING_BEFORE_WS) || \
75 ((__ACTIVE__) == FSMC_WAIT_TIMING_DURING_WS))
76#define IS_FSMC_WRITE_OPERATION(__OPERATION__) (((__OPERATION__) == FSMC_WRITE_OPERATION_DISABLE) || \
77 ((__OPERATION__) == FSMC_WRITE_OPERATION_ENABLE))
78#define IS_FSMC_WAITE_SIGNAL(__SIGNAL__) (((__SIGNAL__) == FSMC_WAIT_SIGNAL_DISABLE) || \
79 ((__SIGNAL__) == FSMC_WAIT_SIGNAL_ENABLE))
80#define IS_FSMC_EXTENDED_MODE(__MODE__) (((__MODE__) == FSMC_EXTENDED_MODE_DISABLE) || \
81 ((__MODE__) == FSMC_EXTENDED_MODE_ENABLE))
82#define IS_FSMC_ASYNWAIT(__STATE__) (((__STATE__) == FSMC_ASYNCHRONOUS_WAIT_DISABLE) || \
83 ((__STATE__) == FSMC_ASYNCHRONOUS_WAIT_ENABLE))
84#define IS_FSMC_DATA_LATENCY(__LATENCY__) (((__LATENCY__) > 1U) && ((__LATENCY__) <= 17U))
85#define IS_FSMC_WRITE_BURST(__BURST__) (((__BURST__) == FSMC_WRITE_BURST_DISABLE) || \
86 ((__BURST__) == FSMC_WRITE_BURST_ENABLE))
87#define IS_FSMC_CONTINOUS_CLOCK(__CCLOCK__) (((__CCLOCK__) == FSMC_CONTINUOUS_CLOCK_SYNC_ONLY) || \
88 ((__CCLOCK__) == FSMC_CONTINUOUS_CLOCK_SYNC_ASYNC))
89#define IS_FSMC_ADDRESS_SETUP_TIME(__TIME__) ((__TIME__) <= 15U)
90#define IS_FSMC_ADDRESS_HOLD_TIME(__TIME__) (((__TIME__) > 0U) && ((__TIME__) <= 15U))
91#define IS_FSMC_DATASETUP_TIME(__TIME__) (((__TIME__) > 0U) && ((__TIME__) <= 255U))
92#define IS_FSMC_DATAHOLD_DURATION(__DATAHOLD__) ((__DATAHOLD__) <= 3U)
93#define IS_FSMC_TURNAROUND_TIME(__TIME__) ((__TIME__) <= 15U)
94#define IS_FSMC_CLK_DIV(__DIV__) (((__DIV__) > 1U) && ((__DIV__) <= 16U))
95#define IS_FSMC_NORSRAM_DEVICE(__INSTANCE__) ((__INSTANCE__) == FSMC_NORSRAM_DEVICE)
96#define IS_FSMC_NORSRAM_EXTENDED_DEVICE(__INSTANCE__) ((__INSTANCE__) == FSMC_NORSRAM_EXTENDED_DEVICE)
99#if defined(FSMC_Bank2_3)
101#define IS_FSMC_NAND_BANK(__BANK__) (((__BANK__) == FSMC_NAND_BANK2) || \
102 ((__BANK__) == FSMC_NAND_BANK3))
103#define IS_FSMC_WAIT_FEATURE(__FEATURE__) (((__FEATURE__) == FSMC_NAND_PCC_WAIT_FEATURE_DISABLE) || \
104 ((__FEATURE__) == FSMC_NAND_PCC_WAIT_FEATURE_ENABLE))
105#define IS_FSMC_NAND_MEMORY_WIDTH(__WIDTH__) (((__WIDTH__) == FSMC_NAND_PCC_MEM_BUS_WIDTH_8) || \
106 ((__WIDTH__) == FSMC_NAND_PCC_MEM_BUS_WIDTH_16))
107#define IS_FSMC_ECC_STATE(__STATE__) (((__STATE__) == FSMC_NAND_ECC_DISABLE) || \
108 ((__STATE__) == FSMC_NAND_ECC_ENABLE))
110#define IS_FSMC_ECCPAGE_SIZE(__SIZE__) (((__SIZE__) == FSMC_NAND_ECC_PAGE_SIZE_256BYTE) || \
111 ((__SIZE__) == FSMC_NAND_ECC_PAGE_SIZE_512BYTE) || \
112 ((__SIZE__) == FSMC_NAND_ECC_PAGE_SIZE_1024BYTE) || \
113 ((__SIZE__) == FSMC_NAND_ECC_PAGE_SIZE_2048BYTE) || \
114 ((__SIZE__) == FSMC_NAND_ECC_PAGE_SIZE_4096BYTE) || \
115 ((__SIZE__) == FSMC_NAND_ECC_PAGE_SIZE_8192BYTE))
116#define IS_FSMC_TCLR_TIME(__TIME__) ((__TIME__) <= 255U)
117#define IS_FSMC_TAR_TIME(__TIME__) ((__TIME__) <= 255U)
118#define IS_FSMC_SETUP_TIME(__TIME__) ((__TIME__) <= 254U)
119#define IS_FSMC_WAIT_TIME(__TIME__) ((__TIME__) <= 254U)
120#define IS_FSMC_HOLD_TIME(__TIME__) ((__TIME__) <= 254U)
121#define IS_FSMC_HIZ_TIME(__TIME__) ((__TIME__) <= 254U)
122#define IS_FSMC_NAND_DEVICE(__INSTANCE__) ((__INSTANCE__) == FSMC_NAND_DEVICE)
125#if defined(FSMC_Bank4)
126#define IS_FSMC_PCCARD_DEVICE(__INSTANCE__) ((__INSTANCE__) == FSMC_PCCARD_DEVICE)
140#if defined(FSMC_Bank1)
141#define FSMC_NORSRAM_TypeDef FSMC_Bank1_TypeDef
142#define FSMC_NORSRAM_EXTENDED_TypeDef FSMC_Bank1E_TypeDef
144#if defined(FSMC_Bank2_3)
145#define FSMC_NAND_TypeDef FSMC_Bank2_3_TypeDef
147#if defined(FSMC_Bank4)
148#define FSMC_PCCARD_TypeDef FSMC_Bank4_TypeDef
151#if defined(FSMC_Bank1)
152#define FSMC_NORSRAM_DEVICE FSMC_Bank1
153#define FSMC_NORSRAM_EXTENDED_DEVICE FSMC_Bank1E
155#if defined(FSMC_Bank2_3)
156#define FSMC_NAND_DEVICE FSMC_Bank2_3
158#if defined(FSMC_Bank4)
159#define FSMC_PCCARD_DEVICE FSMC_Bank4
162#if defined(FSMC_Bank1)
171 uint32_t DataAddressMux;
179 uint32_t MemoryDataWidth;
182 uint32_t BurstAccessMode;
186 uint32_t WaitSignalPolarity;
195 uint32_t WaitSignalActive;
200 uint32_t WriteOperation;
208 uint32_t ExtendedMode;
211 uint32_t AsynchronousWait;
218 uint32_t ContinuousClock;
232} FSMC_NORSRAM_InitTypeDef;
239 uint32_t AddressSetupTime;
244 uint32_t AddressHoldTime;
249 uint32_t DataSetupTime;
255 uint32_t BusTurnAroundDuration;
260 uint32_t CLKDivision;
266 uint32_t DataLatency;
276} FSMC_NORSRAM_TimingTypeDef;
279#if defined(FSMC_Bank2_3)
288 uint32_t Waitfeature;
291 uint32_t MemoryDataWidth;
294 uint32_t EccComputation;
297 uint32_t ECCPageSize;
300 uint32_t TCLRSetupTime;
304 uint32_t TARSetupTime;
307} FSMC_NAND_InitTypeDef;
310#if defined(FSMC_Bank2_3) || defined(FSMC_Bank4)
322 uint32_t WaitSetupTime;
328 uint32_t HoldSetupTime;
335 uint32_t HiZSetupTime;
340} FSMC_NAND_PCC_TimingTypeDef;
343#if defined(FSMC_Bank4)
349 uint32_t Waitfeature;
352 uint32_t TCLRSetupTime;
356 uint32_t TARSetupTime;
359} FSMC_PCCARD_InitTypeDef;
370#if defined(FSMC_Bank1)
379#define FSMC_NORSRAM_BANK1 (0x00000000U)
380#define FSMC_NORSRAM_BANK2 (0x00000002U)
381#define FSMC_NORSRAM_BANK3 (0x00000004U)
382#define FSMC_NORSRAM_BANK4 (0x00000006U)
390#define FSMC_DATA_ADDRESS_MUX_DISABLE (0x00000000U)
391#define FSMC_DATA_ADDRESS_MUX_ENABLE (0x00000002U)
399#define FSMC_MEMORY_TYPE_SRAM (0x00000000U)
400#define FSMC_MEMORY_TYPE_PSRAM (0x00000004U)
401#define FSMC_MEMORY_TYPE_NOR (0x00000008U)
409#define FSMC_NORSRAM_MEM_BUS_WIDTH_8 (0x00000000U)
410#define FSMC_NORSRAM_MEM_BUS_WIDTH_16 (0x00000010U)
411#define FSMC_NORSRAM_MEM_BUS_WIDTH_32 (0x00000020U)
419#define FSMC_NORSRAM_FLASH_ACCESS_ENABLE (0x00000040U)
420#define FSMC_NORSRAM_FLASH_ACCESS_DISABLE (0x00000000U)
428#define FSMC_BURST_ACCESS_MODE_DISABLE (0x00000000U)
429#define FSMC_BURST_ACCESS_MODE_ENABLE (0x00000100U)
437#define FSMC_WAIT_SIGNAL_POLARITY_LOW (0x00000000U)
438#define FSMC_WAIT_SIGNAL_POLARITY_HIGH (0x00000200U)
447#define FSMC_WRAP_MODE_DISABLE (0x00000000U)
448#define FSMC_WRAP_MODE_ENABLE (0x00000400U)
456#define FSMC_WAIT_TIMING_BEFORE_WS (0x00000000U)
457#define FSMC_WAIT_TIMING_DURING_WS (0x00000800U)
465#define FSMC_WRITE_OPERATION_DISABLE (0x00000000U)
466#define FSMC_WRITE_OPERATION_ENABLE (0x00001000U)
474#define FSMC_WAIT_SIGNAL_DISABLE (0x00000000U)
475#define FSMC_WAIT_SIGNAL_ENABLE (0x00002000U)
483#define FSMC_EXTENDED_MODE_DISABLE (0x00000000U)
484#define FSMC_EXTENDED_MODE_ENABLE (0x00004000U)
492#define FSMC_ASYNCHRONOUS_WAIT_DISABLE (0x00000000U)
493#define FSMC_ASYNCHRONOUS_WAIT_ENABLE (0x00008000U)
501#define FSMC_PAGE_SIZE_NONE (0x00000000U)
502#define FSMC_PAGE_SIZE_128 FSMC_BCR1_CPSIZE_0
503#define FSMC_PAGE_SIZE_256 FSMC_BCR1_CPSIZE_1
504#define FSMC_PAGE_SIZE_512 (FSMC_BCR1_CPSIZE_0\
505 | FSMC_BCR1_CPSIZE_1)
506#define FSMC_PAGE_SIZE_1024 FSMC_BCR1_CPSIZE_2
514#define FSMC_WRITE_BURST_DISABLE (0x00000000U)
515#define FSMC_WRITE_BURST_ENABLE (0x00080000U)
524#define FSMC_CONTINUOUS_CLOCK_SYNC_ONLY (0x00000000U)
525#define FSMC_CONTINUOUS_CLOCK_SYNC_ASYNC (0x00100000U)
530#if defined(FSMC_BCR1_WFDIS)
535#define FSMC_WRITE_FIFO_DISABLE FSMC_BCR1_WFDIS
536#define FSMC_WRITE_FIFO_ENABLE (0x00000000U)
545#define FSMC_ACCESS_MODE_A (0x00000000U)
546#define FSMC_ACCESS_MODE_B (0x10000000U)
547#define FSMC_ACCESS_MODE_C (0x20000000U)
548#define FSMC_ACCESS_MODE_D (0x30000000U)
558#if defined(FSMC_Bank2_3) || defined(FSMC_Bank4)
566#if defined(FSMC_Bank2_3)
567#define FSMC_NAND_BANK2 (0x00000010U)
569#define FSMC_NAND_BANK3 (0x00000100U)
577#define FSMC_NAND_PCC_WAIT_FEATURE_DISABLE (0x00000000U)
578#define FSMC_NAND_PCC_WAIT_FEATURE_ENABLE (0x00000002U)
586#if defined(FSMC_Bank4)
587#define FSMC_PCR_MEMORY_TYPE_PCCARD (0x00000000U)
589#define FSMC_PCR_MEMORY_TYPE_NAND (0x00000008U)
597#define FSMC_NAND_PCC_MEM_BUS_WIDTH_8 (0x00000000U)
598#define FSMC_NAND_PCC_MEM_BUS_WIDTH_16 (0x00000010U)
606#define FSMC_NAND_ECC_DISABLE (0x00000000U)
607#define FSMC_NAND_ECC_ENABLE (0x00000040U)
615#define FSMC_NAND_ECC_PAGE_SIZE_256BYTE (0x00000000U)
616#define FSMC_NAND_ECC_PAGE_SIZE_512BYTE (0x00020000U)
617#define FSMC_NAND_ECC_PAGE_SIZE_1024BYTE (0x00040000U)
618#define FSMC_NAND_ECC_PAGE_SIZE_2048BYTE (0x00060000U)
619#define FSMC_NAND_ECC_PAGE_SIZE_4096BYTE (0x00080000U)
620#define FSMC_NAND_ECC_PAGE_SIZE_8192BYTE (0x000A0000U)
634#if defined(FSMC_Bank2_3) || defined(FSMC_Bank4)
635#define FSMC_IT_RISING_EDGE (0x00000008U)
636#define FSMC_IT_LEVEL (0x00000010U)
637#define FSMC_IT_FALLING_EDGE (0x00000020U)
646#if defined(FSMC_Bank2_3) || defined(FSMC_Bank4)
647#define FSMC_FLAG_RISING_EDGE (0x00000001U)
648#define FSMC_FLAG_LEVEL (0x00000002U)
649#define FSMC_FLAG_FALLING_EDGE (0x00000004U)
650#define FSMC_FLAG_FEMPT (0x00000040U)
659#define FMC_WRITE_OPERATION_DISABLE FSMC_WRITE_OPERATION_DISABLE
660#define FMC_WRITE_OPERATION_ENABLE FSMC_WRITE_OPERATION_ENABLE
662#define FMC_NORSRAM_MEM_BUS_WIDTH_8 FSMC_NORSRAM_MEM_BUS_WIDTH_8
663#define FMC_NORSRAM_MEM_BUS_WIDTH_16 FSMC_NORSRAM_MEM_BUS_WIDTH_16
664#define FMC_NORSRAM_MEM_BUS_WIDTH_32 FSMC_NORSRAM_MEM_BUS_WIDTH_32
666#define FMC_NORSRAM_TypeDef FSMC_NORSRAM_TypeDef
667#define FMC_NORSRAM_EXTENDED_TypeDef FSMC_NORSRAM_EXTENDED_TypeDef
668#define FMC_NORSRAM_InitTypeDef FSMC_NORSRAM_InitTypeDef
669#define FMC_NORSRAM_TimingTypeDef FSMC_NORSRAM_TimingTypeDef
671#define FMC_NORSRAM_Init FSMC_NORSRAM_Init
672#define FMC_NORSRAM_Timing_Init FSMC_NORSRAM_Timing_Init
673#define FMC_NORSRAM_Extended_Timing_Init FSMC_NORSRAM_Extended_Timing_Init
674#define FMC_NORSRAM_DeInit FSMC_NORSRAM_DeInit
675#define FMC_NORSRAM_WriteOperation_Enable FSMC_NORSRAM_WriteOperation_Enable
676#define FMC_NORSRAM_WriteOperation_Disable FSMC_NORSRAM_WriteOperation_Disable
678#define __FMC_NORSRAM_ENABLE __FSMC_NORSRAM_ENABLE
679#define __FMC_NORSRAM_DISABLE __FSMC_NORSRAM_DISABLE
681#if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx)
682#define FMC_NAND_InitTypeDef FSMC_NAND_InitTypeDef
683#define FMC_PCCARD_InitTypeDef FSMC_PCCARD_InitTypeDef
684#define FMC_NAND_PCC_TimingTypeDef FSMC_NAND_PCC_TimingTypeDef
686#define FMC_NAND_Init FSMC_NAND_Init
687#define FMC_NAND_CommonSpace_Timing_Init FSMC_NAND_CommonSpace_Timing_Init
688#define FMC_NAND_AttributeSpace_Timing_Init FSMC_NAND_AttributeSpace_Timing_Init
689#define FMC_NAND_DeInit FSMC_NAND_DeInit
690#define FMC_NAND_ECC_Enable FSMC_NAND_ECC_Enable
691#define FMC_NAND_ECC_Disable FSMC_NAND_ECC_Disable
692#define FMC_NAND_GetECC FSMC_NAND_GetECC
693#define FMC_PCCARD_Init FSMC_PCCARD_Init
694#define FMC_PCCARD_CommonSpace_Timing_Init FSMC_PCCARD_CommonSpace_Timing_Init
695#define FMC_PCCARD_AttributeSpace_Timing_Init FSMC_PCCARD_AttributeSpace_Timing_Init
696#define FMC_PCCARD_IOSpace_Timing_Init FSMC_PCCARD_IOSpace_Timing_Init
697#define FMC_PCCARD_DeInit FSMC_PCCARD_DeInit
699#define __FMC_NAND_ENABLE __FSMC_NAND_ENABLE
700#define __FMC_NAND_DISABLE __FSMC_NAND_DISABLE
701#define __FMC_PCCARD_ENABLE __FSMC_PCCARD_ENABLE
702#define __FMC_PCCARD_DISABLE __FSMC_PCCARD_DISABLE
703#define __FMC_NAND_ENABLE_IT __FSMC_NAND_ENABLE_IT
704#define __FMC_NAND_DISABLE_IT __FSMC_NAND_DISABLE_IT
705#define __FMC_NAND_GET_FLAG __FSMC_NAND_GET_FLAG
706#define __FMC_NAND_CLEAR_FLAG __FSMC_NAND_CLEAR_FLAG
707#define __FMC_PCCARD_ENABLE_IT __FSMC_PCCARD_ENABLE_IT
708#define __FMC_PCCARD_DISABLE_IT __FSMC_PCCARD_DISABLE_IT
709#define __FMC_PCCARD_GET_FLAG __FSMC_PCCARD_GET_FLAG
710#define __FMC_PCCARD_CLEAR_FLAG __FSMC_PCCARD_CLEAR_FLAG
713#define FMC_NORSRAM_TypeDef FSMC_NORSRAM_TypeDef
714#define FMC_NORSRAM_EXTENDED_TypeDef FSMC_NORSRAM_EXTENDED_TypeDef
715#if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx)
716#define FMC_NAND_TypeDef FSMC_NAND_TypeDef
717#define FMC_PCCARD_TypeDef FSMC_PCCARD_TypeDef
720#define FMC_NORSRAM_DEVICE FSMC_NORSRAM_DEVICE
721#define FMC_NORSRAM_EXTENDED_DEVICE FSMC_NORSRAM_EXTENDED_DEVICE
722#if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx)
723#define FMC_NAND_DEVICE FSMC_NAND_DEVICE
724#define FMC_PCCARD_DEVICE FSMC_PCCARD_DEVICE
726#define FMC_NAND_BANK2 FSMC_NAND_BANK2
729#define FMC_NORSRAM_BANK1 FSMC_NORSRAM_BANK1
730#define FMC_NORSRAM_BANK2 FSMC_NORSRAM_BANK2
731#define FMC_NORSRAM_BANK3 FSMC_NORSRAM_BANK3
733#define FMC_IT_RISING_EDGE FSMC_IT_RISING_EDGE
734#define FMC_IT_LEVEL FSMC_IT_LEVEL
735#define FMC_IT_FALLING_EDGE FSMC_IT_FALLING_EDGE
736#define FMC_IT_REFRESH_ERROR FSMC_IT_REFRESH_ERROR
738#define FMC_FLAG_RISING_EDGE FSMC_FLAG_RISING_EDGE
739#define FMC_FLAG_LEVEL FSMC_FLAG_LEVEL
740#define FMC_FLAG_FALLING_EDGE FSMC_FLAG_FALLING_EDGE
741#define FMC_FLAG_FEMPT FSMC_FLAG_FEMPT
758#if defined(FSMC_Bank1)
770#define __FSMC_NORSRAM_ENABLE(__INSTANCE__, __BANK__) ((__INSTANCE__)->BTCR[(__BANK__)]\
779#define __FSMC_NORSRAM_DISABLE(__INSTANCE__, __BANK__) ((__INSTANCE__)->BTCR[(__BANK__)]\
787#if defined(FSMC_Bank2_3)
799#define __FSMC_NAND_ENABLE(__INSTANCE__, __BANK__) (((__BANK__) == FSMC_NAND_BANK2) ? \
800 ((__INSTANCE__)->PCR2 |= FSMC_PCR2_PBKEN) : \
801 ((__INSTANCE__)->PCR3 |= FSMC_PCR3_PBKEN))
809#define __FSMC_NAND_DISABLE(__INSTANCE__, __BANK__) (((__BANK__) == FSMC_NAND_BANK2) ? \
810 CLEAR_BIT((__INSTANCE__)->PCR2, FSMC_PCR2_PBKEN) : \
811 CLEAR_BIT((__INSTANCE__)->PCR3, FSMC_PCR3_PBKEN))
818#if defined(FSMC_Bank4)
828#define __FSMC_PCCARD_ENABLE(__INSTANCE__) ((__INSTANCE__)->PCR4 |= FSMC_PCR4_PBKEN)
835#define __FSMC_PCCARD_DISABLE(__INSTANCE__) ((__INSTANCE__)->PCR4 &= ~FSMC_PCR4_PBKEN)
841#if defined(FSMC_Bank2_3)
858#define __FSMC_NAND_ENABLE_IT(__INSTANCE__, __BANK__, __INTERRUPT__) (((__BANK__) == FSMC_NAND_BANK2) ? \
859 ((__INSTANCE__)->SR2 |= (__INTERRUPT__)) : \
860 ((__INSTANCE__)->SR3 |= (__INTERRUPT__)))
873#define __FSMC_NAND_DISABLE_IT(__INSTANCE__, __BANK__, __INTERRUPT__) (((__BANK__) == FSMC_NAND_BANK2) ? \
874 ((__INSTANCE__)->SR2 &= ~(__INTERRUPT__)) : \
875 ((__INSTANCE__)->SR3 &= ~(__INTERRUPT__)))
889#define __FSMC_NAND_GET_FLAG(__INSTANCE__, __BANK__, __FLAG__) (((__BANK__) == FSMC_NAND_BANK2) ? \
890 (((__INSTANCE__)->SR2 &(__FLAG__)) == (__FLAG__)) : \
891 (((__INSTANCE__)->SR3 &(__FLAG__)) == (__FLAG__)))
905#define __FSMC_NAND_CLEAR_FLAG(__INSTANCE__, __BANK__, __FLAG__) (((__BANK__) == FSMC_NAND_BANK2) ? \
906 ((__INSTANCE__)->SR2 &= ~(__FLAG__)) : \
907 ((__INSTANCE__)->SR3 &= ~(__FLAG__)))
914#if defined(FSMC_Bank4)
930#define __FSMC_PCCARD_ENABLE_IT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->SR4 |= (__INTERRUPT__))
942#define __FSMC_PCCARD_DISABLE_IT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->SR4 &= ~(__INTERRUPT__))
955#define __FSMC_PCCARD_GET_FLAG(__INSTANCE__, __FLAG__) (((__INSTANCE__)->SR4 &(__FLAG__)) == (__FLAG__))
968#define __FSMC_PCCARD_CLEAR_FLAG(__INSTANCE__, __FLAG__) ((__INSTANCE__)->SR4 &= ~(__FLAG__))
988#if defined(FSMC_Bank1)
996 const FSMC_NORSRAM_InitTypeDef *Init);
998 const FSMC_NORSRAM_TimingTypeDef *Timing, uint32_t Bank);
999HAL_StatusTypeDef FSMC_NORSRAM_Extended_Timing_Init(FSMC_NORSRAM_EXTENDED_TypeDef *Device,
1000 const FSMC_NORSRAM_TimingTypeDef *Timing, uint32_t Bank,
1001 uint32_t ExtendedMode);
1003 FSMC_NORSRAM_EXTENDED_TypeDef *ExDevice, uint32_t Bank);
1011HAL_StatusTypeDef FSMC_NORSRAM_WriteOperation_Enable(FSMC_NORSRAM_TypeDef *Device, uint32_t Bank);
1012HAL_StatusTypeDef FSMC_NORSRAM_WriteOperation_Disable(FSMC_NORSRAM_TypeDef *Device, uint32_t Bank);
1021#if defined(FSMC_Bank2_3)
1028HAL_StatusTypeDef FSMC_NAND_Init(FSMC_NAND_TypeDef *Device,
const FSMC_NAND_InitTypeDef *Init);
1030 const FSMC_NAND_PCC_TimingTypeDef *Timing, uint32_t Bank);
1031HAL_StatusTypeDef FSMC_NAND_AttributeSpace_Timing_Init(FSMC_NAND_TypeDef *Device,
1032 const FSMC_NAND_PCC_TimingTypeDef *Timing, uint32_t Bank);
1041HAL_StatusTypeDef FSMC_NAND_ECC_Enable(FSMC_NAND_TypeDef *Device, uint32_t Bank);
1042HAL_StatusTypeDef FSMC_NAND_ECC_Disable(FSMC_NAND_TypeDef *Device, uint32_t Bank);
1043HAL_StatusTypeDef FSMC_NAND_GetECC(
const FSMC_NAND_TypeDef *Device, uint32_t *ECCval, uint32_t Bank,
1053#if defined(FSMC_Bank4)
1060HAL_StatusTypeDef FSMC_PCCARD_Init(FSMC_PCCARD_TypeDef *Device,
const FSMC_PCCARD_InitTypeDef *Init);
1061HAL_StatusTypeDef FSMC_PCCARD_CommonSpace_Timing_Init(FSMC_PCCARD_TypeDef *Device,
1062 const FSMC_NAND_PCC_TimingTypeDef *Timing);
1063HAL_StatusTypeDef FSMC_PCCARD_AttributeSpace_Timing_Init(FSMC_PCCARD_TypeDef *Device,
1064 const FSMC_NAND_PCC_TimingTypeDef *Timing);
1066 const FSMC_NAND_PCC_TimingTypeDef *Timing);
This file contains HAL common defines, enumeration, macros and structures definitions.
HAL_StatusTypeDef
HAL Status structures definition.