sdio: fix missing SDIO IRQHandler
This commit is contained in:
parent
d100258029
commit
df9c5dbb96
|
@ -23,6 +23,7 @@
|
||||||
|
|
||||||
#include "Arduino.h"
|
#include "Arduino.h"
|
||||||
|
|
||||||
|
static SDIOClass *_sdio_this;
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
// Error function and macro.
|
// Error function and macro.
|
||||||
|
@ -96,6 +97,9 @@ uint8_t SDIOClass::begin() {
|
||||||
*/
|
*/
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_sdio_this = this;
|
||||||
|
|
||||||
__HAL_RCC_SDIO_CLK_ENABLE();
|
__HAL_RCC_SDIO_CLK_ENABLE();
|
||||||
|
|
||||||
stm32AfSDIO4BitInit(SDIO, NULL, 0, NULL, 0,
|
stm32AfSDIO4BitInit(SDIO, NULL, 0, NULL, 0,
|
||||||
|
@ -137,6 +141,9 @@ uint8_t SDIOClass::begin() {
|
||||||
__HAL_LINKDMA(&hsd, hdmatx, hdma_sdio);
|
__HAL_LINKDMA(&hsd, hdmatx, hdma_sdio);
|
||||||
__HAL_LINKDMA(&hsd, hdmarx, hdma_sdio);
|
__HAL_LINKDMA(&hsd, hdmarx, hdma_sdio);
|
||||||
|
|
||||||
|
HAL_NVIC_SetPriority(SDIO_IRQn, 0, 0);
|
||||||
|
HAL_NVIC_EnableIRQ(SDIO_IRQn);
|
||||||
|
|
||||||
if (HAL_DMA_Init(&hdma_sdio) != HAL_OK) {
|
if (HAL_DMA_Init(&hdma_sdio) != HAL_OK) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -340,3 +347,6 @@ void SDIOClass::useDMA(bool useDMA){
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
extern "C" void SDIO_IRQHandler() {
|
||||||
|
HAL_SD_IRQHandler(&(_sdio_this->hsd));
|
||||||
|
}
|
||||||
|
|
|
@ -39,6 +39,7 @@
|
||||||
#define SDIO_CmdInitTypeDef SDMMC_CmdInitTypeDef
|
#define SDIO_CmdInitTypeDef SDMMC_CmdInitTypeDef
|
||||||
#define SDIO_SendCommand SDMMC_SendCommand
|
#define SDIO_SendCommand SDMMC_SendCommand
|
||||||
#define SDIO_TypeDef SDMMC_TypeDef
|
#define SDIO_TypeDef SDMMC_TypeDef
|
||||||
|
#define SDIO_IRQHandler SDMMC1_IRQHandler
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -105,9 +106,9 @@ class SDIOClass {
|
||||||
uint32_t errorLine();
|
uint32_t errorLine();
|
||||||
void useDMA(bool useDMA);
|
void useDMA(bool useDMA);
|
||||||
|
|
||||||
|
SD_HandleTypeDef hsd;
|
||||||
private:
|
private:
|
||||||
uint32_t cardStatus();
|
uint32_t cardStatus();
|
||||||
SD_HandleTypeDef hsd;
|
|
||||||
DMA_HandleTypeDef hdma_sdio;
|
DMA_HandleTypeDef hdma_sdio;
|
||||||
HAL_SD_CardInfoTypeDef SDCardInfo;
|
HAL_SD_CardInfoTypeDef SDCardInfo;
|
||||||
HAL_SD_CardStateTypeDef CardState;
|
HAL_SD_CardStateTypeDef CardState;
|
||||||
|
@ -117,6 +118,5 @@ class SDIOClass {
|
||||||
|
|
||||||
static uint32_t m_errorLine = 0;
|
static uint32_t m_errorLine = 0;
|
||||||
static uint8_t m_errorCode = 0x64; //TODO cleanup, SdFat errors do not belong to SDIO driver (SD_CARD_ERROR_INIT_NOT_CALLED);
|
static uint8_t m_errorCode = 0x64; //TODO cleanup, SdFat errors do not belong to SDIO driver (SD_CARD_ERROR_INIT_NOT_CALLED);
|
||||||
static void (*_sdio_this);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue