码迷,mamicode.com
首页 > 编程语言 > 详细

【转】STM32利用FATFS读写数组

时间:2019-08-19 09:45:53      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:ini   就是   res   else   get   string   lin   always   16进制   

 

因为存为TXT可以实现,但是读取TXT里边的数据总是不尽如人意,所以,最终存为bin文件了。

先摘几个观点:

http://www.openedv.com/posts/list/36712.htm “文本文件存储的都是ASCII内容,如果你以16进制格式显示出来,那就是ASCII的内码。”

http://www.openedv.com/posts/list/58089.htm“ 你这种不要存.txt了,直接存.bin就是了。你先学会存一个字节数据,... ”

 

stm32 Fatfs 读写SD卡(http://www.ichanging.org/stm32-fatfs-sd.html)

f_openhttp://elm-chan.org/fsw/ff/en/open.html

 

实现的部分代码(读写bin文件)(其他可以借鉴 原子的FATFS相关实例等 http://www.openedv.com/forums/show/0/2/0/55.htm)

 

u32 sd_size;
	FIL file;
	FRESULT res;
	UINT bw;
	UINT br;//ʵ¼Ê¶ÁÈ¡µ½µÄ×Ö½ÚÊý
// SD ¿¨
	while(SD_Initialize())//¼ì²â²»µ½SD¿¨
	{
	  
		//LCD_ShowString(60,170,200,16,16,"SD Card Error!");
		printf("\r\nSD Card Error!\r\n");
		delay_ms(500);					
		//LCD_ShowString(60,170,200,16,16,"Please Check! ");
		printf("\r\nSD Card Error!\r\n");
		delay_ms(500);
	}
	printf("\r\nSD Card OKr\n");	
	printf("\r\nSD Card Size:     MB\r\n");
	sd_size=SD_GetSectorCount();//µÃµ½ÉÈÇøÊý
	printf("\r\nsd_size:%d\r\n",sd_size);
	f_mount(fs[0],"0:",1); 					//¹ÒÔØSD¿¨ 
	
	res=f_open(&file,"0:/Test.bin",FA_CREATE_ALWAYS | FA_WRITE  );
	if(res != FR_OK)
	{	
		printf("\r\nOpen file error!\r\n");
	}
	else
	{

		if(res == FR_OK)
		{		
			iTemp=13;
			res = f_write(&file, &iTemp, sizeof(iTemp), &bw);               /* Write it to the dst file */
			//res = f_write(&file, "\r\n",2, &bw);               /* Write it to the dst file */
			iTemp=1;
			res = f_write(&file, &iTemp, sizeof(iTemp), &bw);               /* Write it to the dst file */
			printf("\r\nwrite data ok!\r\n");
		}
		else
		{
			printf("\r\nwrite data error!\r\n");
		}
	 }
	f_close(&file);
	

	 res=f_open(&file,"0:/Test.bin",FA_OPEN_EXISTING|FA_READ);//
	if(res!=FR_OK)
	{
		printf("\r\n f_open() fail .. \r\n");
	}
	else
	{
		printf("\r\n f_open() success .. \r\n");
	}
	while(!f_eof(&file))
	{
		iBuf=0;
		res = f_read(&file, &iTemp, sizeof(u16), &br);//¶ÁÈ¡Ò»¸ö16λµÄÊý¾Ý
		if(res==FR_OK)
		{
			iBuf++;
			printf("%d \r\n",iTemp);
		}
		else
		{
			printf("\r\n f_read() fail .. \r\n");  
		}
	}
	f_close(&file);
  f_mount(fs[0],"0:",NULL);

【转】STM32利用FATFS读写数组

标签:ini   就是   res   else   get   string   lin   always   16进制   

原文地址:https://www.cnblogs.com/zhangbing12304/p/11375178.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!