La Red de Conocimientos Pedagógicos - Currículum vitae - ¿Cuáles son las siete direcciones de registro GPIO de STM32 y cómo configurar la dirección de mapeo?

¿Cuáles son las siete direcciones de registro GPIO de STM32 y cómo configurar la dirección de mapeo?

Tome GPIOA como ejemplo:

¿Cómo se calcula la dirección base de GPIOA? Porque todos los GPIO están instalados en el bus APB2.

Arriba, su dirección base está determinada por la dirección base del bus APB2 y la dirección de desplazamiento de GPIOA en el bus APB 2.

Sí. Por analogía, podemos calcular la dirección base GPIOA. Aquí diseñamos algunos conocimientos sobre autobuses,

hablaremos de ello más adelante. Abrimos stm32f10x.h y localizamos la definición de GPIO_TypeDef:

estructura typedef

{

_ _IO uint32_t CRL

_ _ IO uint 32 _ t CRH;

_ _ IO uint32 _ t IDR

_ _ IO uint 32 _ t ODR;

_ _ IO uint 32 _ t BSRR;

_ _ IO uint 32 _ t BRR

_ _ IO uint32 _ t LCKR

} GPIO _ TypeDef

Luego navegue hasta:

#Define GPIOA((GPIO _ TypeDef *)GPIOA _ BASE)

Como puede ver, GPIOA obliga a GPIOA_BASE a convertirse en un puntero GPIO_TypeDef , también Es decir,

GPIOA apunta a la dirección GPIOA_BASE y el tipo de datos almacenado en GPIOA_BASE es GPIO_TypeDef. Luego haga doble clic en "GPIOA_BASE" y luego haga clic derecho en "Ir a definición" para ver GPIOA_BASE.

Definición de macro:

#define GPIOA _ BASE(APB 2 peri ph _ BASE 0x 0800)

Y así sucesivamente, puedes encontrar el nivel superior:

#define APB 2 peri ph _ BASE(peri ph _ BASE 0x 10000)

# define PERIPH _ BASE((uint 32 _ t)0x 40000000)

Entonces podemos calcular los bits de dirección base de GPIOA:

GPIOA _ BASE = 0x 40000000 0x 10000 0x 0800 = 0x 40010800

Estos se pueden encontrar en la Sección 4.6 del STM32 Guía de desarrollo - Función de biblioteca Versión _ V1.3 (P.123) ¿Encontrada? MDK? La tabla de asignación de direcciones de registro (P159) en el Manual de referencia chino STM32 V10 es más detallada. ¿Supongo que tienes estos dos manuales? Si no, descárgalo. Lo he subido y la tarifa es. . . No lo aceptaré.

Pero claro, ¿arriba? 08274061 tiene razón. Es realmente difícil aprender bien el 32 sin leer las instrucciones. También estoy leyendo 32. Vi esta sección y cuando encontré tu pregunta, la respondí ~~ Los estudiantes estudian mucho ~~