Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of TUKS-COURSE-TIMER by
stm32l4xx_hal_sd.h
00001 /** 00002 ****************************************************************************** 00003 * @file stm32l4xx_hal_sd.h 00004 * @author MCD Application Team 00005 * @version V1.5.1 00006 * @date 31-May-2016 00007 * @brief Header file of SD HAL module. 00008 ****************************************************************************** 00009 * @attention 00010 * 00011 * <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2> 00012 * 00013 * Redistribution and use in source and binary forms, with or without modification, 00014 * are permitted provided that the following conditions are met: 00015 * 1. Redistributions of source code must retain the above copyright notice, 00016 * this list of conditions and the following disclaimer. 00017 * 2. Redistributions in binary form must reproduce the above copyright notice, 00018 * this list of conditions and the following disclaimer in the documentation 00019 * and/or other materials provided with the distribution. 00020 * 3. Neither the name of STMicroelectronics nor the names of its contributors 00021 * may be used to endorse or promote products derived from this software 00022 * without specific prior written permission. 00023 * 00024 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 00025 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00026 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 00027 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 00028 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 00029 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 00030 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 00031 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 00032 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 00033 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00034 * 00035 ****************************************************************************** 00036 */ 00037 00038 /* Define to prevent recursive inclusion -------------------------------------*/ 00039 #ifndef __STM32L4xx_HAL_SD_H 00040 #define __STM32L4xx_HAL_SD_H 00041 00042 #ifdef __cplusplus 00043 extern "C" { 00044 #endif 00045 00046 #if defined(SDMMC1) 00047 00048 /* Includes ------------------------------------------------------------------*/ 00049 #include "stm32l4xx_ll_sdmmc.h" 00050 00051 /** @addtogroup STM32L4xx_HAL_Driver 00052 * @{ 00053 */ 00054 00055 /** @defgroup SD SD 00056 * @brief SD HAL module driver 00057 * @{ 00058 */ 00059 00060 /* Exported types ------------------------------------------------------------*/ 00061 /** @defgroup SD_Exported_Types SD Exported Types 00062 * @{ 00063 */ 00064 00065 /** @defgroup SD_Exported_Types_Group1 SD Handle Structure definition 00066 * @{ 00067 */ 00068 #define SD_InitTypeDef SDMMC_InitTypeDef 00069 #define SD_TypeDef SDMMC_TypeDef 00070 00071 typedef struct 00072 { 00073 SD_TypeDef *Instance; /*!< SDMMC register base address */ 00074 00075 SD_InitTypeDef Init; /*!< SD required parameters */ 00076 00077 HAL_LockTypeDef Lock; /*!< SD locking object */ 00078 00079 uint32_t CardType; /*!< SD card type */ 00080 00081 uint32_t RCA; /*!< SD relative card address */ 00082 00083 uint32_t CSD[4]; /*!< SD card specific data table */ 00084 00085 uint32_t CID[4]; /*!< SD card identification number table */ 00086 00087 __IO uint32_t SdTransferCplt; /*!< SD transfer complete flag in non blocking mode */ 00088 00089 __IO uint32_t SdTransferErr; /*!< SD transfer error flag in non blocking mode */ 00090 00091 __IO uint32_t DmaTransferCplt; /*!< SD DMA transfer complete flag */ 00092 00093 __IO uint32_t SdOperation; /*!< SD transfer operation (read/write) */ 00094 00095 DMA_HandleTypeDef *hdmarx; /*!< SD Rx DMA handle parameters */ 00096 00097 DMA_HandleTypeDef *hdmatx; /*!< SD Tx DMA handle parameters */ 00098 00099 }SD_HandleTypeDef; 00100 /** 00101 * @} 00102 */ 00103 00104 /** @defgroup SD_Exported_Types_Group2 Card Specific Data: CSD Register 00105 * @{ 00106 */ 00107 typedef struct 00108 { 00109 __IO uint8_t CSDStruct; /*!< CSD structure */ 00110 __IO uint8_t SysSpecVersion; /*!< System specification version */ 00111 __IO uint8_t Reserved1; /*!< Reserved */ 00112 __IO uint8_t TAAC; /*!< Data read access time 1 */ 00113 __IO uint8_t NSAC; /*!< Data read access time 2 in CLK cycles */ 00114 __IO uint8_t MaxBusClkFrec; /*!< Max. bus clock frequency */ 00115 __IO uint16_t CardComdClasses; /*!< Card command classes */ 00116 __IO uint8_t RdBlockLen; /*!< Max. read data block length */ 00117 __IO uint8_t PartBlockRead; /*!< Partial blocks for read allowed */ 00118 __IO uint8_t WrBlockMisalign; /*!< Write block misalignment */ 00119 __IO uint8_t RdBlockMisalign; /*!< Read block misalignment */ 00120 __IO uint8_t DSRImpl; /*!< DSR implemented */ 00121 __IO uint8_t Reserved2; /*!< Reserved */ 00122 __IO uint32_t DeviceSize; /*!< Device Size */ 00123 __IO uint8_t MaxRdCurrentVDDMin; /*!< Max. read current @ VDD min */ 00124 __IO uint8_t MaxRdCurrentVDDMax; /*!< Max. read current @ VDD max */ 00125 __IO uint8_t MaxWrCurrentVDDMin; /*!< Max. write current @ VDD min */ 00126 __IO uint8_t MaxWrCurrentVDDMax; /*!< Max. write current @ VDD max */ 00127 __IO uint8_t DeviceSizeMul; /*!< Device size multiplier */ 00128 __IO uint8_t EraseGrSize; /*!< Erase group size */ 00129 __IO uint8_t EraseGrMul; /*!< Erase group size multiplier */ 00130 __IO uint8_t WrProtectGrSize; /*!< Write protect group size */ 00131 __IO uint8_t WrProtectGrEnable; /*!< Write protect group enable */ 00132 __IO uint8_t ManDeflECC; /*!< Manufacturer default ECC */ 00133 __IO uint8_t WrSpeedFact; /*!< Write speed factor */ 00134 __IO uint8_t MaxWrBlockLen; /*!< Max. write data block length */ 00135 __IO uint8_t WriteBlockPaPartial; /*!< Partial blocks for write allowed */ 00136 __IO uint8_t Reserved3; /*!< Reserved */ 00137 __IO uint8_t ContentProtectAppli; /*!< Content protection application */ 00138 __IO uint8_t FileFormatGrouop; /*!< File format group */ 00139 __IO uint8_t CopyFlag; /*!< Copy flag (OTP) */ 00140 __IO uint8_t PermWrProtect; /*!< Permanent write protection */ 00141 __IO uint8_t TempWrProtect; /*!< Temporary write protection */ 00142 __IO uint8_t FileFormat; /*!< File format */ 00143 __IO uint8_t ECC; /*!< ECC code */ 00144 __IO uint8_t CSD_CRC; /*!< CSD CRC */ 00145 __IO uint8_t Reserved4; /*!< Always 1 */ 00146 00147 }HAL_SD_CSDTypedef; 00148 /** 00149 * @} 00150 */ 00151 00152 /** @defgroup SD_Exported_Types_Group3 Card Identification Data: CID Register 00153 * @{ 00154 */ 00155 typedef struct 00156 { 00157 __IO uint8_t ManufacturerID; /*!< Manufacturer ID */ 00158 __IO uint16_t OEM_AppliID; /*!< OEM/Application ID */ 00159 __IO uint32_t ProdName1; /*!< Product Name part1 */ 00160 __IO uint8_t ProdName2; /*!< Product Name part2 */ 00161 __IO uint8_t ProdRev; /*!< Product Revision */ 00162 __IO uint32_t ProdSN; /*!< Product Serial Number */ 00163 __IO uint8_t Reserved1; /*!< Reserved1 */ 00164 __IO uint16_t ManufactDate; /*!< Manufacturing Date */ 00165 __IO uint8_t CID_CRC; /*!< CID CRC */ 00166 __IO uint8_t Reserved2; /*!< Always 1 */ 00167 00168 }HAL_SD_CIDTypedef; 00169 /** 00170 * @} 00171 */ 00172 00173 /** @defgroup SD_Exported_Types_Group4 SD Card Status returned by ACMD13 00174 * @{ 00175 */ 00176 typedef struct 00177 { 00178 __IO uint8_t DAT_BUS_WIDTH; /*!< Shows the currently defined data bus width */ 00179 __IO uint8_t SECURED_MODE; /*!< Card is in secured mode of operation */ 00180 __IO uint16_t SD_CARD_TYPE; /*!< Carries information about card type */ 00181 __IO uint32_t SIZE_OF_PROTECTED_AREA; /*!< Carries information about the capacity of protected area */ 00182 __IO uint8_t SPEED_CLASS; /*!< Carries information about the speed class of the card */ 00183 __IO uint8_t PERFORMANCE_MOVE; /*!< Carries information about the card's performance move */ 00184 __IO uint8_t AU_SIZE; /*!< Carries information about the card's allocation unit size */ 00185 __IO uint16_t ERASE_SIZE; /*!< Determines the number of AUs to be erased in one operation */ 00186 __IO uint8_t ERASE_TIMEOUT; /*!< Determines the timeout for any number of AU erase */ 00187 __IO uint8_t ERASE_OFFSET; /*!< Carries information about the erase offset */ 00188 00189 }HAL_SD_CardStatusTypedef; 00190 /** 00191 * @} 00192 */ 00193 00194 /** @defgroup SD_Exported_Types_Group5 SD Card information structure 00195 * @{ 00196 */ 00197 typedef struct 00198 { 00199 HAL_SD_CSDTypedef SD_csd; /*!< SD card specific data register */ 00200 HAL_SD_CIDTypedef SD_cid; /*!< SD card identification number register */ 00201 uint64_t CardCapacity; /*!< Card capacity */ 00202 uint32_t CardBlockSize; /*!< Card block size */ 00203 uint16_t RCA; /*!< SD relative card address */ 00204 uint8_t CardType; /*!< SD card type */ 00205 00206 }HAL_SD_CardInfoTypedef; 00207 /** 00208 * @} 00209 */ 00210 00211 /** @defgroup SD_Exported_Types_Group6 SD Error status enumeration Structure definition 00212 * @{ 00213 */ 00214 typedef enum 00215 { 00216 /** 00217 * @brief SD specific error defines 00218 */ 00219 SD_CMD_CRC_FAIL = (1), /*!< Command response received (but CRC check failed) */ 00220 SD_DATA_CRC_FAIL = (2), /*!< Data block sent/received (CRC check failed) */ 00221 SD_CMD_RSP_TIMEOUT = (3), /*!< Command response timeout */ 00222 SD_DATA_TIMEOUT = (4), /*!< Data timeout */ 00223 SD_TX_UNDERRUN = (5), /*!< Transmit FIFO underrun */ 00224 SD_RX_OVERRUN = (6), /*!< Receive FIFO overrun */ 00225 SD_START_BIT_ERR = (7), /*!< Start bit not detected on all data signals in wide bus mode */ 00226 SD_CMD_OUT_OF_RANGE = (8), /*!< Command's argument was out of range. */ 00227 SD_ADDR_MISALIGNED = (9), /*!< Misaligned address */ 00228 SD_BLOCK_LEN_ERR = (10), /*!< Transferred block length is not allowed for the card or the number of transferred bytes does not match the block length */ 00229 SD_ERASE_SEQ_ERR = (11), /*!< An error in the sequence of erase command occurs. */ 00230 SD_BAD_ERASE_PARAM = (12), /*!< An invalid selection for erase groups */ 00231 SD_WRITE_PROT_VIOLATION = (13), /*!< Attempt to program a write protect block */ 00232 SD_LOCK_UNLOCK_FAILED = (14), /*!< Sequence or password error has been detected in unlock command or if there was an attempt to access a locked card */ 00233 SD_COM_CRC_FAILED = (15), /*!< CRC check of the previous command failed */ 00234 SD_ILLEGAL_CMD = (16), /*!< Command is not legal for the card state */ 00235 SD_CARD_ECC_FAILED = (17), /*!< Card internal ECC was applied but failed to correct the data */ 00236 SD_CC_ERROR = (18), /*!< Internal card controller error */ 00237 SD_GENERAL_UNKNOWN_ERROR = (19), /*!< General or unknown error */ 00238 SD_STREAM_READ_UNDERRUN = (20), /*!< The card could not sustain data transfer in stream read operation. */ 00239 SD_STREAM_WRITE_OVERRUN = (21), /*!< The card could not sustain data programming in stream mode */ 00240 SD_CID_CSD_OVERWRITE = (22), /*!< CID/CSD overwrite error */ 00241 SD_WP_ERASE_SKIP = (23), /*!< Only partial address space was erased */ 00242 SD_CARD_ECC_DISABLED = (24), /*!< Command has been executed without using internal ECC */ 00243 SD_ERASE_RESET = (25), /*!< Erase sequence was cleared before executing because an out of erase sequence command was received */ 00244 SD_AKE_SEQ_ERROR = (26), /*!< Error in sequence of authentication. */ 00245 SD_INVALID_VOLTRANGE = (27), 00246 SD_ADDR_OUT_OF_RANGE = (28), 00247 SD_SWITCH_ERROR = (29), 00248 SD_SDMMC_DISABLED = (30), 00249 SD_SDMMC_FUNCTION_BUSY = (31), 00250 SD_SDMMC_FUNCTION_FAILED = (32), 00251 SD_SDMMC_UNKNOWN_FUNCTION = (33), 00252 00253 /** 00254 * @brief Standard error defines 00255 */ 00256 SD_INTERNAL_ERROR = (34), 00257 SD_NOT_CONFIGURED = (35), 00258 SD_REQUEST_PENDING = (36), 00259 SD_REQUEST_NOT_APPLICABLE = (37), 00260 SD_INVALID_PARAMETER = (38), 00261 SD_UNSUPPORTED_FEATURE = (39), 00262 SD_UNSUPPORTED_HW = (40), 00263 SD_ERROR = (41), 00264 SD_OK = (0) 00265 00266 }HAL_SD_ErrorTypedef; 00267 /** 00268 * @} 00269 */ 00270 00271 /** @defgroup SD_Exported_Types_Group7 SD Transfer state enumeration structure 00272 * @{ 00273 */ 00274 typedef enum 00275 { 00276 SD_TRANSFER_OK = 0, /*!< Transfer success */ 00277 SD_TRANSFER_BUSY = 1, /*!< Transfer is occurring */ 00278 SD_TRANSFER_ERROR = 2 /*!< Transfer failed */ 00279 00280 }HAL_SD_TransferStateTypedef; 00281 /** 00282 * @} 00283 */ 00284 00285 /** @defgroup SD_Exported_Types_Group8 SD Card State enumeration structure 00286 * @{ 00287 */ 00288 typedef enum 00289 { 00290 SD_CARD_READY = ((uint32_t)0x00000001), /*!< Card state is ready */ 00291 SD_CARD_IDENTIFICATION = ((uint32_t)0x00000002), /*!< Card is in identification state */ 00292 SD_CARD_STANDBY = ((uint32_t)0x00000003), /*!< Card is in standby state */ 00293 SD_CARD_TRANSFER = ((uint32_t)0x00000004), /*!< Card is in transfer state */ 00294 SD_CARD_SENDING = ((uint32_t)0x00000005), /*!< Card is sending an operation */ 00295 SD_CARD_RECEIVING = ((uint32_t)0x00000006), /*!< Card is receiving operation information */ 00296 SD_CARD_PROGRAMMING = ((uint32_t)0x00000007), /*!< Card is in programming state */ 00297 SD_CARD_DISCONNECTED = ((uint32_t)0x00000008), /*!< Card is disconnected */ 00298 SD_CARD_ERROR = ((uint32_t)0x000000FF) /*!< Card is in error state */ 00299 00300 }HAL_SD_CardStateTypedef; 00301 /** 00302 * @} 00303 */ 00304 00305 /** @defgroup SD_Exported_Types_Group9 SD Operation enumeration structure 00306 * @{ 00307 */ 00308 typedef enum 00309 { 00310 SD_READ_SINGLE_BLOCK = 0, /*!< Read single block operation */ 00311 SD_READ_MULTIPLE_BLOCK = 1, /*!< Read multiple blocks operation */ 00312 SD_WRITE_SINGLE_BLOCK = 2, /*!< Write single block operation */ 00313 SD_WRITE_MULTIPLE_BLOCK = 3 /*!< Write multiple blocks operation */ 00314 00315 }HAL_SD_OperationTypedef; 00316 /** 00317 * @} 00318 */ 00319 00320 /** 00321 * @} 00322 */ 00323 00324 /* Exported constants --------------------------------------------------------*/ 00325 /** @defgroup SD_Exported_Constants SD Exported Constants 00326 * @{ 00327 */ 00328 00329 /** 00330 * @brief SD Commands Index 00331 */ 00332 #define SD_CMD_GO_IDLE_STATE ((uint8_t)0) /*!< Resets the SD memory card. */ 00333 #define SD_CMD_SEND_OP_COND ((uint8_t)1) /*!< Sends host capacity support information and activates the card's initialization process. */ 00334 #define SD_CMD_ALL_SEND_CID ((uint8_t)2) /*!< Asks any card connected to the host to send the CID numbers on the CMD line. */ 00335 #define SD_CMD_SET_REL_ADDR ((uint8_t)3) /*!< Asks the card to publish a new relative address (RCA). */ 00336 #define SD_CMD_SET_DSR ((uint8_t)4) /*!< Programs the DSR of all cards. */ 00337 #define SD_CMD_SDMMC_SEN_OP_COND ((uint8_t)5) /*!< Sends host capacity support information (HCS) and asks the accessed card to send its 00338 operating condition register (OCR) content in the response on the CMD line. */ 00339 #define SD_CMD_HS_SWITCH ((uint8_t)6) /*!< Checks switchable function (mode 0) and switch card function (mode 1). */ 00340 #define SD_CMD_SEL_DESEL_CARD ((uint8_t)7) /*!< Selects the card by its own relative address and gets deselected by any other address */ 00341 #define SD_CMD_HS_SEND_EXT_CSD ((uint8_t)8) /*!< Sends SD Memory Card interface condition, which includes host supply voltage information 00342 and asks the card whether card supports voltage. */ 00343 #define SD_CMD_SEND_CSD ((uint8_t)9) /*!< Addressed card sends its card specific data (CSD) on the CMD line. */ 00344 #define SD_CMD_SEND_CID ((uint8_t)10) /*!< Addressed card sends its card identification (CID) on the CMD line. */ 00345 #define SD_CMD_READ_DAT_UNTIL_STOP ((uint8_t)11) /*!< SD card doesn't support it. */ 00346 #define SD_CMD_STOP_TRANSMISSION ((uint8_t)12) /*!< Forces the card to stop transmission. */ 00347 #define SD_CMD_SEND_STATUS ((uint8_t)13) /*!< Addressed card sends its status register. */ 00348 #define SD_CMD_HS_BUSTEST_READ ((uint8_t)14) 00349 #define SD_CMD_GO_INACTIVE_STATE ((uint8_t)15) /*!< Sends an addressed card into the inactive state. */ 00350 #define SD_CMD_SET_BLOCKLEN ((uint8_t)16) /*!< Sets the block length (in bytes for SDSC) for all following block commands 00351 (read, write, lock). Default block length is fixed to 512 Bytes. Not effective 00352 for SDHS and SDXC. */ 00353 #define SD_CMD_READ_SINGLE_BLOCK ((uint8_t)17) /*!< Reads single block of size selected by SET_BLOCKLEN in case of SDSC, and a block of 00354 fixed 512 bytes in case of SDHC and SDXC. */ 00355 #define SD_CMD_READ_MULT_BLOCK ((uint8_t)18) /*!< Continuously transfers data blocks from card to host until interrupted by 00356 STOP_TRANSMISSION command. */ 00357 #define SD_CMD_HS_BUSTEST_WRITE ((uint8_t)19) /*!< 64 bytes tuning pattern is sent for SDR50 and SDR104. */ 00358 #define SD_CMD_WRITE_DAT_UNTIL_STOP ((uint8_t)20) /*!< Speed class control command. */ 00359 #define SD_CMD_SET_BLOCK_COUNT ((uint8_t)23) /*!< Specify block count for CMD18 and CMD25. */ 00360 #define SD_CMD_WRITE_SINGLE_BLOCK ((uint8_t)24) /*!< Writes single block of size selected by SET_BLOCKLEN in case of SDSC, and a block of 00361 fixed 512 bytes in case of SDHC and SDXC. */ 00362 #define SD_CMD_WRITE_MULT_BLOCK ((uint8_t)25) /*!< Continuously writes blocks of data until a STOP_TRANSMISSION follows. */ 00363 #define SD_CMD_PROG_CID ((uint8_t)26) /*!< Reserved for manufacturers. */ 00364 #define SD_CMD_PROG_CSD ((uint8_t)27) /*!< Programming of the programmable bits of the CSD. */ 00365 #define SD_CMD_SET_WRITE_PROT ((uint8_t)28) /*!< Sets the write protection bit of the addressed group. */ 00366 #define SD_CMD_CLR_WRITE_PROT ((uint8_t)29) /*!< Clears the write protection bit of the addressed group. */ 00367 #define SD_CMD_SEND_WRITE_PROT ((uint8_t)30) /*!< Asks the card to send the status of the write protection bits. */ 00368 #define SD_CMD_SD_ERASE_GRP_START ((uint8_t)32) /*!< Sets the address of the first write block to be erased. (For SD card only). */ 00369 #define SD_CMD_SD_ERASE_GRP_END ((uint8_t)33) /*!< Sets the address of the last write block of the continuous range to be erased. */ 00370 #define SD_CMD_ERASE_GRP_START ((uint8_t)35) /*!< Sets the address of the first write block to be erased. Reserved for each command 00371 system set by switch function command (CMD6). */ 00372 #define SD_CMD_ERASE_GRP_END ((uint8_t)36) /*!< Sets the address of the last write block of the continuous range to be erased. 00373 Reserved for each command system set by switch function command (CMD6). */ 00374 #define SD_CMD_ERASE ((uint8_t)38) /*!< Reserved for SD security applications. */ 00375 #define SD_CMD_FAST_IO ((uint8_t)39) /*!< SD card doesn't support it (Reserved). */ 00376 #define SD_CMD_GO_IRQ_STATE ((uint8_t)40) /*!< SD card doesn't support it (Reserved). */ 00377 #define SD_CMD_LOCK_UNLOCK ((uint8_t)42) /*!< Sets/resets the password or lock/unlock the card. The size of the data block is set by 00378 the SET_BLOCK_LEN command. */ 00379 #define SD_CMD_APP_CMD ((uint8_t)55) /*!< Indicates to the card that the next command is an application specific command rather 00380 than a standard command. */ 00381 #define SD_CMD_GEN_CMD ((uint8_t)56) /*!< Used either to transfer a data block to the card or to get a data block from the card 00382 for general purpose/application specific commands. */ 00383 #define SD_CMD_NO_CMD ((uint8_t)64) 00384 00385 /** 00386 * @brief Following commands are SD Card Specific commands. 00387 * SDMMC_APP_CMD should be sent before sending these commands. 00388 */ 00389 #define SD_CMD_APP_SD_SET_BUSWIDTH ((uint8_t)6) /*!< (ACMD6) Defines the data bus width to be used for data transfer. The allowed data bus 00390 widths are given in SCR register. */ 00391 #define SD_CMD_SD_APP_STATUS ((uint8_t)13) /*!< (ACMD13) Sends the SD status. */ 00392 #define SD_CMD_SD_APP_SEND_NUM_WRITE_BLOCKS ((uint8_t)22) /*!< (ACMD22) Sends the number of the written (without errors) write blocks. Responds with 00393 32bit+CRC data block. */ 00394 #define SD_CMD_SD_APP_OP_COND ((uint8_t)41) /*!< (ACMD41) Sends host capacity support information (HCS) and asks the accessed card to 00395 send its operating condition register (OCR) content in the response on the CMD line. */ 00396 #define SD_CMD_SD_APP_SET_CLR_CARD_DETECT ((uint8_t)42) /*!< (ACMD42) Connects/Disconnects the 50 KOhm pull-up resistor on CD/DAT3 (pin 1) of the card. */ 00397 #define SD_CMD_SD_APP_SEND_SCR ((uint8_t)51) /*!< Reads the SD Configuration Register (SCR). */ 00398 #define SD_CMD_SDMMC_RW_DIRECT ((uint8_t)52) /*!< For SD I/O card only, reserved for security specification. */ 00399 #define SD_CMD_SDMMC_RW_EXTENDED ((uint8_t)53) /*!< For SD I/O card only, reserved for security specification. */ 00400 00401 /** 00402 * @brief Following commands are SD Card Specific security commands. 00403 * SD_CMD_APP_CMD should be sent before sending these commands. 00404 */ 00405 #define SD_CMD_SD_APP_GET_MKB ((uint8_t)43) /*!< For SD card only */ 00406 #define SD_CMD_SD_APP_GET_MID ((uint8_t)44) /*!< For SD card only */ 00407 #define SD_CMD_SD_APP_SET_CER_RN1 ((uint8_t)45) /*!< For SD card only */ 00408 #define SD_CMD_SD_APP_GET_CER_RN2 ((uint8_t)46) /*!< For SD card only */ 00409 #define SD_CMD_SD_APP_SET_CER_RES2 ((uint8_t)47) /*!< For SD card only */ 00410 #define SD_CMD_SD_APP_GET_CER_RES1 ((uint8_t)48) /*!< For SD card only */ 00411 #define SD_CMD_SD_APP_SECURE_READ_MULTIPLE_BLOCK ((uint8_t)18) /*!< For SD card only */ 00412 #define SD_CMD_SD_APP_SECURE_WRITE_MULTIPLE_BLOCK ((uint8_t)25) /*!< For SD card only */ 00413 #define SD_CMD_SD_APP_SECURE_ERASE ((uint8_t)38) /*!< For SD card only */ 00414 #define SD_CMD_SD_APP_CHANGE_SECURE_AREA ((uint8_t)49) /*!< For SD card only */ 00415 #define SD_CMD_SD_APP_SECURE_WRITE_MKB ((uint8_t)48) /*!< For SD card only */ 00416 00417 /** 00418 * @brief Supported SD Memory Cards 00419 */ 00420 #define STD_CAPACITY_SD_CARD_V1_1 ((uint32_t)0x00000000) 00421 #define STD_CAPACITY_SD_CARD_V2_0 ((uint32_t)0x00000001) 00422 #define HIGH_CAPACITY_SD_CARD ((uint32_t)0x00000002) 00423 #define MULTIMEDIA_CARD ((uint32_t)0x00000003) 00424 #define SECURE_DIGITAL_IO_CARD ((uint32_t)0x00000004) 00425 #define HIGH_SPEED_MULTIMEDIA_CARD ((uint32_t)0x00000005) 00426 #define SECURE_DIGITAL_IO_COMBO_CARD ((uint32_t)0x00000006) 00427 #define HIGH_CAPACITY_MMC_CARD ((uint32_t)0x00000007) 00428 /** 00429 * @} 00430 */ 00431 00432 /* Exported macro ------------------------------------------------------------*/ 00433 /** @defgroup SD_Exported_macros SD Exported Macros 00434 * @brief macros to handle interrupts and specific clock configurations 00435 * @{ 00436 */ 00437 00438 /** 00439 * @brief Enable the SD device. 00440 * @retval None 00441 */ 00442 #define __HAL_SD_SDMMC_ENABLE(__HANDLE__) __SDMMC_ENABLE((__HANDLE__)->Instance) 00443 00444 /** 00445 * @brief Disable the SD device. 00446 * @retval None 00447 */ 00448 #define __HAL_SD_SDMMC_DISABLE(__HANDLE__) __SDMMC_DISABLE((__HANDLE__)->Instance) 00449 00450 /** 00451 * @brief Enable the SDMMC DMA transfer. 00452 * @retval None 00453 */ 00454 #define __HAL_SD_SDMMC_DMA_ENABLE(__HANDLE__) __SDMMC_DMA_ENABLE((__HANDLE__)->Instance) 00455 00456 /** 00457 * @brief Disable the SDMMC DMA transfer. 00458 * @retval None 00459 */ 00460 #define __HAL_SD_SDMMC_DMA_DISABLE(__HANDLE__) __SDMMC_DMA_DISABLE((__HANDLE__)->Instance) 00461 00462 /** 00463 * @brief Enable the SD device interrupt. 00464 * @param __HANDLE__: SD Handle 00465 * @param __INTERRUPT__: specifies the SDMMC interrupt sources to be enabled. 00466 * This parameter can be one or a combination of the following values: 00467 * @arg SDMMC_IT_CCRCFAIL: Command response received (CRC check failed) interrupt 00468 * @arg SDMMC_IT_DCRCFAIL: Data block sent/received (CRC check failed) interrupt 00469 * @arg SDMMC_IT_CTIMEOUT: Command response timeout interrupt 00470 * @arg SDMMC_IT_DTIMEOUT: Data timeout interrupt 00471 * @arg SDMMC_IT_TXUNDERR: Transmit FIFO underrun error interrupt 00472 * @arg SDMMC_IT_RXOVERR: Received FIFO overrun error interrupt 00473 * @arg SDMMC_IT_CMDREND: Command response received (CRC check passed) interrupt 00474 * @arg SDMMC_IT_CMDSENT: Command sent (no response required) interrupt 00475 * @arg SDMMC_IT_DATAEND: Data end (data counter, SDIDCOUNT, is zero) interrupt 00476 * @arg SDMMC_IT_DBCKEND: Data block sent/received (CRC check passed) interrupt 00477 * @arg SDMMC_IT_CMDACT: Command transfer in progress interrupt 00478 * @arg SDMMC_IT_TXACT: Data transmit in progress interrupt 00479 * @arg SDMMC_IT_RXACT: Data receive in progress interrupt 00480 * @arg SDMMC_IT_TXFIFOHE: Transmit FIFO Half Empty interrupt 00481 * @arg SDMMC_IT_RXFIFOHF: Receive FIFO Half Full interrupt 00482 * @arg SDMMC_IT_TXFIFOF: Transmit FIFO full interrupt 00483 * @arg SDMMC_IT_RXFIFOF: Receive FIFO full interrupt 00484 * @arg SDMMC_IT_TXFIFOE: Transmit FIFO empty interrupt 00485 * @arg SDMMC_IT_RXFIFOE: Receive FIFO empty interrupt 00486 * @arg SDMMC_IT_TXDAVL: Data available in transmit FIFO interrupt 00487 * @arg SDMMC_IT_RXDAVL: Data available in receive FIFO interrupt 00488 * @arg SDMMC_IT_SDIOIT: SD I/O interrupt received interrupt 00489 * @retval None 00490 */ 00491 #define __HAL_SD_SDMMC_ENABLE_IT(__HANDLE__, __INTERRUPT__) __SDMMC_ENABLE_IT((__HANDLE__)->Instance, (__INTERRUPT__)) 00492 00493 /** 00494 * @brief Disable the SD device interrupt. 00495 * @param __HANDLE__: SD Handle 00496 * @param __INTERRUPT__: specifies the SDMMC interrupt sources to be disabled. 00497 * This parameter can be one or a combination of the following values: 00498 * @arg SDMMC_IT_CCRCFAIL: Command response received (CRC check failed) interrupt 00499 * @arg SDMMC_IT_DCRCFAIL: Data block sent/received (CRC check failed) interrupt 00500 * @arg SDMMC_IT_CTIMEOUT: Command response timeout interrupt 00501 * @arg SDMMC_IT_DTIMEOUT: Data timeout interrupt 00502 * @arg SDMMC_IT_TXUNDERR: Transmit FIFO underrun error interrupt 00503 * @arg SDMMC_IT_RXOVERR: Received FIFO overrun error interrupt 00504 * @arg SDMMC_IT_CMDREND: Command response received (CRC check passed) interrupt 00505 * @arg SDMMC_IT_CMDSENT: Command sent (no response required) interrupt 00506 * @arg SDMMC_IT_DATAEND: Data end (data counter, SDIDCOUNT, is zero) interrupt 00507 * @arg SDMMC_IT_DBCKEND: Data block sent/received (CRC check passed) interrupt 00508 * @arg SDMMC_IT_CMDACT: Command transfer in progress interrupt 00509 * @arg SDMMC_IT_TXACT: Data transmit in progress interrupt 00510 * @arg SDMMC_IT_RXACT: Data receive in progress interrupt 00511 * @arg SDMMC_IT_TXFIFOHE: Transmit FIFO Half Empty interrupt 00512 * @arg SDMMC_IT_RXFIFOHF: Receive FIFO Half Full interrupt 00513 * @arg SDMMC_IT_TXFIFOF: Transmit FIFO full interrupt 00514 * @arg SDMMC_IT_RXFIFOF: Receive FIFO full interrupt 00515 * @arg SDMMC_IT_TXFIFOE: Transmit FIFO empty interrupt 00516 * @arg SDMMC_IT_RXFIFOE: Receive FIFO empty interrupt 00517 * @arg SDMMC_IT_TXDAVL: Data available in transmit FIFO interrupt 00518 * @arg SDMMC_IT_RXDAVL: Data available in receive FIFO interrupt 00519 * @arg SDMMC_IT_SDIOIT: SD I/O interrupt received interrupt 00520 * @retval None 00521 */ 00522 #define __HAL_SD_SDMMC_DISABLE_IT(__HANDLE__, __INTERRUPT__) __SDMMC_DISABLE_IT((__HANDLE__)->Instance, (__INTERRUPT__)) 00523 00524 /** 00525 * @brief Check whether the specified SD flag is set or not. 00526 * @param __HANDLE__: SD Handle 00527 * @param __FLAG__: specifies the flag to check. 00528 * This parameter can be one of the following values: 00529 * @arg SDMMC_FLAG_CCRCFAIL: Command response received (CRC check failed) 00530 * @arg SDMMC_FLAG_DCRCFAIL: Data block sent/received (CRC check failed) 00531 * @arg SDMMC_FLAG_CTIMEOUT: Command response timeout 00532 * @arg SDMMC_FLAG_DTIMEOUT: Data timeout 00533 * @arg SDMMC_FLAG_TXUNDERR: Transmit FIFO underrun error 00534 * @arg SDMMC_FLAG_RXOVERR: Received FIFO overrun error 00535 * @arg SDMMC_FLAG_CMDREND: Command response received (CRC check passed) 00536 * @arg SDMMC_FLAG_CMDSENT: Command sent (no response required) 00537 * @arg SDMMC_FLAG_DATAEND: Data end (data counter, SDIDCOUNT, is zero) 00538 * @arg SDMMC_FLAG_DBCKEND: Data block sent/received (CRC check passed) 00539 * @arg SDMMC_FLAG_CMDACT: Command transfer in progress 00540 * @arg SDMMC_FLAG_TXACT: Data transmit in progress 00541 * @arg SDMMC_FLAG_RXACT: Data receive in progress 00542 * @arg SDMMC_FLAG_TXFIFOHE: Transmit FIFO Half Empty 00543 * @arg SDMMC_FLAG_RXFIFOHF: Receive FIFO Half Full 00544 * @arg SDMMC_FLAG_TXFIFOF: Transmit FIFO full 00545 * @arg SDMMC_FLAG_RXFIFOF: Receive FIFO full 00546 * @arg SDMMC_FLAG_TXFIFOE: Transmit FIFO empty 00547 * @arg SDMMC_FLAG_RXFIFOE: Receive FIFO empty 00548 * @arg SDMMC_FLAG_TXDAVL: Data available in transmit FIFO 00549 * @arg SDMMC_FLAG_RXDAVL: Data available in receive FIFO 00550 * @arg SDMMC_FLAG_SDIOIT: SD I/O interrupt received 00551 * @retval The new state of SD FLAG (SET or RESET). 00552 */ 00553 #define __HAL_SD_SDMMC_GET_FLAG(__HANDLE__, __FLAG__) __SDMMC_GET_FLAG((__HANDLE__)->Instance, (__FLAG__)) 00554 00555 /** 00556 * @brief Clear the SD's pending flags. 00557 * @param __HANDLE__: SD Handle 00558 * @param __FLAG__: specifies the flag to clear. 00559 * This parameter can be one or a combination of the following values: 00560 * @arg SDMMC_FLAG_CCRCFAIL: Command response received (CRC check failed) 00561 * @arg SDMMC_FLAG_DCRCFAIL: Data block sent/received (CRC check failed) 00562 * @arg SDMMC_FLAG_CTIMEOUT: Command response timeout 00563 * @arg SDMMC_FLAG_DTIMEOUT: Data timeout 00564 * @arg SDMMC_FLAG_TXUNDERR: Transmit FIFO underrun error 00565 * @arg SDMMC_FLAG_RXOVERR: Received FIFO overrun error 00566 * @arg SDMMC_FLAG_CMDREND: Command response received (CRC check passed) 00567 * @arg SDMMC_FLAG_CMDSENT: Command sent (no response required) 00568 * @arg SDMMC_FLAG_DATAEND: Data end (data counter, SDIDCOUNT, is zero) 00569 * @arg SDMMC_FLAG_DBCKEND: Data block sent/received (CRC check passed) 00570 * @arg SDMMC_FLAG_SDIOIT: SD I/O interrupt received 00571 * @retval None 00572 */ 00573 #define __HAL_SD_SDMMC_CLEAR_FLAG(__HANDLE__, __FLAG__) __SDMMC_CLEAR_FLAG((__HANDLE__)->Instance, (__FLAG__)) 00574 00575 /** 00576 * @brief Check whether the specified SD interrupt has occurred or not. 00577 * @param __HANDLE__: SD Handle 00578 * @param __INTERRUPT__: specifies the SDMMC interrupt source to check. 00579 * This parameter can be one of the following values: 00580 * @arg SDMMC_IT_CCRCFAIL: Command response received (CRC check failed) interrupt 00581 * @arg SDMMC_IT_DCRCFAIL: Data block sent/received (CRC check failed) interrupt 00582 * @arg SDMMC_IT_CTIMEOUT: Command response timeout interrupt 00583 * @arg SDMMC_IT_DTIMEOUT: Data timeout interrupt 00584 * @arg SDMMC_IT_TXUNDERR: Transmit FIFO underrun error interrupt 00585 * @arg SDMMC_IT_RXOVERR: Received FIFO overrun error interrupt 00586 * @arg SDMMC_IT_CMDREND: Command response received (CRC check passed) interrupt 00587 * @arg SDMMC_IT_CMDSENT: Command sent (no response required) interrupt 00588 * @arg SDMMC_IT_DATAEND: Data end (data counter, SDIDCOUNT, is zero) interrupt 00589 * @arg SDMMC_IT_DBCKEND: Data block sent/received (CRC check passed) interrupt 00590 * @arg SDMMC_IT_CMDACT: Command transfer in progress interrupt 00591 * @arg SDMMC_IT_TXACT: Data transmit in progress interrupt 00592 * @arg SDMMC_IT_RXACT: Data receive in progress interrupt 00593 * @arg SDMMC_IT_TXFIFOHE: Transmit FIFO Half Empty interrupt 00594 * @arg SDMMC_IT_RXFIFOHF: Receive FIFO Half Full interrupt 00595 * @arg SDMMC_IT_TXFIFOF: Transmit FIFO full interrupt 00596 * @arg SDMMC_IT_RXFIFOF: Receive FIFO full interrupt 00597 * @arg SDMMC_IT_TXFIFOE: Transmit FIFO empty interrupt 00598 * @arg SDMMC_IT_RXFIFOE: Receive FIFO empty interrupt 00599 * @arg SDMMC_IT_TXDAVL: Data available in transmit FIFO interrupt 00600 * @arg SDMMC_IT_RXDAVL: Data available in receive FIFO interrupt 00601 * @arg SDMMC_IT_SDIOIT: SD I/O interrupt received interrupt 00602 * @retval The new state of SD IT (SET or RESET). 00603 */ 00604 #define __HAL_SD_SDMMC_GET_IT(__HANDLE__, __INTERRUPT__) __SDMMC_GET_IT((__HANDLE__)->Instance, (__INTERRUPT__)) 00605 00606 /** 00607 * @brief Clear the SD's interrupt pending bits. 00608 * @param __HANDLE__: SD Handle 00609 * @param __INTERRUPT__: specifies the interrupt pending bit to clear. 00610 * This parameter can be one or a combination of the following values: 00611 * @arg SDMMC_IT_CCRCFAIL: Command response received (CRC check failed) interrupt 00612 * @arg SDMMC_IT_DCRCFAIL: Data block sent/received (CRC check failed) interrupt 00613 * @arg SDMMC_IT_CTIMEOUT: Command response timeout interrupt 00614 * @arg SDMMC_IT_DTIMEOUT: Data timeout interrupt 00615 * @arg SDMMC_IT_TXUNDERR: Transmit FIFO underrun error interrupt 00616 * @arg SDMMC_IT_RXOVERR: Received FIFO overrun error interrupt 00617 * @arg SDMMC_IT_CMDREND: Command response received (CRC check passed) interrupt 00618 * @arg SDMMC_IT_CMDSENT: Command sent (no response required) interrupt 00619 * @arg SDMMC_IT_DATAEND: Data end (data counter, SDMMC_DCOUNT, is zero) interrupt 00620 * @arg SDMMC_IT_SDIOIT: SD I/O interrupt received interrupt 00621 * @retval None 00622 */ 00623 #define __HAL_SD_SDMMC_CLEAR_IT(__HANDLE__, __INTERRUPT__) __SDMMC_CLEAR_IT((__HANDLE__)->Instance, (__INTERRUPT__)) 00624 /** 00625 * @} 00626 */ 00627 00628 /* Exported functions --------------------------------------------------------*/ 00629 /** @defgroup SD_Exported_Functions SD Exported Functions 00630 * @{ 00631 */ 00632 00633 /** @defgroup SD_Exported_Functions_Group1 Initialization and de-initialization functions 00634 * @{ 00635 */ 00636 HAL_SD_ErrorTypedef HAL_SD_Init(SD_HandleTypeDef *hsd, HAL_SD_CardInfoTypedef *SDCardInfo); 00637 HAL_StatusTypeDef HAL_SD_DeInit (SD_HandleTypeDef *hsd); 00638 void HAL_SD_MspInit(SD_HandleTypeDef *hsd); 00639 void HAL_SD_MspDeInit(SD_HandleTypeDef *hsd); 00640 /** 00641 * @} 00642 */ 00643 00644 /** @defgroup SD_Exported_Functions_Group2 Input and Output operation functions 00645 * @{ 00646 */ 00647 /* Blocking mode: Polling */ 00648 HAL_SD_ErrorTypedef HAL_SD_ReadBlocks(SD_HandleTypeDef *hsd, uint32_t *pReadBuffer, uint64_t ReadAddr, uint32_t BlockSize, uint32_t NumberOfBlocks); 00649 HAL_SD_ErrorTypedef HAL_SD_WriteBlocks(SD_HandleTypeDef *hsd, uint32_t *pWriteBuffer, uint64_t WriteAddr, uint32_t BlockSize, uint32_t NumberOfBlocks); 00650 HAL_SD_ErrorTypedef HAL_SD_Erase(SD_HandleTypeDef *hsd, uint64_t startaddr, uint64_t endaddr); 00651 00652 /* Non-Blocking mode: Interrupt */ 00653 void HAL_SD_IRQHandler(SD_HandleTypeDef *hsd); 00654 00655 /* Callback in non blocking modes (DMA) */ 00656 void HAL_SD_DMA_RxCpltCallback(DMA_HandleTypeDef *hdma); 00657 void HAL_SD_DMA_RxErrorCallback(DMA_HandleTypeDef *hdma); 00658 void HAL_SD_DMA_TxCpltCallback(DMA_HandleTypeDef *hdma); 00659 void HAL_SD_DMA_TxErrorCallback(DMA_HandleTypeDef *hdma); 00660 void HAL_SD_XferCpltCallback(SD_HandleTypeDef *hsd); 00661 void HAL_SD_XferErrorCallback(SD_HandleTypeDef *hsd); 00662 00663 /* Non-Blocking mode: DMA */ 00664 HAL_SD_ErrorTypedef HAL_SD_ReadBlocks_DMA(SD_HandleTypeDef *hsd, uint32_t *pReadBuffer, uint64_t ReadAddr, uint32_t BlockSize, uint32_t NumberOfBlocks); 00665 HAL_SD_ErrorTypedef HAL_SD_WriteBlocks_DMA(SD_HandleTypeDef *hsd, uint32_t *pWriteBuffer, uint64_t WriteAddr, uint32_t BlockSize, uint32_t NumberOfBlocks); 00666 HAL_SD_ErrorTypedef HAL_SD_CheckWriteOperation(SD_HandleTypeDef *hsd, uint32_t Timeout); 00667 HAL_SD_ErrorTypedef HAL_SD_CheckReadOperation(SD_HandleTypeDef *hsd, uint32_t Timeout); 00668 /** 00669 * @} 00670 */ 00671 00672 /** @defgroup SD_Exported_Functions_Group3 Peripheral Control functions 00673 * @{ 00674 */ 00675 HAL_SD_ErrorTypedef HAL_SD_Get_CardInfo(SD_HandleTypeDef *hsd, HAL_SD_CardInfoTypedef *pCardInfo); 00676 HAL_SD_ErrorTypedef HAL_SD_WideBusOperation_Config(SD_HandleTypeDef *hsd, uint32_t WideMode); 00677 HAL_SD_ErrorTypedef HAL_SD_StopTransfer(SD_HandleTypeDef *hsd); 00678 HAL_SD_ErrorTypedef HAL_SD_HighSpeed (SD_HandleTypeDef *hsd); 00679 /** 00680 * @} 00681 */ 00682 00683 /* Peripheral State functions ************************************************/ 00684 /** @defgroup SD_Exported_Functions_Group4 Peripheral State functions 00685 * @{ 00686 */ 00687 HAL_SD_ErrorTypedef HAL_SD_SendSDStatus(SD_HandleTypeDef *hsd, uint32_t *pSDstatus); 00688 HAL_SD_ErrorTypedef HAL_SD_GetCardStatus(SD_HandleTypeDef *hsd, HAL_SD_CardStatusTypedef *pCardStatus); 00689 HAL_SD_TransferStateTypedef HAL_SD_GetStatus(SD_HandleTypeDef *hsd); 00690 /** 00691 * @} 00692 */ 00693 00694 /** 00695 * @} 00696 */ 00697 00698 /* Private types -------------------------------------------------------------*/ 00699 /** @defgroup SD_Private_Types SD Private Types 00700 * @{ 00701 */ 00702 00703 /** 00704 * @} 00705 */ 00706 00707 /* Private defines -----------------------------------------------------------*/ 00708 /** @defgroup SD_Private_Defines SD Private Defines 00709 * @{ 00710 */ 00711 00712 /** 00713 * @} 00714 */ 00715 00716 /* Private variables ---------------------------------------------------------*/ 00717 /** @defgroup SD_Private_Variables SD Private Variables 00718 * @{ 00719 */ 00720 00721 /** 00722 * @} 00723 */ 00724 00725 /* Private constants ---------------------------------------------------------*/ 00726 /** @defgroup SD_Private_Constants SD Private Constants 00727 * @{ 00728 */ 00729 00730 /** 00731 * @} 00732 */ 00733 00734 /* Private macros ------------------------------------------------------------*/ 00735 /** @defgroup SD_Private_Macros SD Private Macros 00736 * @{ 00737 */ 00738 00739 /** 00740 * @} 00741 */ 00742 00743 /* Private functions prototypes ----------------------------------------------*/ 00744 /** @defgroup SD_Private_Functions_Prototypes SD Private Functions Prototypes 00745 * @{ 00746 */ 00747 00748 /** 00749 * @} 00750 */ 00751 00752 /* Private functions ---------------------------------------------------------*/ 00753 /** @defgroup SD_Private_Functions SD Private Functions 00754 * @{ 00755 */ 00756 00757 /** 00758 * @} 00759 */ 00760 00761 /** 00762 * @} 00763 */ 00764 00765 /** 00766 * @} 00767 */ 00768 00769 #endif /* SDMMC1 */ 00770 00771 #ifdef __cplusplus 00772 } 00773 #endif 00774 00775 00776 #endif /* __STM32L4xx_HAL_SD_H */ 00777 00778 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
Generated on Tue Jul 12 2022 17:38:50 by
