Forum: Mikrocontroller und Digitale Elektronik STM32 Anfängerfragen


von technikus (Gast)


Lesenswert?

Hallo Profis,

ich habe heute mein STM32 Discovery bekommen und die letzten Tage viel 
gelesen.

Folgende Fragen beantwortet mir Tante G oder mikrocontroller.net leider 
nicht. Vielleicht kann man das hier als Sammelthread nutzen???

1. Portinitialisierungen mit der STM32 Standard Peripheral Library

Wie ich aus folgendem Beitrag erkennen kann
http://www.mikrocontroller.net/articles/STM32F10x_Standard_Peripherals_Library
wird unter Verwenung der GPIO_InitTypeDef Struktur erst die Einträge aus 
der Struct gefüllt.
1
GPIO_InitTypeDef GPIO_InitStructure;
2
3
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
4
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
5
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;

Dann wird der gesamte Port mit Inhalt der Struktur initialisiert
1
GPIO_Init(GPIOA, &GPIO_InitStructure);

Ich frage mich nun, wie mit dieser Prozedur jetzt z.B. A0 als Eingang, 
A1 als Ausgang definiert werden kann? Also nicht wie oben beide als PP 
Ausgang.

Muss ich dann per Register initialisieren um Ein- und Ausgänge an einem 
Port zu nutzen?


2. Da ich eine Delayfunktion suche, finde ich immer Hinweise zum 
SysTick.
Der SysTick_Handler ist nach meinen Recherchen in der stm32f10x_it.c zu 
finden.
Ich nutze CooCox 1.7.5 hier kann man *.h und *.c files über das 
Repository hinzufügen. Aber die stm32f10x_it.c kriege ich nicht ins 
Projekt.
Finde Sie auf meiner Festplatte auch nicht.

Kann mir jemand Schritt für Schritt erklären wie ich die Datei in mein 
Projekt kriege.

Das war es erst einmal.

Vielen Dank

Ersnt

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Zu 1)
1
GPIO_InitTypeDef GPIO_InitStructure;
2
3
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
4
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
5
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; // Nur der eine Pin
6
GPIO_Init(GPIOA, &GPIO_InitStructure);
7
8
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
9
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; // Nur der zweite Pin
10
GPIO_Init(GPIOA, &GPIO_InitStructure);
11
12
13
// Und jeder einzele Pin kann so parametriert werden.
14
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3; // Zwei Pins gleichzeitig mit einer Funktion ausstatten
15
: : :

Zu2)
SysTick_Config() ist in der "core_cm3.h" drin und sollte somit bereits 
in Deinem Projekt eingebunden sein. Denn ein Systic ist ein Bestandteil 
vom Cortex-Core und keine ST Peripherie.

: Bearbeitet durch User
von Pete K. (pete77)


Lesenswert?


von technikus (Gast)


Lesenswert?

Danke euch!

zu 1)

[c]
GPIO_InitTypeDef GPIO_InitStructure;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; // Nur der eine Pin
GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; // Nur der zweite Pin
GPIO_Init(GPIOA, &GPIO_InitStructure);
[\c]

Ist so Pin A1 als PP Ausgang und Pin A0 als PullUp Eingang konfiguriert?
Also wird mit der Init Funktion nur die Änderung Pinweise übernommen und 
die vorhandene Config beibehalten ?
Sollte man vielleicht mal ins Tutorial aufnehmen?


Zu 2) O.K. ich muss den Handler nur irgendwo aufrufen

[c]
void SysTick_Handler(void)
{...}
[\c]


Es geht weiter ;)

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Ja, GPIO_Init() arbeitet Pinweise anhand der Konfiguration von 
GPIO_InitStructure.GPIO_Pin.

Du kannst ja das Tutorial erweitern und den Satz an geeigneter Stelle 
hinzufügen.

von Matthias L. (Gast)


Lesenswert?

Ich hab vor paar Tagen auch meine ersten Schritte mit nem STM32 gemacht. 
Das hier war sehr sehr hilfsreich:

>Etwas zum Schmökern:
>http://diller-technologies.de/stm32.html

Und zu empfehlen. Die Beispiele sind super und damit kann man einfach 
weiter probieren. Bissel aufpassen muss man mit den Pheriperietakten. 
Damit man den richtigen erwischt..

von technikus (Gast)


Lesenswert?

Habe ich erweitert

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.