2 Dimensonales Array Speicher Reservieren

#6888479
Lesenswert?

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?
#6888504
Lesenswert?

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 von einem Moderator gelöscht.
Gast #6888640
Lesenswert?

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).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren