www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik STM32 LED blinken Startschwierigkeiten


Autor: Tobi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich mache gerade meine ersten Schritte mit einem STM32. Dazu habe ich 
das MCBSTM32C Board von Keil. Ich nutze auch µVision als IDE und den 
mitgelieferten Compiler.

Auf dem Board sind an PortE Pin 15-8 LEDs angebracht, die ich blinken 
lassen wollte. Natürlich möchte ich nicht direkt die Hardwareregister 
ansprechen, sondern ich möchte die Treiberfunktionen benutzen. 
Allerdings bekomme ich eine Menge Fehlermeldungen. Was die 
Fehlermeldungen sagen ist klar, aber sie beziehen nich alle auf Code aus 
der Bibliothek. Daher stellt sich mir die Frage, ob ich einfach nur 
einen Fehler bei der Vernwendung der Bibliothek mache.

Ich habe lediglich ein neues Projekt erstellt, den Startup-Code 
automatisch laden lassen und zusätzlich eine main.c mit folgendem Inhalt 
erstellt.
#include <stm32f10x_cl.h>
#include <stm32f10x_lib.h>
  

#define ALL_LEDS (GPIO_Pin15 | GPIO_Pin14 | GPIO_Pin13 | GPIO_Pin12 | GPIO_Pin11 | GPIO_Pin10 | GPIO_Pin9 | GPIO_Pin8)   


int main(void) {
  volatile long i;

  GPIO_InitTypeDef GPIO_InitStructure;

  SystemInit();

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_InitStructure.GPIO_Pin = ALL_LEDS;

  GPIO_Init(GPIOE, &GPIO_InitStructure);

  while(1) {
    GPIO_SetBits(GPIOE, ALL_LEDS);
    for(i = 0; i < 1000000; i++);
    GPIO_ResetBits(GPIOE, ALL_LEDS);
    for(i = 0; i < 1000000; i++);
  }
}

Der komplette Errorlog befindet sich im Anhang.

Autor: Matthias K. (matthiask)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eigentlich ist der Projektaufbau bei Nutzung der STM LIB anders.

Bei Keil sind einige Projekttemplates dabei. Solltest Dir auch zuerst 
mal von STM die aktuelle LIB runterladen, bei KEIL sind möglicherweise 
alte Versionen dabei. In der STM LIB sind auch viele Projektbeipiele, 
einfach eins nehmen und erstmal nur die Main anpassen.

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Matthias K. schrieb:
> Eigentlich ist der Projektaufbau bei Nutzung der STM LIB anders.

Wie meinst du das?

Ich habe mir die Lib von ST runtergeladen, aber ich hab keine Ahnung wie 
genau ich da jetzt etwas mit machen soll.

Bei den AVRs, also im AVR32Studio, konnte man ja einfach sagen welche 
Peripherie man braucht und es wurden direkt die passenden Libraries zum 
Projekt hinzugefügt. Bei Keil steh ich völlig auf dem Schlauch.

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe jetzt mit einem Beispiel etwas rumgespielt und jetzt blinken die 
LEDs. Allerdings weiß ich immer noch nicht wie ich "normal" damit 
arbeiten kann.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tobi schrieb:

> Der komplette Errorlog befindet sich im Anhang.

Und ist typisch für falsche Verwendung der Include-Files.

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und wie benutzt man die richtig?

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wird dir jemand beantworten müssen der sie kennt. Hier nix µVision und 
zur ST lib gehören sie nicht.

Autor: wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
..."Und ist typisch für falsche Verwendung der Include-Files."

Ach ja?

es wäre wohl besser gewesen, wenn du anstelle dieser Bemerkung mal 
erklärt hättest, wie man Include-Files richtig verwendet.

Mal ganz prinzipiell: Die Sprache C ist so gedacht, daß man eine 
C-Quelle komplett separat übersetzen kann, ohne auf irgendwelche in der 
Quelle nicht genannten Bezüge vertrauen zu müssen. Aber schlechte 
Programmierer (von denen es Myriaden gibt) ignorieren dies und arbeiten 
gerne mit Zusatz-Definitionen auf der Kommandozeile, bestimmten 
Reihenfolgen beim Einbinden von Header-Dateien und so weiter.

Also, es gibt keine falsche Verwendung von Include-Files, sondern nur 
fehlerhaft geschriebene Include-Files. Leider betrifft dies fast alles, 
was mit den STM32-Controllern zu tun hat. Da gibt es keine Sicherung 
gegen doppeltes Einbinden, keine 'extern' Vermerke, dafür aber 
Variablenvereinbarungen und so weiter.

Mein Rat an Tobi: Verzichte erstmal auf alles Vorgefertigte 
(ST-Standard-Libs, Startup-Dateien, chipspezifische Header) und mach all 
dieses dir für's erste selber - und zwar anhand des zum Controller 
gehörigen Hardware-Manuals. Das ist zwar die extrem verschärfte 
Ochsentour, aber wenn man sich da durchgebissen hat, kennt man seinen 
Prozessor und weiß, was für einen undurchsichtigen Wust und Overhead man 
sich durch die oberschlauen Bibliotheken einfängt.

Alles Gute
wolfgang

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wolfgang schrieb:

> es wäre wohl besser gewesen, wenn du anstelle dieser Bemerkung mal
> erklärt hättest, wie man Include-Files richtig verwendet.

Und hätte mir extra dafür Keil µVision besorgen sollen? Wie gesagt, zur 
STlib gehören diese Includes nicht, das hatte ich verifiziert.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.