银杏科技有限公司旗下技术文档发布平台 | |||
技术支持电话 | 0379-69926675-801 | ||
技术支持邮件 | Gingko@vip.163.com | ||
版本 | 日期 | 作者 | 修改内容 |
---|---|---|---|
V1.0 | 2020-03-31 | gingko | 初次建立 |
1. 在主界面选择File–>New Project 或者直接点击ACCEE TO MCU SELECTOR 2. 出现芯片型号选择,搜索芯片的型号,双击型号,或者点击Start Project进入配置 在搜索栏的下面,提供的各种查找方式,可以选择芯片内核、型号等,可以帮助用户查找芯片。本实验选取的芯片型号为:STM32F407IGTx。 3. 配置RCC,使用外部时钟源 4. 配置调试引脚 5. 将LED对应的3个引脚(PI5,PI6,PI7)设置为GPIO_Output 6. 引脚模式配置 7. 配置SDIO 8. 配置串口 9. 时钟源设置,选择外部高速时钟源,配置为最大主频 10. 工程文件的设置, 这里就是工程的各种配置,我们只用到有限几个,其他的默认即可 IDE我们使用的是 MDK5 11. 点击Code Generator,进行进一步配置
MX_UART4_Init(); uart4.initialize(115200); //设置串口波特率 uart4.printf("\x0c"); //清屏 uart4.printf("\033[1;32;40m"); //设置字体终端为绿色 uart4.printf("\r\nHello, I am iCore3!\r\n\r\n");//串口信息输出 //锁定对象
if(HAL_SD_Init(&hsd) != 0){ uart4.printf("SD ERROR!\r\n"); while(1){ for(i = 0;i < 10000000;i++); LED_RED_ON; for(i = 0;i < 10000000;i++); LED_RED_OFF; }
switch(hsd.SdCard.CardType){ case CARD_SDSC: uart4.printf("SD CardType\t\t: CARD_SDSC\r\n"); break; case CARD_SDHC_SDXC: uart4.printf("SD CardType\t\t: CARD_SDHC_SDXC\r\n"); break; case CARD_SECURED: uart4.printf("SD CardType\t\t: CARD_SECURED\r\n"); break; } //判断SDIO为CARD_V1_X还是CARD_V2_X switch(hsd.SdCard.CardVersion){ case CARD_V1_X: uart4.printf("SD CardVersion\t: CARD_V1_X\r\n"); break; case CARD_V2_X: uart4.printf("SD SD CardVersion\t: CARD_V2_X\r\n"); break;
uart4.printf("SD CardCapacity\t\t: %dMB\r\n",(unsigned long int)(hsd.SdCard.BlockNbr * hsd.SdCard.BlockSize) >> 20); uart4.printf("SD CardBlockSize\t: %dByte\r\n",hsd.SdCard.BlockSize); uart4.printf("SD RelCardAdd\t\t: %d\r\n",hsd.SdCard.RelCardAdd); while (1) { for(i = 0;i < 10000000;i++); LED_GREEN_ON; for(i = 0;i < 10000000;i++); LED_GREEN_OFF; }
SD_HandleTypeDef hsd
typedef struct { SD_TypeDef *Instance; //SD寄存器基地址 SD_InitTypeDef Init; HAL_LockTypeDef Lock; //锁定对象 uint8_t *pTxBuffPtr;//SD TX传输缓冲区指针 uint32_t TxXferSize;//SD TX传输大小 uint8_t *pRxBuffPtr;//SD TX传输缓冲区指针 uint32_t RxXferSize;//SD TX传输大小 __IO uint32_t Context; //SD TX传输内容 __IO HAL_SD_StateTypeDef State; //传输状态 __IO uint32_t ErrorCode; //SD错误代码 DMA_HandleTypeDef *hdmatx; //SD Tx DMA句柄参数 DMA_HandleTypeDef *hdmarx; //SD Rx DMA句柄参数 HAL_SD_CardInfoTypeDef SdCard; //SD卡信息 uint32_t CSD[4]; uint32_t CID[4]; } SD_HandleTypeDef;
typedef struct { uint32_t CardType; uint32_t CardVersion; uint32_t Class; uint32_t RelCardAdd; uint32_t BlockNbr; uint32_t BlockSize; uint32_t LogBlockNbr; uint32_t LogBlockSize; }HAL_SD_CardInfoTypeDef;