STM32之完成对SD卡的数据读取 |
您所在的位置:网站首页 › 单片机读取sd卡中文件 › STM32之完成对SD卡的数据读取 |
目录
一、SD卡的简介二、SD卡引脚定义三、实验过程2.1 代码下载2.2 SD卡写入文件名和写入内容2.3 main函数2.4 SD卡写入函数
四、连线五、编译并烧录六、实验验证七、代码修改八、结果显示九、总结十、参考
一、SD卡的简介
SD存储卡是一种基于 半导体 快闪记忆器的新一代记忆设备,由于它体积小、 数据传输 速度快、可 热插拔 等优良的特性,被广泛地于便携式装置上使用,例如 数码相机 、 平板电脑 和 多媒体播放器 等。 二、SD卡引脚定义链接:https://pan.baidu.com/s/1XTmLumQPlV6dUrWkSPc9pQ 提取码:i3qe 2.2 SD卡写入文件名和写入内容 char SD_FileName[] = "hello.txt"; uint8_t WriteBuffer[] = "马睿睿 631907030219 \r\n"; 2.3 main函数 int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_SPI1_Init(); MX_FATFS_Init(); MX_USART1_UART_Init(); HAL_UART_Receive_IT(&huart1,&aRxBuffer1,1); //enable uart printf(" mian \r\n"); Get_SDCard_Capacity(); //得到使用内存并选择格式化 while (1) { WritetoSD(WriteBuffer,sizeof(WriteBuffer)); //写入SD卡 HAL_Delay(500); WriteBuffer[0] = WriteBuffer[0] +10; WriteBuffer[1] = WriteBuffer[1] +10; write_cnt ++; while(write_cnt > 10) { printf(" while \r\n"); HAL_Delay(500); } } } 2.4 SD卡写入函数 void WritetoSD(BYTE write_buff[],uint8_t bufSize) { FATFS fs; FIL file; uint8_t res=0; UINT Bw; res = SD_init(); //SD卡初始化 if(res == 1) { printf("SD卡初始化失败! \r\n"); } else { printf("SD卡初始化成功! \r\n"); } res=f_mount(&fs,"0:",1); //挂载 // if(test_sd == 0) //用于测试格式化 if(res == FR_NO_FILESYSTEM) //没有文件系统,格式化 { // test_sd =1; //用于测试格式化 printf("没有文件系统! \r\n"); res = f_mkfs("", 0, 0); //格式化sd卡 if(res == FR_OK) { printf("格式化成功! \r\n"); res = f_mount(NULL,"0:",1); //格式化后先取消挂载 res = f_mount(&fs,"0:",1); //重新挂载 if(res == FR_OK) { printf("SD卡已经成功挂载,可以进进行文件写入测试!\r\n"); } } else { printf("格式化失败! \r\n"); } } else if(res == FR_OK) { printf("挂载成功! \r\n"); } else { printf("挂载失败! \r\n"); } res = f_open(&file,SD_FileName,FA_OPEN_ALWAYS |FA_WRITE); if((res & FR_DENIED) == FR_DENIED) { printf("卡存储已满,写入失败!\r\n"); } f_lseek(&file, f_size(&file));//确保写词写入不会覆盖之前的数据 if(res == FR_OK) { printf("打开成功/创建文件成功! \r\n"); res = f_write(&file,write_buff,bufSize,&Bw); //写数据到SD卡 if(res == FR_OK) { printf("文件写入成功! \r\n"); } else { printf("文件写入失败! \r\n"); } } else { printf("打开文件失败!\r\n"); } f_close(&file); //关闭文件 f_mount(NULL,"0:",1); //取消挂载 } 四、连线 SD卡STM32CSPA4SCKPA5MISOPA6MISIPA7VCC5VGUNGUN编译无误
对main函数进行修改如下,注释掉红框里面的代码: 实验并不难,但是需要细心,而且也需要有耐心,等待虽然很漫长,但是等来的结果会很让人快乐的。 十、参考https://blog.csdn.net/m0_58414679/article/details/122036435?spm=1001.2014.3001.5501 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |