Configuración de registros en ARM Cortex M3

0

He estado aprendiendo a programar el microcontrolador LPC2148 (ARM7), y hoy conseguí una placa LPC1768 (Cortex M3). Al referirme a su manual, traté de hacer un programa de parpadeo de LED y lo hice de la siguiente manera, siguiendo los mismos métodos que LPC2148 (configuración de bloque de conexión de pin y registros GPIO)

#include <LPC17xx.H>
int main()
{
  int i;
  PINSEL0 = 0;
  FIO0DIR = 0XFFFFFFFF;

  while(1)
  {
     FIO0SET = 0XFFFFFFFF;
     for(i=0; i<100000; i++);
     FIO0CLR = 0XFFFFFFFF;
     for(i=0; i<100000; i++);
  }
}

Pero tiene un error como PINSEL, FI0SET ... como indefinido.

después de consultar algunos códigos de ejemplo, tengo que usar

LPC_PINCON->PINSEL0 = 0X00000000;
LPC_GPIO0->FIODIR 

¿De dónde viene este LPC_GPIO & LPC_PINCON viene de? Según un tutorial en línea

Según la convención de CMSIS, los registros que vimos se agrupan en estructuras. LPC_GPIOx se define como un puntero a esta estructura en el encabezado LPC17xx.h. Estos registros se definen como miembros de esta estructura. Por lo tanto, para utilizar cualquier registro, por ejemplo, FIODIR, debemos usar la flecha "- >" operador para desviar la referencia de los miembros de la estructura (ya que la estructura en sí es un puntero) para acceder al registro de la siguiente manera: LPC_GPIO0- > FIODIR = algún valor.

No pude encontrar ninguna referencia a esto en el manual.

¿Hay documentación disponible?

    
pregunta Athul

2 respuestas

1

Mi experiencia es que muchos fabricantes tienen manuales incorrectos o nulos para sus archivos de inclusión. A menudo tienen una gran cantidad de programas de ejemplo que utilizan esas estructuras.

Las GUI modernas tienen soporte para mostrar una lista de todas las subestructuras. A continuación un ejemplo de captura de pantalla.

Peroesonoayudaamenosquesepalas'runasdeiniciomágico'(PIOAenestecaso).Inclusoentoncesesposiblequenosepaloquehace"PIO_ABCDSR". (Vea mi comentario sobre las hojas de datos más adelante) Últimamente he estado buscando cada vez más en los archivos de inclusión. Al principio es un poco de trabajo localizar los archivos apropiados, pero encontré que al final es más rápido que buscar en Internet, los programas de ejemplo o los manuales.

Yo tengo tengo la hoja de datos junto a mi teclado, ya que los nombres de registro y de campo a menudo (pero no siempre) se corresponden con los nombres utilizados en los archivos de encabezado.

    
respondido por el Oldfart
0

La documentación relevante para esta convención es la documentación de Arm CMSIS-Core, específicamente Acceso Periférico , es posible que también desee consultar File Header File . Sin embargo, creo que estos están un poco más dirigidos a los proveedores de dispositivos que a los usuarios finales.

    
respondido por el Sean Houlihane

Lea otras preguntas en las etiquetas