(三)使用STM32CubeMX创建一个USB+FATFS的TrueSTUDIO环境下的工程

一、准备工具

  1. STM32CubeMX软件;
  2. TrueSTUDIO软件;
  3. STM32F429BI开发板带USB接口一块。

二、USB电路图

(三)使用STM32CubeMX创建一个USB+FATFS的TrueSTUDIO环境下的工程_第1张图片

从电路图可以看出,只有两个接口与单片机连接,虽然使用的是单片机的高速引脚,但缺少高速芯片(自行科普),只能拿高速(HS)引脚当全速(FS)引脚用。

三、使用STM32CubeMX配置USB及FATFS

1.时钟配置

我这里使用的是高速外部时钟

(三)使用STM32CubeMX创建一个USB+FATFS的TrueSTUDIO环境下的工程_第2张图片

时钟源是8MHz的晶振

(三)使用STM32CubeMX创建一个USB+FATFS的TrueSTUDIO环境下的工程_第3张图片

2.USB配置

选择USB_OTG_HS,配置内部PHY为主机

(三)使用STM32CubeMX创建一个USB+FATFS的TrueSTUDIO环境下的工程_第4张图片

选择USB_HOST,配置IP为MSC(大容量存储设备)模式

(三)使用STM32CubeMX创建一个USB+FATFS的TrueSTUDIO环境下的工程_第5张图片

3.FATFS配置

选择FATFS,配置Mode为USB Disk

(三)使用STM32CubeMX创建一个USB+FATFS的TrueSTUDIO环境下的工程_第6张图片

支持简体中文,使能长文件名,缓存放在栈中

(三)使用STM32CubeMX创建一个USB+FATFS的TrueSTUDIO环境下的工程_第7张图片

4.生成TrueSTUDIO工程

(三)使用STM32CubeMX创建一个USB+FATFS的TrueSTUDIO环境下的工程_第8张图片

四、添加测试程序

需要引用的变量

extern ApplicationTypeDef Appli_state;
extern USBH_HandleTypeDef hUsbHostFS;
extern char USBHPath[4];  		/* USBH logical drive path */

FATFS USBDISKFatFs;           /* File system object for USB disk logical drive */
FIL   MyFile;                 /* File object */

主函数中需要添加的程序

 /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */
    MX_USB_HOST_Process();

    /* USER CODE BEGIN 3 */
    switch(Appli_state)
    {
		case APPLICATION_READY:
			MSC_Application();
			Appli_state = APPLICATION_DISCONNECT;
			break;
		case APPLICATION_DISCONNECT:
			f_mount(NULL, "", 0);
			break;
		default:
			break;
    }
  }

MSC_Application函数的实现

/* USER CODE BEGIN 4 */
static void MSC_Application(void)
{
    FRESULT res;                             /* FatFs function common result code */
    uint32_t byteswrite;
    uint8_t wtext[] = "hello world!";

    /* Register the file system object to the FatFs module */
    if(f_mount(&USBDISKFatFs, (TCHAR const*)USBHPath, 0) != FR_OK)
    {
        /* FatFs Initialization Error */
        Error_Handler();
    }
    else
    {
        /* Create and Open a new text file object with write access */
        if(f_open(&MyFile, "hello.txt", FA_CREATE_ALWAYS | FA_WRITE) != FR_OK)
        {
            /* 'STM32.TXT' file Open for write Error */
            Error_Handler();
        }
        else
        {
            res = f_write(&MyFile, wtext, sizeof(wtext), (void *)&byteswrite);
            if(byteswrite == 0 || (res != FR_OK))
            {
            	Error_Handler();
            }
            else
            {
                /* Close the open text file */
                f_close(&MyFile);
            }
        }
    }
}

五、测试结果

插上优盘,经过一段时间,打开优盘查看内容如下所示

(三)使用STM32CubeMX创建一个USB+FATFS的TrueSTUDIO环境下的工程_第9张图片

 

你可能感兴趣的:(C语言)