Red de conocimiento informático - Problemas con los teléfonos móviles - Especialización en lenguaje STM32 C

Especialización en lenguaje STM32 C

Este es el lenguaje C estándar, no un uso especial de STM32. Lo que escribiste es correcto, equivalente a:

((int *) 0x00000000) = 1

Esto significa;

Entonces, ¿por qué utilizar una estructura?

Este no es un uso especial del lenguaje C, sino que debido a la arquitectura periférica de los microcontroladores como STM32, STM32 reúne todos los mismos tipos de periféricos, lo que hace que sea mucho más fácil escribir bibliotecas.

Es demasiado detallado, no lo entiendo del todo Déjame darte un ejemplo:

Por ejemplo, quiero decir, por ejemplo, la dirección de registro CRL de GPIOA es 0. y la dirección del registro CRH es 4. La dirección del registro IDR es 8 y la dirección del registro ODR es 12. Entonces, según lo que acaba de escribir, es

#define GPIOA_CRL * (unsigned long *(unsigned long *(unsigned long))) ((unsigned long* )(0x00000000))

#define GPIOA_CRH *((unsigned long*)(0x00000004))

#define

#define GPIOA_IDR *((unsigned long *)( 0x00000008))

#define GPIOA_ODR *((unsigned long*)(0x0000000C))

Usar estructura

estructura typedef

{

vu32 CRL;

vu32 CRH;

vu32 IDR;

vu32 ODR;

vu32 BSRR;

vu32 BRR;

vu32 LCKR;

} GPIO_TypeDefGPIO_TypeDef;

GPIO_TypeDef * GPIOA = (GPIO_TypeDef *)(0x00000000 );

Si se escribe así, está predeterminado que la dirección de GPIOA->CRL debe ser 0;

El la dirección de GPIOA->CRH debe ser 4;

GPIOA->La dirección de IDR debe ser 8;

Es mucho más fácil que tu forma de escribir, ¿no?