Skocz do zawartości

[C] [STM32] [FATFs] - Program zawiesza się po deklaracji dużej tablicy


peter507

Pomocna odpowiedź

Witam,

Program jak poniżej w debuggerze zaiwesza się już na lini f_open. W momencie gdy zakomentuje linie z buforem BYTE buffer[256] program rusza i otwiera plik. Również gdy zmniejsze rozmiar tablicy np do 20 to program też przechodzi dalej i fresult zwraca FR_OK. Czym to może być spowodowane ?

#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
#include "stm32f10x_flash.h"
#include "ff.h"
#include "diskio.h"
#include "init_spi.h"
#include <stdio.h>


void GPIO_init(void);
FATFS FatFs;   /* Work area (file system object) for logical drive */

int main(void)
{


FIL     file;
FRESULT fresult;
UINT len;
BYTE buffer[25];

GPIO_init();
init_spi();


disk_initialize(0);
fresult = f_mount(&FatFs, "", 0);

	// Sprawdzenie czy jest plik z programem
if(fresult == FR_OK)
	fresult = f_open(&file,"update.bin", FA_OPEN_EXISTING | FA_READ);

fresult = f_read(&file,buffer,sizeof buffer,&len);

while(1)
   {

   }
}
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

To zależy jakiego kompilatora/środowiska używasz. W "dobrych" kompilatorach znajdziesz odpowiednie ustawienia w parametrach projektu. A jeśli używasz gcc, trzeba poszukać skryptu linkera (np. LinkerScript.ld). U mnie jest taka linijka:

_Min_Stack_Size = 0x100; /* required amount of stack */

Czyli jak widać stos ma 256B, co może okazać się niewystarczające.

  • Pomogłeś! 1
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.