STM32 LED blinken Startschwierigkeiten

Gast #1857122
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.
1
#include <stm32f10x_cl.h>
2
#include <stm32f10x_lib.h>
3
  
4

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

7

8
int main(void) {
9
  volatile long i;
10

11
  GPIO_InitTypeDef GPIO_InitStructure;
12

13
  SystemInit();
14

15
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);
16

17
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
18
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
19
  GPIO_InitStructure.GPIO_Pin = ALL_LEDS;
20

21
  GPIO_Init(GPIOE, &GPIO_InitStructure);
22

23
  while(1) {
24
    GPIO_SetBits(GPIOE, ALL_LEDS);
25
    for(i = 0; i < 1000000; i++);
26
    GPIO_ResetBits(GPIOE, ALL_LEDS);
27
    for(i = 0; i < 1000000; i++);
28
  }
29
}

Der komplette Errorlog befindet sich im Anhang.
Angehängte Dateien:
Gast #1857252
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.
Gast #1857671
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

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.