STM32-ARM-Header-Dateien zur Verwendung mit Eclipse und GCC

Ich studiere Mechatronik (Mechanik und Elektrotechnik) und möchte lernen, wie man ARM-Mikroprozessoren programmiert. Ich habe zuvor Atmel ATMegas verwendet. Ich verwende einen Mac und möchte als Student keine teure Software verwenden, also habe ich Eclipse, Yagarto und openocd gemäß diesem Blogbeitrag installiert . Was ich jedoch wissen möchte, ist, wo ich Header-Dateien für einzelne Chips bekomme, da ich in C programmieren möchte, nicht in Assembly?.

Ich plane die Verwendung von STM32-Chips, da diese und die LPC-Chips von NXP die beliebtesten zu sein scheinen und STM32-Chips fortschrittlicher zu sein scheinen. Ich habe festgestellt, dass es einige Header-Dateien gibt, wenn sie Teil von Entwicklungsboards sind, z. B. für den STM32F103RBT6, wenn er Teil von STM32-H103 von Olimex ist, aber ich kann anscheinend keine Header-Dateien für andere Chips derselben Familie finden.

Eine sekundäre Frage ist, gibt es Tutorials für die C-Programmierung von STM32-Chips oder Cortex-M-basierten Chips? Ich kann anscheinend keine Tutorials finden, die die Grundlagen wie das Blinken einer LED durchgehen.

Antworten (2)

Ein gutes Buch, das Cortex-M3-basierte Mikrocontroller vorstellt, ist „ The definitve guide to the ARM Cortex-M3, Second Edition “, geschrieben von Joseph Yiu. Es enthält sowohl Hardware- als auch Softwareerklärungen.

Es gibt einen Softwareschnittstellenstandard für Cortex-M-Prozessoren namens CMSIS (Cortex Microcontroller Interface Software). Sie können Standardbibliotheken für Peripheriegeräte von der Hersteller-Website des Mikrocontrollers herunterladen, die die CMSIS-Header-Dateien und Quelldateien enthält.

Sie benötigen außerdem einen Startcode, um Ihren Mikrocontroller zu initialisieren, bevor Sie die Hauptschleife ausführen. Es wird normalerweise von der IDE bereitgestellt, aber ich weiß nicht, ob es Eclipse-Pakete gibt, die die Arbeit für Sie erledigen können.

Hier ist ein sehr einfaches Programm zum Blinken einer LED auf dem STM32VLDISCOVERY-Board, das den STM32F100RB verwendet:

/* 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++)
    ;
}