Ich spiele mich gerade mit dem UART herum. Der ist ja nicht sooo kompliziert, und letztlich ist es nicht viel anders als beim AVR... Ich hätte nun, um diesen zu initialisieren einfach die drei Control Register befüllt und ab die Post. Nun sehe ich aber, dass die vom CooCox bereitgestelle "Library" "fertig vorverdaute" CMSIS Funktionen zur Verfügung stellt, die das auch machen, aber halt auf einem höheren Abstraktionsniveau und eigentlich recht "umständlich" und schwerfällig. Es ist alles verständlich und nachvollziehbar, jedoch frage ich mich, ob man diesen Code nun verwenden soll, oder als Anfänger nicht besser an der Basis bleibt, und die Register direkt beschreibt. Die Frage: was meinen erfahrene ARM Entwickler dazu? Verwendet ihr diese CMSIS Funktionen? Irgendwie fühle ich mich um das "Erlebnis betrogen", wenn ich die fertig vorgekauten Dinger verwende, andererseits sollte man vielleicht gleich von Anfang an kompatiblen und portierbaren Code schreiben? Ich bin irgendwie ratlos, welchen Weg ich im Zuge des Einstiegs wählen soll...Beides geht nicht. Bitte um einen Tipp, wie ihr das macht!
Also: wenn ich mir für den Anfang bloß mal die stm32f4xx.h einziehe und alles "selbst" mache, habe ich glaube ich mehr davon, denn schließlich will ich den Controller kennen lernen, und nicht eine Library. Ähnlichen Beiträgen gemäß scheint es hier eine Glaubensfrage zu sein, welchen Ansatz man wählt. Ich wollte nur vermeiden, dass man mir dann später bei irgendeiner Frage die rote Karte zeigt, indem man mir signalisiert "hättest du doch die CMSIS genommen" oder "so wie du das machst ist es doch kompletter Blödsinn, weißt du denn nicht, dass es da fertige Libraries gibt", u.s.w. Wenn ich den Controller dann besser kenne, kann ich ja immer noch abstrakter werden, und auf fertigen Code zurückgreifen.
>dass man mir dann später bei >irgendeiner Frage die rote Karte zeigt, indem man mir signalisiert >"hättest du doch die CMSIS genommen" oder "so wie du das machst ist es >doch kompletter Blödsinn, weißt du denn nicht, dass es da fertige >Libraries gibt", u.s.w. Ich denke die meisten benutzen den Code von ST. Warum auch nicht? Wenn du alles selber machst ist es sehr wahrscheinlich das du kaum Antworten bekommst wenn du Probleme hast und mit eigenem Code daher kommst. Den schaut sich dann eben kaum noch einer an.
Weiter sind die Libs sehr hilfreich, wenn du mit mehreren Controllern arbeiten willst. Sei das vom STM32F0 bis zum STM32F4. Hier varieren die Defines und Enums nur sehr wenig. Viel weniger als die Register. Ausserdem ist es sehr übersichtlich. Ich habe mit einem STM32F4 angefangen und bin ohne grossen Zeitaufwand auch mit Copy&Past in ein STM32F0 eingearbeitet.
ARM Einsteiger schrieb im Beitrag #3165498: > Ich wollte nur vermeiden, dass man mir dann später bei > irgendeiner Frage die rote Karte zeigt, indem man mir signalisiert > "hättest du doch die CMSIS genommen" oder "so wie du das machst ist es > doch kompletter Blödsinn, weißt du denn nicht, dass es da fertige > Libraries gibt", u.s.w. Das kannst Du nicht vermeiden. Egal was und wie Du es machst - immer wird es einen geben, dem das so nicht passt. Mach es so, wie Du es machen willst. Im Zweifelsfall muß sich der Rest der Welt nach Dir richten :-)
Patrick B. schrieb: > Weiter sind die Libs sehr hilfreich, wenn du mit mehreren Controllern > arbeiten willst. Das halte ich aber für stark geschmeichelt. Versuch mal, mit dem Standard-Lib-Zeuchs vom STM32, auf einem LPC zu Potte zu kommen. ARM Einsteiger schrieb im Beitrag #3165400: > Bitte um einen Tipp, wie ihr das macht! Ich kann hier ja nur für mich schreiben: ich schreib mir schlichtweg alles selbst, lediglich die Header-Dateien für die jeweiligen Controller, also STM32F10xxxblabla.h oder LPCxyzblabla.h benutze ich, wenn es geht. Notfalls mach ich mir die auch selbst zurecht. Ansonsten schreibe ich strikt modular, also beispielsweise eine "serial.c" und dazu eine "serial.h" für's Serielle, wobei ich die .h eigentlich zwischen verschiedenen uC nie ändere. So hab ich das gleiche Interface bei verschiedenen Typen und Architekturen (NXP, ST, Nuvoton, Fujitsu ua.) Wenn du allerdings den GCC benutzt und Code auch für die ARM7 Typen schreibst, dann hast du das Problem, ggf. die Interruptroutinen in ne separate Quelle auszulagern, weil der GCC (im Vergleich zum Rest der Welt) ARM und THUMB in einer Quelle nicht beherrrscht. W.S.
ARM Einsteiger schrieb im Beitrag #3165498: > Also: wenn ich mir für den Anfang bloß mal die stm32f4xx.h einziehe und > alles "selbst" mache, habe ich glaube ich mehr davon, denn schließlich > will ich den Controller kennen lernen, und nicht eine Library. Du kannst natürlich alles zu Fuss machen. Aber notwendig ist das nicht mehr. Der Trend in der modernen Embeddedwelt geht ganz klar in Richtung fertiger Komponenten. Dazu gehören, neben diverser Middleware, zu einem grossen Teil auch Treiberbibliotheken. Viele Entwickler schimpfen zwar darauf weil so eine Fremdbibliothek auch Einfluss auf den persönlichen Programmierstil nimmt, aber das ist im Grunde esotherisch. Faktisch sind gute Bibliotheken wie die von ST durchaus geeignet ein sicheres und funktionales System mit einer Menge Zeitersparnis zu erstellen. Mit Coocox wirst du sicher kein SIL-2 erreichen, aber um zeitgemässe Entwicklung moderner Mikrocontroller zu erlernen ist es das richtige Prinzip.
http://www.ethernut.de/ im SNV Trunk hat inzwischen Unterstuetzung fuer recht viele Devices der STM Baustein.
Matthias schrieb: > Faktisch sind gute Bibliotheken wie die von ST Wenns mal so wäre... Beitrag "Re: STM32F4 + MC Library +Keil Steigt da einer noch durch?"
Matthias schrieb: > Faktisch sind gute Bibliotheken wie die von ST > durchaus geeignet.. den Anwender in einem Ozean unnützer #define's zu ertränken und den Flash vollzustopfen. Kein Wunder, daß man heutzutage schon für ein "Hello World" mindestens ein halbes Megabyte Flash benötigt. Kopfschüttel.. W.S.
Nach einer kleinen Gewöhnungsphase muss ich zugeben, dass die ST CMSIS Library durchaus Vorteile bietet. Das Reference Manual muss man trotzdem lesen, genauso muss man anfangs nachsehen, was die Funktionen denn so machen und welche Register im Detail beschrieben werden. Man muss sich aber nicht mehr um die ganz untersten Details kümmern, z.B. dass man den Wert zuerst um 5 Bits nach links schieben muss, bevor man ihn mit dem Register verodert...Trotzdem weiß ich, was passiert und lerne die MCU genauso gut kennen, als ob ich alles selbst erledige. Vielleicht sogar ein wenig besser, da man anhand des Library-Codes gleich sieht, worauf es ankommt. Ohne jemals hineingeschaut zu haben würde ich die CMSIS aber nicht benutzen wollen, da dies einem totalen Blindflug gleichkäme ;-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.