Так что я хотел бы быть немного лучше, но мне определенно понадобится больше информации, чтобы дать вам правильное направление. При этом, может быть, что-то не так, поэтому я постараюсьпокрыть то, что я могу придумать.Давайте начнем с некоторых из наиболее очевидных.
Конфигурация часов / оборудование может вызывать проблемы из-за неисправных компонентов или неправильного выбора программного / аппаратного обеспечения.Это может вызвать ряд проблем, но это может быть симптомом этого.
Если вы используете сгенерированное промежуточное программное обеспечение FATFS из ST, небольшой размер стека внутри конфигурации L4 может вызвать именно эту проблему.он может работать до тех пор, пока регистр ПК не получит ошибочную ошибку, которая может привести к некоторой неисправности или, в некоторых случаях, просто к плохому результату, возвращенному внутри FATFS, или к периферийному коду USB от ST, и он вернет грязный сектор наОкно USB считывается из FATFS, что приводит к завершению операций на периферийном устройстве.
Я вижу, что вы используете STM32Cube, поэтому вы можете редактировать размер стека и кучи, открыв файл startup_stm32l475xx.s
и отредактируйте их, как считаете нужным для вашего приложения.
; Amount of memory (in bytes) allocated for Stack
; Tailor this value to your application needs
; <h> Stack Configuration
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
Stack_Size EQU 0x400
AREA STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem SPACE Stack_Size
__initial_sp
; <h> Heap Configuration
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
Heap_Size EQU 0x200
Попробуйте увеличить размер стека и посмотрите, что произойдет.Удачи в поиске вашего решения!