Red de conocimiento del abogados - Respuesta a la Ley de patrimonio - Con respecto a stm32, ¿qué significan u8 y u16 en el programa?

Con respecto a stm32, ¿qué significan u8 y u16 en el programa?

U8 es un carácter sin signo, u16 es un entero corto sin signo y u32 es un entero largo sin signo.

U8, u16 y u32 son todos tipos de datos del lenguaje C y representan tipos de datos de 8, 16 y 32 bits respectivamente. Un byte tiene 8 bits, por lo que u8 tiene 1 byte, u16 tiene 2 bytes y u32 tiene 4 bytes.

Puede encontrar la declaración del tipo de datos en el archivo de encabezado de la biblioteca stm32.

En stdint.h:

typedef unsigned char uint 8_t;

typedef unsigned short uint 16_t;

typedef unsigned long uint 32_t ;

En stm32f10x.h:

typedef uint32_t u32

typedef uint 16 _ t u 16

typedef uint8 _ t u8<; /p>

Datos extendidos

La CPU se puede dividir en microprocesador de 8 bits, microprocesador de 16 bits según la longitud de la palabra de la información que procesa, microprocesador de 32 bits y microprocesador de 64 bits. Microprocesador de bits. Las palabras y medias palabras se determinan en función de las características del procesador, mientras que los bytes son de 8 bits.

Stm32 es un procesador de 32 bits, por lo que su palabra es de 32 bits (cada vez se procesan datos de 4 bytes de longitud) y la media palabra es, naturalmente, de 16 bits (2 bytes). A los registros que almacenan datos de media palabra se accede mediante variables de tipo u16. Sin embargo, si una variable de tipo u8 solo puede acceder a los 8 bits inferiores de los datos, no hay problema en leerlos con una variable de tipo u32. Sin embargo, habrá desviaciones. al escribir debido a diferentes compiladores.

En comparación con el brazo tradicional, la mayor ventaja de stm32 es que no requiere alineación y los tres tipos de datos se pueden almacenar sin problemas en la memoria. Sin embargo, los arm7 o arm9 tradicionales están alineados según las direcciones, lo que significa que los datos de 8 o 16 bits ocuparán 4 bytes de espacio, lo que provocará un desperdicio de memoria.

stdint.h - Referencia de C++

Archivo de encabezado: stm32f10x.h