找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7160|回复: 12
打印 上一主题 下一主题
收起左侧

STM32 SDIO+USB+FATFS程序(测试可用)

  [复制链接]
跳转到指定楼层
楼主

经测试   可以使用


部分stm32单片机源程序预览如下:
  1. /******************** (C) COPYRIGHT 2010 STMicroelectronics ********************
  2. * File Name          : main.c
  3. * Author             : MCD Application Team
  4. * Version            : V3.1.1
  5. * Date               : 04/07/2010
  6. * Description        : Mass Storage demo main file
  7. ********************************************************************************
  8. * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
  9. * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
  10. * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
  11. * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
  12. * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
  13. * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
  14. *******************************************************************************/

  15. /* Includes ------------------------------------------------------------------*/
  16. #include "main.h"        

  17. #include "usb_lib.h"
  18. #include "hw_config.h"
  19. #include "usb_pwr.h"
  20. #include "sdcard.h"
  21. //#include "lcd.h"
  22. #include "ff.h"        
  23. //#include "pic.h"
  24. //#include "book.h"
  25. #include <stdio.h>
  26. #include <string.h>

  27. static vu32 TimingDelay = 0;

  28. extern SD_CardInfo SDCardInfo;
  29. extern SD_Error Status ;
  30. extern u8 ASCII_Table[95][16];

  31. FATFS fs;
  32. FIL fsrc, fdst;      // file objects
  33. BYTE buffer[1024]; // file copy buffer
  34. FRESULT res;         // FatFs function common result code
  35. UINT br, bw;         // File R/W count
  36. BYTE buff_filename[15][20];        //最多只能读9个文件,保存9个文件名,文件名采用短文件名,最多13个字符
  37. extern uint16_t MAL_Init (uint8_t lun);

  38. /* Private typedef -----------------------------------------------------------*/
  39. /* Private define ------------------------------------------------------------*/
  40. /* Private macro -------------------------------------------------------------*/
  41. /* Private variables ---------------------------------------------------------*/
  42. /* Extern variables ----------------------------------------------------------*/
  43. /* Private function prototypes -----------------------------------------------*/
  44. /* Private functions ---------------------------------------------------------*/

  45. //#define Lcd_On  GPIO_SetBits(GPIOB,GPIO_Pin_5);
  46. //#define Lcd_Off GPIO_ResetBits(GPIOB,GPIO_Pin_5);

  47. //#define Pow_On  GPIO_SetBits(GPIOD,GPIO_Pin_3);
  48. //#define Pow_Off GPIO_ResetBits(GPIOD,GPIO_Pin_3);

  49. //#define Set_Rst  GPIO_SetBits(GPIOF,GPIO_Pin_11);
  50. //#define Clr_Rst  GPIO_ResetBits(GPIOF,GPIO_Pin_11);

  51. /* Private function prototypes -----------------------------------------------*/
  52. /* Private functions ---------------------------------------------------------*/

  53. u8 stringcopy(BYTE *buff_to,BYTE *buff_from)
  54. {
  55.   u8 i=0;
  56.   for(i=0;i<13;i++)
  57.   buff_to[i] = buff_from[i];
  58.   return 1;
  59. }

  60. void ReadSDFile(void)
  61. {
  62. //  FIL file;
  63.   FILINFO finfo;
  64.   DIR dirs;
  65.   int i_name=0;
  66. //  char *fn;
  67.   XCHAR path[50]={"picture"};
  68.   disk_initialize(0);
  69.   f_mount(0, &fs);
  70.   res =  f_opendir(&dirs, path);
  71.   if (res == FR_OK)
  72.   {
  73.     while (f_readdir(&dirs, &finfo) == FR_OK)
  74.         {
  75.           if (finfo.fattrib & AM_ARC)
  76.       {
  77.         if(!finfo.fname[0])          //文件名不为空,如果为空,则表明该目录下面的文件已经读完了
  78.           break;         
  79.         //res = f_open(&fsrc, finfo.lfname, FA_OPEN_EXISTING | FA_READ);
  80.                 stringcopy(buff_filename[i_name], (BYTE*)finfo.fname);
  81.                 i_name++;
  82. //        res = f_read(&fsrc, &buffer, 50, &br);
  83.         f_close(&fsrc);
  84.           }
  85.         }
  86.   }
  87. f_mount(0,NULL);
  88. }
  89. void ReadSDFiles(void)
  90. {
  91.     disk_initialize(0);
  92.         f_mount(0, &fs);
  93.         res = f_open(&fsrc,"picture/test.txt",FA_OPEN_EXISTING | FA_READ);      
  94.         res = f_read(&fsrc, &buffer,9, &br);
  95.         f_close(&fsrc);
  96.         f_mount(0,NULL);
  97. }

  98. void WriteSDFile(void)
  99. {
  100.   FIL file;
  101. // FILINFO finfo;
  102.   //DIR dirs;
  103. // int i_name=0;
  104. //char *fn;
  105. //XCHAR path[50]={"picture"};
  106.   disk_initialize(0);
  107.   res = f_mount(0, &fs);
  108.    res = f_open(&file, "1055.txt", FA_CREATE_ALWAYS | FA_WRITE);  //创建一个新的文件
  109.         res = f_lseek(&file,file.fsize);
  110.          f_printf (&file,"20100508sdsd看看看%s\r\n" );
  111.            f_close(&file);
  112.    f_mount(0, NULL);
  113. }
  114. /**************************************************************************
  115. *sd init and config
  116. **************************************************************************/
  117. SD_Error SD_InitAndConfig(void)
  118. {
  119. /////////////////////////////////////////////////////////////////////
  120.   //////// SDCARD Initialisation //////////////////////////////////////
  121.   /////////////////Section adapted from ST example/////////////////////
  122.   
  123.   /*-------------------------- SD Init ----------------------------- */
  124.   Status = SD_Init();
  125.   
  126.   if (Status == SD_OK)
  127.   {        
  128.     /*----------------- Read CSD/CID MSD registers ------------------*/
  129.     Status = SD_GetCardInfo(&SDCardInfo);
  130.   }
  131.   if (Status == SD_OK)
  132.   {
  133.         /*----------------- Select Card --------------------------------*/
  134.     Status = SD_SelectDeselect((u32) (SDCardInfo.RCA << 16));
  135.   }
  136.   if (Status == SD_OK)
  137.   {
  138.     Status = SD_EnableWideBusOperation(SDIO_BusWide_4b);
  139.   }
  140.   /* Set Device Transfer Mode to DMA */
  141.   if (Status == SD_OK)
  142.   {
  143.     Status = SD_SetDeviceMode(SD_DMA_MODE);//oet
  144. //   Status = SD_SetDeviceMode(SD_POLLING_MODE);
  145. //    Status = SD_SetDeviceMode(SD_INTERRUPT_MODE);
  146.   }         
  147. return Status;
  148. }
  149. /*******************************************************
  150. *Usb Connect
  151. *******************************************************/
  152. void UsbConnect(void)
  153. {
  154.         USB_Cable_Config(ENABLE);
  155.         USB_Init();
  156.         while (bDeviceState != CONFIGURED);
  157. }
  158. /*******************************************************
  159. *                                         Delay ms us
  160. *****************************************************/
  161. void delay_us(unsigned long i)
  162. {     
  163.     while( i--)
  164.        {        
  165.         
  166.         }
  167. }                  

  168. //    毫秒级延时函数         
  169. void delay_ms(unsigned long time)
  170.          {
  171.           while(time--)
  172.                     {        
  173.                    delay_us(1000);
  174.                   
  175.                   }
  176.          }
  177. /*******************************************************************************
  178. * Function Name  : Delay
  179. * Description    : Inserts a delay time.
  180. * Input          : nCount: specifies the delay time length (time base 10 ms).
  181. * Output         : None
  182. * Return         : None
  183. *******************************************************************************/
  184. void Delay(u32 nCount)
  185. {
  186.   delay_ms(nCount*10);
  187. }
  188. /*******************************************************************************
  189. * Function Name  : main.
  190. * Description    : Main routine.
  191. * Input          : None.
  192. * Output         : None.
  193. * Return         : None.
  194. *******************************************************************************/
  195. int main(void)
  196. {
  197.   Set_System();
  198.   Set_USBClock();
  199.   USB_Interrupts_Config();
  200.   //Pow_On;
  201.   SD_InitAndConfig();
  202.   USB_Init();
  203.   //Set_Rst;
  204. // Delay(20);
  205. //Clr_Rst;
  206. // Delay(20);
  207. // Set_Rst;
  208. // Delay(20);
  209.   
  210. // STM3210E_LCD_Init();
  211. // LCD_Clear(Black);
  212.   
  213. // Lcd_On;
  214. // LCD_SetBackColor(Black);
  215.   //LCD_SetTextColor(Yellow);   

  216. // ReadSDFile();                        
  217.    WriteSDFile();
  218.   //delay_ms(500);
  219.   
  220. // LCD_DisplayStringLine(Line0,"File read success");
  221. // LCD_DisplayStringLine(Line1,buff_filename[0]);
  222. // LCD_DisplayStringLine(Line2,buff_filename[1]);
  223. //
  224. // LCD_DisplayStringLine(Line3,"                  ");
  225. // LCD_DisplayStringLine(Line4,"                  ");
  226.   
  227. // LCD_DisplayStringLine(Line3,buff_filename[2]);
  228. // LCD_DisplayStringLine(Line4,buff_filename[3]);  

  229. // LCD_DisplayStringLine(Line5,buff_filename[4]);
  230. //  LCD_DisplayStringLine(Line6,buff_filename[5]);
  231. ……………………

  232. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
M3_SDIO USB FATFS.rar (734.01 KB, 下载次数: 171)




评分

参与人数 2黑币 +55 收起 理由
mantoufenfei + 5
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏11 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:103048 发表于 2018-2-8 14:18 | 只看该作者
谢谢分享
回复

使用道具 举报

板凳
ID:103048 发表于 2018-2-8 14:19 | 只看该作者
没黑币,下不了呢。
回复

使用道具 举报

地板
ID:367374 发表于 2018-7-22 22:24 | 只看该作者
谢谢楼主
回复

使用道具 举报

5#
ID:367374 发表于 2018-7-22 22:25 | 只看该作者
谢谢分享,最近刚好想要将一些数据通过本地存储和GPRS放在两个地方,感谢感谢
回复

使用道具 举报

6#
ID:86450 发表于 2018-9-27 10:26 | 只看该作者
谢谢分享
回复

使用道具 举报

7#
ID:79006 发表于 2019-3-28 10:06 | 只看该作者
感谢分享
回复

使用道具 举报

8#
ID:410139 发表于 2019-3-28 20:43 | 只看该作者
好东西,收藏了,谢谢楼主
回复

使用道具 举报

9#
ID:471025 发表于 2020-2-22 10:30 | 只看该作者
具体是哪个型号?怎么提示找不到单片机型号?
回复

使用道具 举报

10#
ID:818895 发表于 2021-7-7 16:47 | 只看该作者
FATFS使用是的哪个本版的呢?想最新本版的使用。
回复

使用道具 举报

11#
ID:971132 发表于 2022-1-17 08:17 | 只看该作者
正在学习FATFS,好资料,先收藏了,谢谢
回复

使用道具 举报

12#
ID:1044442 发表于 2023-8-11 10:26 | 只看该作者
适用于103
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表