STM Урок 36. USB. Host Mass Storage Class. Часть 2

 

 

 

 

Урок 36

Часть 2

 

USB. Host Mass Storage Class

 

 

Продолжаем работать с тем же проектом USB_HOST_MSC_FATFS.

В файле main.c в функции FileReadWrite продублируем участок кода

 

  if(f_mount(&USBDISKFatFs, (TCHAR const*)USBH_Path, 0) != FR_OK)

  {

    /* FatFs Initialization Error */

    Error_Handler();

  }

else

{

        if(f_open(&MyFile, "123.txt", FA_READ) != FR_OK)

        {

                Error_Handler();

        }

        else

        {

                res = f_read(&MyFile, rtext, sizeof(rtext), (void *)&bytesread);

                if((bytesread == 0) || (res != FR_OK))

                {

                        Error_Handler();

                }

                else

                {

                        LCD_Clear();

                        LCD_SetPos(0,0);

                        LCD_String((char*)rtext);

                        f_close(&MyFile);

                }

        }

}

 

И один из дублей закоментируем, перед ним напишем комментарий //Read, а с другим будем работать, исправляя его для записи в файл.

 

 

Данный участок исправим следующим образом

 

else

{

 if(f_open(&MyFile, "`1234.txt", FA_CREATE_ALWAYS | FA_WRITE) != FR_OK)

        {

                        Error_Handler();

 

То есть, если файл существует, то мы его открываем на запись, если не существует, то предварительно создаем.

Добавим переменную в нашу функцию

 

  uint8_t rtext[100];                                   /* File read buffer */

  uint8_t wtext[] = "STM32 is OK!"; /* File write buffer */

//Read

 

Изменим строчку чтения на запись

 

res = f_write(&MyFile, wtext, sizeof(wtext), (void *)&byteswritten);

 

В следующей строке также будут некоторые изменения

 

        res = f_write(&MyFile, wtext, sizeof(wtext), (void *)&byteswritten);

        if((byteswritten == 0) || (res != FR_OK))

 

Из дальнейшего кода мы уберем вывод на дисплей а добавим код включения зеленого светодиода

 

                        if((byteswritten == 0) || (res != FR_OK))

                        {

                                Error_Handler();

                        }

                        else

                        {

                                f_close(&MyFile);

                                HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12, GPIO_PIN_SET);

                        }

 

Соберем код, прошьём контроллер, и увидим что светодиод светится. Также вынем наш флеш-диск, воткнем его в usb-порт ПК, откроем и посмотрим, создан ли файл и записана ли в файл информация.

 

Предыдущая часть Программирование МК STM32 Следующий урок

 

Исходный код

 

 

Купить отладочную плату можно здесь STM32F4-DISCOVERY

 

 

Смотреть ВИДЕОУРОК

 

STM32 USB. Host Mass Storage Class

4 комментария на “STM Урок 36. USB. Host Mass Storage Class. Часть 2
  1. Владимир:

    Большое спасибо за ваши уроки!

  2. kmspb:

    Спасибо!
    Попробовал настроить трассировку на STM32F407VET6 плате. 4 дня убил , но все наконец-то получилось с вашей помощью. Может будет интересно другим и сделаете урок на эту тему.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*