Forum: Mikrocontroller und Digitale Elektronik stm32 grundlagen


von Marco S. (sharkman)


Lesenswert?

Hallo zusammen.

Ich bin auf der Suche nach dem Einstieg in die Welt der Cortex-M3 Kerne. 
Ich bin mir auch sicher, dass es schon hunderte dieser Threads gab, aber 
die Suche hat für mich nichts befriedigendes ergeben.

Ich habe erfahrungen in der Programmierung von 8bit PIC Mikrocontollern 
und möchte nun auch einmal die Welt der deutlich potenteren Hardware 
kennen lernen.

Ich habe mir vor kurzem ein Eval Board von Keil gekauft, auf welchem ein 
STM32F107VC16 sitzt. Ich weiß das dieser recht mächtig ist, allerdings 
bin ich der Meinung das man damit so ziemlich alles testen kann und auch 
mal jede Form von Schnittstelle ausprobieren kann, wenn es nötig ist.

Als Entwicklungsumgebung hab ich mir jetzt einmal µVision 4 angeschaut 
und zum anderen die Atollic Lite Umgebung. Ich denke ich werde mich 
erstmal mit der Atollic beschäftigen, da mich diese irgendwie mehr 
anspricht.

Nichts desto trotz komm ich nicht so wirklich weit. Ich bin deshalb auf 
der Suche nach einer schönen Einsteigerseite, wie www.sprut.de oder 
www.fernando-heitor.de wo einem für den Einstieg einmal erklärt wird, 
welche Register man wann setzen muss. Wie ich die Konfiguration vornehme 
und wie ich z.B. einfach einen Pin setze.

Gibt es sowas überhaupt für diese Kerne oder gibt es irgendwo gute 
Einsteigertipps?

schöne Grüße
Marco

von Michael K. (damichl)


Lesenswert?

Hier schon geschaut?

http://www.mikrocontroller.net/articles/STM32

Unten findet man Links, z.B. zu STM32Circle

von Marco S. (sharkman)


Lesenswert?

Den Artikel hab ich schon gleesen, allerdigns hat ich mir den link zu 
stm32circle noch nicht angeschaut.

Über was auf deutsch würd ich mich aber auch noch freuen

von (prx) A. K. (prx)


Lesenswert?

Marco Schulze schrieb:

> Über was auf deutsch würd ich mich aber auch noch freuen

Gewöhn dich lieber ans Englisch. Bei den 8ern findet man ab und zu mal 
deutsche Info, aber bei den 32ern eher nicht. Auch Einstiegseiten sind 
seltener, wohl weil sich bisher vorwiegend jene ihnen widmeten, die 
Zeile-für-Zeile Tutorials nicht mehr benötigen.

Beispielcode findet sich allerdings durchaus. Bei ST, m.W. auch bei 
Keil, ... Weiss nicht ob auch bei Atollic.

von TorstenS (Gast)


Lesenswert?

Hallo,

Schau dir mal unter 
http://www.st.com/mcu/modules.php?name=mcu&file=familiesdocs&fam=110&doc=76 
die STM32F10x_StdPeriph_Lib an.
Das Zip-File enthält neben den Quellen auch eine sehr gute Doku zu den 
einzelnen Modulen und jede Menge an Beispiel-Code.

Gruß
Torsten

von Marco S. (sharkman)


Lesenswert?

Ja gut.

Ich gewöhn mich auch an Englisch, da hab ich nicht das große Problem 
mit. Ich brauch eigentlich auch kein Zeile für Zeile, aber so ein paar 
Einstiegsinfos, was gesetzt werden muss und ähnliches wären halt schön 
gewesen. Irgendwoher müssen die Infos ja kommen. Ich hatte mir bei st 
mal den Programmers Guide runtergeladen, dann werd ich mich da mal 
durchwühlen.

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


Lesenswert?

Das sind die grundlegenden Tipps für Umsteiger:
http://www.mikrocontroller.net/articles/STM32#Tipps_f.C3.BCr_Umsteiger_von_Atmel.2FPIC.2F8051

Wenn man die beherzigt, dann kommt man schon klar. Ansonsten ist bei der 
Standard Pheripial Lib von ST jede Menge Beispiel dabei. (Link wurde ja 
bereits gepostet)
Am besten die ST Lib verwenden, damit geht das proggen viel leichter und 
man muss sich nur wenig um die Register selbst kümmern.

