Con respecto a stm32, ¿qué significan u8 y u16 en el programa?
u8 es un carácter sin firmar, u16 es un carácter corto sin firmar y u32 es un carácter largo sin firmar.
u8, u16 y u32 son todos tipos de datos del lenguaje C y representan tipos de datos de longitud de 8, 16 y 32 bits respectivamente. Un byte son 8 bits, por lo que u8 es 1 byte. u16 son 2 bytes, u32 son 4 bytes.
La declaración del tipo de datos se puede encontrar en el archivo de encabezado de la biblioteca stm32
En stdint.h:
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned long uint32_t;
En stm32f10x.h:
typedef uint32_t u32;
typedef uint16_t u16;
typedef uint8_t u8;
Información ampliada
La CPU se puede dividir en: microprocesador de 8 bits, microprocesador de 16 bits según la palabra longitud de la información que procesa Microprocesadores, microprocesadores de 32 bits y microprocesadores de 64 bits, etc. Las palabras y medias palabras se determinan en función de las características del procesador, mientras que los bytes son todos de 8 bits.
stm32 es un procesador de 32 bits, por lo que sus palabras son de 32 bits (procesando datos de 4 bytes de longitud a la vez) y la media palabra es naturalmente de 16 bits (2 bytes). A los registros que almacenan datos de tipo media palabra se accede mediante variables de tipo u16. Sin embargo, si se usan variables de tipo u8 para acceder solo a los 8 bits inferiores de los datos, no hay problema al usar variables de tipo u32 para leer. , aparecerá debido a diferentes compiladores.
La mayor ventaja de stm32 en comparación con el brazo tradicional es que no requiere alineación y se pueden almacenar tres tipos de datos sin problemas en la memoria. Los arm7 o arm9 tradicionales están alineados según la dirección, lo que significa que no importa si los datos de 8 o 16 bits ocuparán 4 bytes de espacio, el resultado es una pérdida de memoria.
stdint.h - Referencia de C++
Archivos de encabezado: stm32f10x.h