STM32CubeMX用的是最新的5.6版本,开发板用的原子的F407ZET。参照网友这个帖子:http://www.openedv.com/forum.php ... ghlight=cubemx%2BSD(【分享】用STM32CubeMX快速生成一个SD卡读写程序 )。一步步生成后,SD卡初始化可以通过,但是用HAL_SD_GetCardState(&SDCARD_Handler)函数读取状态,始终会超时错误,然后继续用HAL_SD_GetCardInfo(&SDCARD_Handler,&SDCardInfo)函数读取SD卡的基本信息,全部为0.
但是用开发板自带的程序却没有问题,SD卡基本信息都可以正确读取出来。又尝试了F103和H750的开发板,现象完全相同,不知道问题到底出在哪里。
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_DMA_Init();
MX_SDIO_SD_Init();
MX_USART1_UART_Init();
/* USER CODE BEGIN 2 */
// printf("F407 SD new!
");
if(HAL_SD_GetCardState(&SDCARD_Handler)==HAL_SD_CARD_TRANSFER)
printf("HAL_SD_GetCardState OK!
");
else printf("HAL_SD_GetCardState NG!
"); //此函数每次都是超时错误
show_sdcard_info(); //打印SD卡相关信息
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
} |