diff --git a/Core/Src/freertos.c b/Core/Src/freertos.c index d2639b0..a258f6b 100755 --- a/Core/Src/freertos.c +++ b/Core/Src/freertos.c @@ -76,6 +76,9 @@ uint16_t rxIndex = 0; // Индекс в буфере приёма /* USER CODE BEGIN Variables */ extern FATFS USERFatFs; extern char USERPath[4]; + +// Импортируем флаг из драйвера USB +extern volatile uint8_t pc_wrote_file_flag; /* USER CODE END Variables */ /* Definitions for defaultTask */ osThreadId_t defaultTaskHandle; @@ -180,7 +183,16 @@ void StartDefaultTask(void *argument) /* Infinite loop */ for(;;) { - // Наш будущий код для мигания светодиодом будет здесь + // Проверяем, совершил ли ПК запись на наш диск + if (pc_wrote_file_flag == 1) + { + // Включаем светодиод (замените GPIOB и GPIO_PIN_0 на пин) + HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_7); + HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_14); + + // Сбрасываем флаг, чтобы ждать следующей записи + pc_wrote_file_flag = 0; + } vTaskDelay(pdMS_TO_TICKS(50)); } /* USER CODE END StartDefaultTask */ diff --git a/USB_DEVICE/App/usbd_storage_if.c b/USB_DEVICE/App/usbd_storage_if.c index 04fa621..658619d 100644 --- a/USB_DEVICE/App/usbd_storage_if.c +++ b/USB_DEVICE/App/usbd_storage_if.c @@ -113,6 +113,8 @@ const int8_t STORAGE_Inquirydata_FS[] = {/* 36 */ /* USER CODE END INQUIRY_DATA_FS */ /* USER CODE BEGIN PRIVATE_VARIABLES */ +// Флаг будет взводиться в 1, когда ПК пишет данные на диск +volatile uint8_t pc_wrote_file_flag = 0; /* USER CODE END PRIVATE_VARIABLES */ @@ -265,6 +267,9 @@ int8_t STORAGE_Write_FS(uint8_t lun, uint8_t *buf, uint32_t blk_addr, uint16_t b UNUSED(blk_addr); UNUSED(blk_len); + // Взводим флаг: ПК только что записал сектор (файл загружается/обновляется) + pc_wrote_file_flag = 1; + return (USBD_OK); /* USER CODE END 7 */ }