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:
#1857155
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.
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren