Forum: Mikrocontroller und Digitale Elektronik [STM32F107] STM3210C-SK/KEIL


von Eike U. (Firma: Student) (belenus666)


Lesenswert?

Hallo Leute,

da ich mich für meine Studium mit der Technischen-Informatik weiter 
beschäftigen muss (Embedded-Systems) hab ich mir das folgende System auf 
Empfehlung meines Professors bestellt.

Mein Prof. ist momentan in Urlaub so das ich ihn nicht erreichen kann 
und ich weiß jetzt nicht so ganz wo ich anfangen soll.

Wenn Ihr mir n paar Stichpunkte nenne könntet womit ich michr erstmal 
beschäftigen sollte bzw was ich mir aneignen sollte wäre ich euch echt 
dankbar.

Vielen dank schon mal und viele Grüße

von Alex E. (tecnologic) Benutzerseite


Lesenswert?

Moin

Lad dir das das Library von ST runter. Acker die Beispiele durch, 
versuche mit dem DB zu verstehen was St da Programmiert hat. Dann such 
dir n Einfaches Projekt bei dem du nur n Beispiel abändern musst. usw.

MfG

Tec

von Eike U. (Firma: Student) (belenus666)


Lesenswert?

Hy,

erstmal danke für die Antwort.

Ich hab mich jetzt erstmal mit der Blink-Demo beschäftigt, aber iwie 
werde ich daraus nicht wirklich schlau.

Gibt es irgendwo ne art Tutorial wie ich die Ports vom MC als I/O 
definiere
und wie ich z.b. LEDs ansprechen kann?

Ich muss dazu sagen das ich im Bereich MC-Programmierung null Erfahrung 
habe. Ich hab bis jetzt nur normale Anwendungen in C, C# und Java 
geschrieben.

Danke für eure Mühe und Geduld mit einem totalen Anfänger.

von Alex E. (tecnologic) Benutzerseite


Lesenswert?

Oh OK,

Es gibt ein Tutorial für das STM32VL-Discovery Board. Und auch hier auf 
der Seite gibts Anleitungen

STM32 LEDBlinken AtollicTrueStudio

Ist zwar eine andere Entwicklungsumgebung aber der Code ist mit dem Lib 
der gleiche. Das sollte dir erst mal die Fragen beantworten

Sonst einfach hier in dem Artikel für STM32 schauen.

STM32

Das CHM File in der Doku zu dem Lib von St finde ich auch sehr gut, kann 
mann sich eigendlich gut dran langhangeln und Beispiel Code zusammen 
kopieren. Den solltest du aber dann auch verstehen, deshalb brauchst du
Das RM0008 das ist das Referenzhandbuch für deinen Controller da steht 
alles dazu drin. Wunder dich nicht über die handliche Größe, zum 
Ausdrucken ist das Nix aber zum nachschlagen.

Bei Keil sind auch Beispiele bei, Schau mal auf deren Seite die sind 
genau für dein Board und laufen sofort. Dann kannst du erst mal damit 
als Basis rum spielen.

MfG

Tec

von Random .. (thorstendb) Benutzerseite


Lesenswert?

Hi,

da du - wie beschrieben - mit Keil µVision arbeitest, schaue dir doch 
mal die Beispiele in

c:\keil\ARM\Boards\Keil

an, sofern du ein Keil MCBSTM32.. hast. Die laufen, und verwenden keine 
komplizierte Driverlibrary.

> Ich muss dazu sagen das ich im Bereich MC-Programmierung null Erfahrung
> habe. Ich hab bis jetzt nur normale Anwendungen in C, C# und Java
> geschrieben.

C funktioniert auf dem µC genauso wie auf dem PC. Der Unterschied ist 
nur, dass du aus deiner main() nie zurückkommst (da muss eine 
Endlosschleife rein, in der idR. dein Programm läuft, wenn du kein RTOS 
verwendest), und du musst dich etwas mit Registern auseinandersetzen. 
Mehr nicht :-)


VG,
/th.

