¿Cómo almacenar el carácter de 8 bits en la memoria Flash de datos de 32 bits?

0

¿Es posible almacenar un flash interno de datos de 8 bits a 32 bits en el microcontrolador usando solo 8 bits de espacio para cada byte?, usando una combinación de 4 bytes que también se puede recuperar como bytes individuales más adelante. Estoy usando un microcontrolador Nuc240 (ARM-M0) con Data Flash de 32 bits y un límite de borrado de 512 bytes, el límite de lectura y escritura es de 32 bits.
Por favor explique una plantilla de código si es posible.

    
pregunta Arun Joe

2 respuestas

2

Sí, ya sea por matriz o estructura.

char memory [4] = { 'a', 'b', 'c', 'd' };  // Uses 4-bytes (32-bits)

// memory [0] = 'a';
// memory [1] = 'b';
// memory [2] = 'c';
// memory [3] = 'd';

// ... store 'memory' in internal flash memory ...

O

typedef struct
{
    char byte_0;
    char byte_1;
    char byte_2;
    char byte_3;
} memory_t;

memory_t memory; // Uses 4-bytes (32-bits );

memory.byte_0 = 'a';
memory.byte_1 = 'b';
memory.byte_2 = 'c';
memory.byte_3 = 'd';

// ... store 'memory' in internal flash memory ...
    
respondido por el BufferOverflow
0

La forma estándar de almacenar datos en flash en el momento del enlace cuando la programación de C es declarar la variable como const .

const uint8_t array[4] = {0, 1, 2, 3};

La mayoría de los compiladores sabrán entonces colocar esta matriz en flash en lugar de RAM, pero solo si la variable también tiene una duración de almacenamiento estático. Lo que significa que la matriz anterior debe declararse en el ámbito del archivo o como static . Vea esto para más detalles .

Los compiladores también tienen una sintaxis no estándar para colocar una matriz en una parte específica de flash, que es lo que debe usar si lo anterior no funciona en su compilador específico. También puede ser útil cuando, por ejemplo, se trata de eeprom / data flash.

    
respondido por el Lundin

Lea otras preguntas en las etiquetas