von Marco S. (sharkman)


Lesenswert?

Ahja gut, denn werd ich mich damit einfach mal versuchen. Erstmal besten 
dank, aber ich denk mal ich werd hier noch etliche Fragen stellen 
müssen, bis ich das ganze Ding selber am laufen. Ist halt schon ne 
Umstellung wenn man sich nicht mehr um alles selber kümmern muss.

von Bernhard B. (schluchti)


Lesenswert?

Ein paar Dinge, die mir beim Einstieg sehr geholfen haben:

.) Wenn du noch keinen Debugger hast, dann besorg' dir einen. Bei den 
8bittern ist ein Debugger ein nettes Tool, aber man kommt mit ein 
bisschen Trickserei auch ganz gut ohne zurecht. Bei den 32bit 
Mikrocontroller hingegen ist ein Debugger meines Erachtens ein 
unverzichtbares Tool. Da kommt man mit dem "printf-Debugging" nicht sehr 
weit.

.) Es gibt ne Menge verschiedener IDEs, die alle auf einen 
unterschiedlichen Anwenderkreis abzielen. Am Anfang würd' ich dir 
empfehlen ne einsteigerfreundliche IDE zu nehmen, die sich um die 
wichtigen Dinge(Stichwort: Linkerscripts) selbst kümmert. Gerade am 
Anfang, wenn du mit dem uC selbst zu kämpfen hast, sollte dir die IDE 
keine unnötigen Steine in den Weg legen. Bei vielen IDEs (u.a Keil) 
gibt's Demoversionen, die bis zu 32K ohne weitere Einschränkungen 
funktionieren - erst dann musst du richtig tief in die Tasche greifen. 
Doch wenn du mal mit dem uC vertraut bist und der Sourcecode wächst, 
kannst du immer noch die IDE wechseln.

.) Wie schon von meinen Vorredner erwähnt, gibt's von ST eine Library, 
die viel Sourcecode-Beispiele mitliefert. Dennoch würd ich mich nicht 
blind der Library hingeben, sondern versuchen etwas hinter die Kulissen 
(also die Register) zu blicken. Auch wenn ich kein Freund der Library 
bin, mag sie ihre Daseinsberechtigung haben. Doch wenn man nach drei 
Jahren noch immer die Libray braucht um ne LED blinken zu lassen, dann 
sollte man sich vielleicht fragen ob man nicht etwas mehr Zeit mit dem 
Manual verbringen sollte...
Ein guter Ansatz ist die Library als Ausganspunkt herzunehmen. Wenn ich 
zum Beispiel die SPI Schnittstelle des STM32 benötige, dann such ich mir 
das entsprechende Beispielprogramm von ST, analysiere dieses und schaue 
(zusammen mit dem Reference Manual) welche Register ich tatsächlich für 
mein Vorhaben benötige.

.) Nutz' das Forum und dessen Suchfunktion. Es gibt hier im Forum ein 
paar Leute (u.a A.K), die sich wirklich gut mit dem STM32 auskennen. 
Also ruhig mal die Suchfunktion bemühen, wenns irgendwo Probleme gibt - 
oftmals findest du dort entsprechende Anregungen.

Zum Abschluss noch ein paar Literatur-Tipps:

STM32 Datasheet
STM32 Reference Manual
Cortex M3 Technical Reference Manual
STM32F10xxx Cortex-M3 programming manual
The Definitive Guide to the ARM Cortex-M3

von Marco S. (sharkman)


Lesenswert?

Hallo.

Also ich habe mir ein EvaBoard von Keil gekauft was den ulink-me jtag 
debugger bei hat, weil ich mir schon gedacht habe, dass ich diesen 
brauchen werde. Ohne Debugger würde ich bei den 8-bit Prozessoren so 
manchesmal die Decke hochgehen.

Als IDE war µVision 4 dabei und das wollt ich auch erstmal benutzen.

Ja ich werd mit der Zeit mit Sicherheit hinter die Kulissen schauen, 
aber erstmal wäre ich froh wenn ich überhaupt erstmal ein Projekt 
geschaut zusammengestellt bekomme.

