大佬,怎么解决呀? 我也是stm32h7 SD卡DMA方式读写有问题。 轮询方式直接写是正常的。 能贴出cubemx中应该如何配置吗? 这是我测试代码 /** * @brief SD卡测试2 DMA方式读写SD卡 * */ void SD_BasicTest2() { puts("测试2 DMA方式读写SD卡"); uint8_t saveBuffer[512] = {0x00};//保存原本数据,测试完后写回去,防止破坏文件系统 uint32_t blockTest = 0xFF;//测试的块地址 uint8_t writeBuffer[512] = {0x00}; for(int i=0; i<sizeof(writeBuffer); i++) { writeBuffer = i % 256; } uint8_t readBuffer[512] = {0x00}; puts("开始读写测试"); HAL_Delay(100); if(HAL_SD_WriteBlocks_DMA(&hsd1, writeBuffer, blockTest, 1) != HAL_OK) { puts("写入失败"); return; } else { printf("写入成功 前4个数据 %X %X %X %X\n", writeBuffer[0], writeBuffer[1], writeBuffer[2], writeBuffer[3]); } HAL_Delay(100); if(HAL_SD_ReadBlocks_DMA(&hsd1, readBuffer, blockTest, 1) != HAL_OK) { puts("读取失败!"); return; } else { printf("读取成功 前4个数据 %X %X %X %X\n", readBuffer[0], readBuffer[1], readBuffer[2], readBuffer[3]); } HAL_Delay(100); if(memcmp(writeBuffer, readBuffer, sizeof(writeBuffer)) == 0) { puts("读写的数据一样,测试通过"); } else { puts("读写的数据不同,测试失败"); } puts("写回原本数据,防止破坏文件系统"); if(HAL_SD_WriteBlocks_DMA(&hsd1, saveBuffer, blockTest, 1) != HAL_OK) { puts("写入失败"); } HAL_Delay(100); }
所在话题
参与活动
-
滴滴押注社区团购,明确“投入不设上限,要做市场第一”
线下 2020-10-16 -
滴滴押注社区团购,明确“投入不设上限,要做市场第一”
网络 2020-10-16 -
滴滴押注社区团购,明确“投入不设上限,要做市场第一”
网络 2020-10-16 -
滴滴押注社区团购,明确“投入不设上限,要做市场第一”
网络 2020-10-16 -
滴滴押注社区团购,明确“投入不设上限,要做市场第一”
线下 2020-10-16 -
滴滴押注社区团购,明确“投入不设上限,要做市场第一”
线下 2020-10-16