| 银杏科技有限公司旗下技术文档发布平台 | |||
| 技术支持电话 | 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。
2. 出现芯片型号选择,搜索芯片的型号,双击型号,或者点击Start Project进入配置
在搜索栏的下面,提供的各种查找方式,可以选择芯片内核、型号等,可以帮助用户查找芯片。本实验选取的芯片型号为:STM32F407IGTx。
 3. 配置RCC,使用外部时钟源
3. 配置RCC,使用外部时钟源
 4. 配置调试引脚
4. 配置调试引脚
 5. 将LED对应的3个引脚(PI5,PI6,PI7)设置为GPIO_Output
5. 将LED对应的3个引脚(PI5,PI6,PI7)设置为GPIO_Output
 6. 引脚模式配置
6. 引脚模式配置
 7. 配置SDIO
7. 配置SDIO
 
 
 8. 配置串口
8. 配置串口
 9. 时钟源设置,选择外部高速时钟源,配置为最大主频
9. 时钟源设置,选择外部高速时钟源,配置为最大主频
 10. 工程文件的设置, 这里就是工程的各种配置,我们只用到有限几个,其他的默认即可  IDE我们使用的是 MDK5
10. 工程文件的设置, 这里就是工程的各种配置,我们只用到有限几个,其他的默认即可  IDE我们使用的是 MDK5
 11. 点击Code Generator,进行进一步配置
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;