Ich suche momentan eigentlich mal nach einer Anleitung, die mir sagt, 
was ich alles brauche für ein einfaches Projekt und was nicht. Ich hab 
nämlich das dummer Gefühl, dass bei den ursprünglichen Projekten viel 
blödsinn drin ist.

von Bernhard B. (schluchti)


Lesenswert?

Dieser "Blödsinn" in den ST Examples ist notwendig, um dem Benutzer 
einen möglichst reibungslosen Einstieg in die Programmierung der 
32bitter zu ermöglichen. Zu Beginn würd' ich mal probieren, eine LED an 
einem Portpin aus - und einzuschalten. Wenn du auf die Library komplett 
verzichten willst, dann wird der Abschnitt "Reset and Clock 
Control(RCC)" und "General-purpose and alternate-function I/Os (GPIOs 
and AFIOs)" im Reference Manual interessant für dich sein.

von Carsten S. (dg3ycs)


Lesenswert?

Hi,

Marco Schulze schrieb:
> Hallo.
>
> Also ich habe mir ein EvaBoard von Keil gekauft was den ulink-me jtag
> debugger bei hat, weil ich mir schon gedacht habe, dass ich diesen
> brauchen werde. Ohne Debugger würde ich bei den 8-bit Prozessoren so
> manchesmal die Decke hochgehen.
>
> Als IDE war µVision 4 dabei und das wollt ich auch erstmal benutzen.
>
> Ja ich werd mit der Zeit mit Sicherheit hinter die Kulissen schauen,
> aber erstmal wäre ich froh wenn ich überhaupt erstmal ein Projekt
> geschaut zusammengestellt bekomme.
>
> Ich suche momentan eigentlich mal nach einer Anleitung, die mir sagt,
> was ich alles brauche für ein einfaches Projekt und was nicht. Ich hab
> nämlich das dummer Gefühl, dass bei den ursprünglichen Projekten viel
> blödsinn drin ist.


mir ging es anfangs sehr ähnlich wie dir...
In der 8Bit Welt zuhause. Assembler und C im Schlaf. Auch PC 
Anwenderprogramme habe ich halbwegs vernünftig hinbekommen.

Dann kam der Einstieg in die 32Bit Mikroprozessorwelt...
Mit den selben Problemen wie bei dir. Nur das mein allererster Kontakt 
gleich funktionieren musste. Es ging zum Glück aber nur um eine 
"Änderung" ;-)

Jetzt nachdem ich mich vor einiger Zeit bereits etwas mit den ARM 
beschäftigt habe, bin ich vor kurzem nach über zwei Jahren abstinenz 
wieder damit angefangen. Passenderweise kam kurz nach dme Entschluss ein 
halbwegs günstiges Angebot für ein original STM32 Eval Board hier im 
Markt.

Interesannterweise habe ich mir genau wie du erst einmal einfachen 
Beispielcode für die ganz simplen Abläufe gewünscht (z.B. LED Blinken) 
um zu sehen was überhaupt das minimum an Einstellungen ist. Habe auch 
nichts gefunden. Von Null anzufangen ist erst einmal ja schon etwas 
aufwändig. Da sind die ARMs ja schon recht anspruchsvoll.
HAbe dann zuerst das gemacht was oben geschrieben wurde. Mir das 
Grundlegende durchgelesen, mich für EINE IDE entschieden. (Nutze zur 
Zeit IAR, da Keil die kompilierung der STM32Evalboard Firmware bereits 
wg. der Größe verweigerte)
Dann habe ich mir die grundlegenden Programme selbst gemacht. Einfach 
die volle Firmware genommen angefangen mir den Code angesehen und ALLES 
rausgeworfen was nicht für die grundlegende Funktion benötigt wird. 
(Teilweise sind es ja komplette Dateien die du streichen kannst)

Das völlig abgespeckte Demoprogramm das dann ausser den nötigen 
Grundlagen wirklich nichts mehr enthielt habe ich dann von Hand wieder 
langsam mit eigenen Code ergänzt.
Also erst LEDs blinken lassen, dann abfrage der Taster (Ports einlesen), 
Ausgabe von TExten auf TFT (mit passender von STM zur Verfügung 
gestellter include, verändern dieser Datei damit auch das hier 
herumliegende kleine TFT funktioniert, bin jetzt gerade bei der 
seriellen Kommunikation und danach kommt dann die Audio Ausgabe)
So kommt dann alngsam aber sicher schon ein recht guter Durchblick. 
Später kann man sich dann wirklich tief in die verschiedenen Klassen 
einanrbeiten, diese deiner HW anpassen und auch eigene Peripherie 
Klassen Schreiben.
Der reine Programmablauf ist ja dann nur noch simples C(++)

