• 【GMT43智能液晶模块】例程十二:SDIO实验——读取SD卡信息


    实验原理:

      STM32F429上带有SDIO控制器,GMT43液晶模块上将SDIO连接到TF卡座上。本

    实验将Micro SD卡插入TF卡座上即可。SD卡中可存放液晶显示模块需要显示的图片、字

    库等资源。

    示例截图:

    源代码下载链接:

    链接:https://pan.baidu.com/s/1kXf5erd 密码:8qpr

    GMT43购买链接:

    核心代码:

    SD_Error SD_Init(void)
    {
      __IO SD_Error errorstatus = SD_OK;
        
        NVIC_InitTypeDef NVIC_InitStructure;
        
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
        // SDIO Interrupt ENABLE
        NVIC_InitStructure.NVIC_IRQChannel = SDIO_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);
        // DMA2 STREAMx Interrupt ENABLE
        NVIC_InitStructure.NVIC_IRQChannel = SD_SDIO_DMA_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
        NVIC_Init(&NVIC_InitStructure);
      
      /* SDIO Peripheral Low Level Init */
      SD_LowLevel_Init();
    
      SDIO_DeInit();
    
      errorstatus = SD_PowerON();
    
      if (errorstatus != SD_OK)
      {
        /*!< CMD Response TimeOut (wait for CMDSENT flag) */
        return(errorstatus);
      }
    
      errorstatus = SD_InitializeCards();
    
      if (errorstatus != SD_OK)
      {
        /*!< CMD Response TimeOut (wait for CMDSENT flag) */
        return(errorstatus);
      }
    
      /*!< Configure the SDIO peripheral */
      /*!< SDIO_CK = SDIOCLK / (SDIO_TRANSFER_CLK_DIV + 2) */
      /*!< on STM32F4xx devices, SDIOCLK is fixed to 48MHz */
      SDIO_InitStructure.SDIO_ClockDiv = SDIO_TRANSFER_CLK_DIV;
      SDIO_InitStructure.SDIO_ClockEdge = SDIO_ClockEdge_Rising;
      SDIO_InitStructure.SDIO_ClockBypass = SDIO_ClockBypass_Disable;
      SDIO_InitStructure.SDIO_ClockPowerSave = SDIO_ClockPowerSave_Disable;
      SDIO_InitStructure.SDIO_BusWide = SDIO_BusWide_1b;
      SDIO_InitStructure.SDIO_HardwareFlowControl = SDIO_HardwareFlowControl_Disable;
      SDIO_Init(&SDIO_InitStructure);
    
      /*----------------- Read CSD/CID MSD registers ------------------*/
      errorstatus = SD_GetCardInfo(&SDCardInfo);
    
      if (errorstatus == SD_OK)
      {
        /*----------------- Select Card --------------------------------*/
        errorstatus = SD_SelectDeselect((uint32_t) (SDCardInfo.RCA << 16));
      }
    
      if (errorstatus == SD_OK)
      {
        errorstatus = SD_EnableWideBusOperation(SDIO_BusWide_4b);
      }  
    
      return(errorstatus);
    }
  • 相关阅读:
    python 中range函数的用法
    python之字符串中有关%d,%2d,%02d的问题
    大数据面试题
    HDFS的副本存放策略(全)
    hadoop 集群中数据块的副本存放策略
    HDFS 安全模式的理解
    蓝桥杯第十届真题B组(2019年)
    ubuntu下如何编译C语言
    Ubuntu下安装kate编辑器
    Command 'ifconfig' not found, but can be installed with: sudo apt install net-tools
  • 原文地址:https://www.cnblogs.com/xiaomagee/p/8333874.html
Copyright © 2020-2023  润新知