zoukankan      html  css  js  c++  java
  • 【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);
    }
  • 相关阅读:
    SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
    Oracle中如何插入特殊字符: &amp;amp; 和 &amp;#39; (多种解决方案)
    oracle学习链接
    ORACLE中的游标Cursor总结
    SVN使用教程总结
    SVN使用教程之-分支/标记 合并 subeclipse
    weblogic启动 web应用ssh关闭 nohup命令
    Oracle 学习之:ASCII,CHR函数的作用和用法
    Oracle数据库单表循环提取输出
    设计模式-七大原则
  • 原文地址:https://www.cnblogs.com/xiaomagee/p/8333874.html
Copyright © 2011-2022 走看看