Archivos de encabezado STM32 ARM para usar con Eclipse y GCC

Soy estudiante de ingeniería mecatrónica (mecánica y eléctrica) y quiero aprender a programar microprocesadores ARM. He usado Atmel ATMegas anteriormente. Estoy usando una Mac y siendo estudiante, no quiero usar un software costoso, así que instalé eclipse, Yagarto y openocd según esta publicación de blog . Sin embargo, lo que quiero saber es dónde obtengo los archivos de encabezado para chips individuales, ya que quiero programar en C, no ensamblar.

Estoy planeando usar chips STM32 ya que estos y los chips LPC de NXP parecen ser los más populares y los chips STM32 parecen ser más avanzados. Descubrí que hay algunos archivos de encabezado cuando son parte de placas de desarrollo, como STM32F103RBT6 cuando es parte de STM32-H103 de Olimex , pero parece que no puedo encontrar archivos de encabezado para otros chips de la misma familia.

Una pregunta secundaria es, ¿hay tutoriales para la programación en C de chips STM32 o chips basados ​​en Cortex-M? Parece que no puedo encontrar ningún tutorial que analice los conceptos básicos, como hacer parpadear un LED.

Respuestas (2)

Un buen libro que presenta los microcontroladores basados ​​en Cortex-M3 es " La guía definitiva de ARM Cortex-M3, segunda edición ", escrito por Joseph Yiu. Contiene explicaciones tanto de hardware como de software.

Existe un estándar de interfaz de software para los procesadores Cortex-M que se llama CMSIS (Software de interfaz de microcontrolador de Cortex). Puede descargar bibliotecas de periféricos estándar desde el sitio web del fabricante del microcontrolador, que contiene los archivos de encabezado y los archivos fuente de CMSIS.

También necesitará un código de inicio para inicializar su microcontrolador antes de ejecutar el ciclo principal. Por lo general, lo proporciona el IDE, pero no sé si hay paquetes de Eclipse que puedan hacer el trabajo por usted.

Aquí hay un programa muy simple para hacer parpadear un LED en la placa STM32VLDISCOVERY, que usa el STM32F100RB:

/* Test.c
** Simple program for STM32F100RB to flash LED on PC_9
**
*/

#include <stm32f10x.h>

void delay(void);

void main(void)
{
  // I/O port C clock enable
  RCC->APB2ENR = RCC_APB2ENR_IOPCEN;
  // Set PC_9 to output 
  GPIOC->CRH &= ~(GPIO_CRH_MODE9 | GPIO_CRH_CNF9);
  GPIOC->CRH |= GPIO_CRH_MODE9;

  while(1)
  {
    GPIOC->BSRR = (1<<9);
    delay();
    GPIOC->BRR = (1<<9);
    delay();
  }
}

void delay(void)
{
  volatile unsigned int i;

  for (i = 0; i < 20000; i++)
    ;
}