Bin aber auch noch voll in der Lernphase... Immerhin will ich demnächst 
ja einiges mehr machen als nur Firmware abzuänder...

Gruß
Carsten

von Marco S. (sharkman)


Lesenswert?

Hallo.

Das mit dem Blödsinn war nicht abwertend gemeint, aber mir fehlt 
momentan einfach noch ein bisschen der Überblick, welche Dateien ich am 
Anfang einbinden muss. So langsam taste ich mich da aber ran.

Ich wollte am Anfang auch nichts weiter machen, als erstmal eine LED 
blinken zu lassen. Danach vielleicht mal den ADC auslesen und damit die 
Blinkgeschwindigkeit einstellen oder ähnliches.

@Carsten
Dann bin ich ja froh, dass ich nicht der einzige Depp bin, der nichts 
gefunden hat. Es ist doch eine arge Umstellung wenn man anfangen muss, 
sich einfach auf die bestehenden Strukturen zu verlassen.
Ich werd mich aber definitiv mal auf das Experiment einlassen.

Ich habe den großen Vorteil, dass bei mir kein Zeitdruck da ist, da ich 
mich vorbeugend schon einmal mit beschäftige. Nicht dass ich irgendwann 
drauf zu greifen muss und dann bei null anfange. Das ist mir zu 
stressig.

Naja Ich meld mich wenn die erste LED blinkt, dann kommen bestimmt noch 
ein paar fragen.

schöne Grüße
Marco

von Bernhard B. (schluchti)


Lesenswert?

Hi,

Marco Schulze schrieb:
> Das mit dem Blödsinn war nicht abwertend gemeint, aber mir fehlt
> momentan einfach noch ein bisschen der Überblick, welche Dateien ich am
> Anfang einbinden muss. So langsam taste ich mich da aber ran.

ich kann dich verstehen. Am Anfang steht man wie der Ochs vorm Berg und 
wird von der Fülle an Informationen regelrecht erschlagen. Das 
wichtigste ist, dass du dir am Anfang nicht zu hohe Ziele steckst, sonst 
verlierst du schnell die Lust und wirfst das Ding in die Ecke ;-) Alles 
andere kommt dann mit der Zeit. Wenn du dran bleibst und immer mal 
wieder ein bisschen Zeit investierst, dann wirst du in 2-3 Monaten schon 
riesige Fortschritte wahrnehmen.

von Lukas S. (lsimma)


Lesenswert?

Hallo Marco, Hallo Carsten,

Marco Schulze schrieb:
> Naja Ich meld mich wenn die erste LED blinkt, dann kommen bestimmt noch
> ein paar fragen.

bin vor ein paar Monaten vor demselben Problem gesessen wie ich am 
besten starten kann. Hab hier eine kurze Intro erstellt, hoffe es hilft.

http://www.mikrocontroller.net/articles/STM32_LEDBlinken_AtollicTrueStudio

Beste Grüße,
Lukas

von Bernhard B. (schluchti)


Lesenswert?

Lukas Simma schrieb:
> bin vor ein paar Monaten vor demselben Problem gesessen wie ich am
> besten starten kann. Hab hier eine kurze Intro erstellt, hoffe es hilft.
>
> http://www.mikrocontroller.net/articles/STM32_LEDB...

Als kleine Anregung: Ich würde das Delay mit dem Systick realisieren

von Lukas S. (lsimma)


Lesenswert?

Hallo Bernhard,

in diesem Beispiel möchte ich das Minimum zeigen was nötig ist um mit 
der Std. Peripherie Library eine LED zum Blinken bringen. (Für mich war 
auch lange nicht klar was als Minimum benötigt wird).

Das mit dem Systick soll dann in ein nächstes Introbeispiel incl. dem 
DeInit().

Bernhard hast Lust ein zweites Beispiel zu erstellen mit Verwendung des 
Systick ?

Beste Grüße,
Lukas

Beitrag #6765185 wurde von einem Moderator gelöscht.
Beitrag #6767976 wurde von einem Moderator gelöscht.
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.