STM32_使用STM32CubeMX創建一個USB+FATFS的TrueSTUDIO編譯環境下的工程


一、准備工具

  1. STM32CubeMX軟件;
  2. TrueSTUDIO軟件;
  3. STM32F429BI開發板帶USB接口一塊。

二、USB電路圖

  從電路圖可以看出,只有兩個接口與單片機連接,雖然使用的是單片機的高速引腳,但缺少高速芯片(自行科普),只能拿高速(HS)引腳當全速(FS)引腳用。

三、使用STM32CubeMX配置USB及FATFS

  1、時鍾配置

  我這里使用的是高速外部時鍾

  時鍾源是8MHz的晶振

  2、USB配置

  選擇USB_OTG_HS,配置內部FS Phy為主機

  選擇USB_HOST,配置IP為MSC(大容量存儲設備)模式

  3、FATFS配置

  選擇FATFS,配置Mode為USB Disk

  支持簡體中文,使能長文件名,緩存放在棧中

  4、生成TrueSTUDIO工程

四、添加測試程序

  需要引用的變量

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);
            }
        }
    }
}

五、測試結果

  插上優盤,經過一段時間,打開優盤查看內容如下所示

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM