sdio: fix missing SDIO IRQHandler

This commit is contained in:
Daniel Fekete 2017-06-13 18:59:18 +02:00
parent d100258029
commit df9c5dbb96
2 changed files with 12 additions and 2 deletions

View File

@ -23,6 +23,7 @@
#include "Arduino.h"
static SDIOClass *_sdio_this;
//=============================================================================
// Error function and macro.
@ -96,6 +97,9 @@ uint8_t SDIOClass::begin() {
*/
return true;
}
_sdio_this = this;
__HAL_RCC_SDIO_CLK_ENABLE();
stm32AfSDIO4BitInit(SDIO, NULL, 0, NULL, 0,
@ -137,6 +141,9 @@ uint8_t SDIOClass::begin() {
__HAL_LINKDMA(&hsd, hdmatx, 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) {
return false;
}
@ -340,3 +347,6 @@ void SDIOClass::useDMA(bool useDMA){
}
extern "C" void SDIO_IRQHandler() {
HAL_SD_IRQHandler(&(_sdio_this->hsd));
}

View File

@ -39,6 +39,7 @@
#define SDIO_CmdInitTypeDef SDMMC_CmdInitTypeDef
#define SDIO_SendCommand SDMMC_SendCommand
#define SDIO_TypeDef SDMMC_TypeDef
#define SDIO_IRQHandler SDMMC1_IRQHandler
#endif
@ -105,9 +106,9 @@ class SDIOClass {
uint32_t errorLine();
void useDMA(bool useDMA);
SD_HandleTypeDef hsd;
private:
uint32_t cardStatus();
SD_HandleTypeDef hsd;
DMA_HandleTypeDef hdma_sdio;
HAL_SD_CardInfoTypeDef SDCardInfo;
HAL_SD_CardStateTypeDef CardState;
@ -117,6 +118,5 @@ class SDIOClass {
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 void (*_sdio_this);
#endif