von Alex E. (tecnologic) Benutzerseite


Lesenswert?

Das die Lib von ST jetzt kompliziert ist ist wohl Geschmackssache. Ich 
finde sie macht den Code Lesbarer als

GPIOD->BSSR = 0x0000001;
(bei den Registernamen erhebe ich keinen anspruch auf Richtigkeit :D)

und solche Scherze.

Klar bist du mit Registerzugriffen schneller, aber das brauchst du zu 
Anfang nicht, und später auch nur bei Zeitkritischen Funktionen.

MfG

Tec

von Random .. (thorstendb) Benutzerseite


Lesenswert?

naja, ich selbst schreibe es noch wieder anders.
1
UART0->CR = (1<<RXEN) | (1<<TXEN) | (1<<EN);

Wollte nur drauf hinweisen, dass man ein Blinky auch mit weniger als 
KB-weise code zustandebringt.

:-)

von Alex E. (tecnologic) Benutzerseite


Lesenswert?

Klar das ist auch wieder Lesbar. Deshalb meinte ich ja ist 
Geschmackssache.
Aber das Lib ist immer gleich egal welcher STM32F1xx, Und das Driverlib 
von TI z.b. ist ähnlich auf gebaut.

Muss man für sich entscheiden was einem Besser gefällt die Register 
Variante hat den Vorteil das man nur das RM0008 und das DB von dem 
Controller braucht.

MfG

Tec

von Gebhard R. (Firma: Raich Gerätebau & Entwicklung) (geb)


Lesenswert?

Im Grunde mußt du dir das Referenz-Manual des Prozessors durchlesen. Da 
das aber mehrere 100 Seiten sind, lies das durch was du brauchst. In 
deinem Fall das Kapitel GPIO Ports. Die Programmierung läuft bis auf 
eine entscheidende Ausnahme ziemlich gleich ab wie am PC. Die Ausnahme 
ist: man schreibt direkt auf Adressen bzw. Register des Prozessors. All 
das eben, was einem die C# und Java Idioten verbieten. Ja, C und 
Microkontroller ist noch Freiheit!

Grüsse

von Eike U. (Firma: Student) (belenus666)


Lesenswert?

Danke für die Zahlreichen Antworten dann hab ich jetzt ja erstmal 
einiges zu lesen ^^

Und danke für Eure Auskunftsfreudigkeit ^^

Ihr habt mir echt geholfen.

Grüße

von Eike U. (Firma: Student) (belenus666)


Lesenswert?

So nach ner ganzen Weile steig ich jetzt so langsam durch die GPIO 
Register durch.

Meine LEDs kann ich jetzt ansteuern und blinken lassen.

Jetzt tut sich mir die Frage auf ob ich das Delay eleganter lösen kann 
als bisher. Momentan verwende ich folgende Funktion dafür.
1
void delayLoop() {
2
  volatile uint32_t delayCount = 1000000; 
3
                                                
4
  while (delayCount > 0) {
5
    delayCount--;
6
  }
7
}

Wenn ihr mir da noch helfen könntet wäre das echt klasse.

Grüße
Eike

von Matthias K. (matthiask)


Lesenswert?

Dafür nimmt man in der Regel den SysTick, einen speziellen Timer, der 
zum Core der STM32 gehört. Dazu gibt es Beispiele in der FW-Lib. Er ist 
relativ problemlos zu konfigurieren. Auch hier im Forum gibt es viele 
Beiträge dazu.

von Eike U. (Firma: Student) (belenus666)


Lesenswert?

Dann werd ich mich mal auf die Suche machen.

Danke dir ^^

von Sven Wagner (Gast)


Lesenswert?

Eike Ulrichs schrieb:
> Jetzt tut sich mir die Frage auf ob ich das Delay eleganter lösen kann
> als bisher.
Ja. Z.B. läßt sich dieser Vorschlage sehr gut uch auf dem STM32 
verwenden: Beitrag "Wartezeiten effektiv (Scheduler)"

Grüße
Sven

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.