Hi, ich möchte bei einem STM32 Projekt in C folgendes Array definieren: uint8_t display[64][32]; Und dann den einzelnen Speicherzellen quasi Werte zur Laufzeit zuweisen: display[63][1]=0xFF Das schlägt mit Invalid Initalizer fehl, klar ich muss den Speicher für 64*32 Bytes erst reservieren nehme ich an? Sorry für die dumme Frage, aber ich hab gerade eine Denkblockade was malloc usw angeht. Hab das lange nicht mehr benötigt. Was muss ich genau tun, damit mein vorhaben gelingt?
Johannes M. schrieb: > Was muss ich genau tun, damit mein vorhaben gelingt? Den Fehler in Zeile 42 beheben, das fehlende Semikolon einfügen, oder den Originalcode mit der Originalfehlermeldung zeigen. Oliver
Compilermeldung ist folgende: arm-none-eabi-gcc "../Core/Src/main.c" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DDEBUG -DSTM32L496xx -c -I../Core/Inc -I../Drivers/STM32L4xx_HAL_Driver/Inc -I../Drivers/STM32L4xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32L4xx/Include -I../Drivers/CMSIS/Include -I../FATFS/Target -I../FATFS/App -I../Middlewares/Third_Party/FatFs/src -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Core/Src/main.d" -MT"Core/Src/main.o" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Core/Src/main.o" ../Core/Src/main.c:81:1: warning: data definition has no type or storage class 81 | display[63][1]=0xFF; | ^~~~~~~ ../Core/Src/main.c:81:1: warning: type defaults to 'int' in declaration of 'display' [-Wimplicit-int] ../Core/Src/main.c:81:1: error: conflicting types for 'display' ../Core/Src/main.c:79:9: note: previous definition of 'display' was here 79 | uint8_t display[64][32]={{0xFF}}; //Neues Array für 1 Displayfeld Bit 0=Rot,1=Gelb,2=Blau | ^~~~~~~ ../Core/Src/main.c:81:16: error: invalid initializer 81 | display[63][1]=0xFF; | ^~~~ make: *** [Core/Src/subdir.mk:34: Core/Src/main.o] Error 1 "make -j4 all" terminated with exit code 2. Build might be incomplete.
Beitrag #6888523 wurde vom Autor gelöscht.
Ok, Fehler in Zeile 81. Du hast sehr wahrscheinlich die Zeile mit dem Fehler außerhalb einer Funktion stehen. Daher: Zeig den Code. Oliver
Asche auf mein Haupt, ich bin ein depp. Die Variable ist global definiert und ich hab die Zuweisung direkt danach außerhalb einer Funktion versucht. Ist damit erledigt.
direkt bei der Definition einen Wert zuweisen.
1 | uint8_t display[64][32] = { [0][0]=0x00, [1][1] = 0x01, [63][1] = 0xFF }; |
Der Rest wird automatisch auf 0 gesetzt (was bei global sowieso der Fall wäre).
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.