Wie kann ich bei der STM32CubeIDE ein Projekt ohne HAL erstellen. Ich hatte mit dem Atollic TrueSTUDIO nur an vorhandenen Projekten weitergearbeitet, vermute aber, dass sich das bei diesem durch die Wahl "CMSIS C/C++ Project" bewerkstelligen lies?
Du kannst ein leeres Projekt für arm gcc erstellen. Dann musst Du alles selbst hinzufügen. Einfacher ist es, ein vorhandenes Projekt zu importieren. Dieses kannst Du dann immer wieder kopieren um ein neues nicht HAL Projekt für den jeweiligen µC zu erstellen. Vorgesehen ist offiziell von CubeIDE entweder HAL oder LL Projekte geführt zu erstellen. Alles andere ist Handarbeit.
D.h., die CMSIS C/C++ Projekte werden nicht mehr unterstützt und es liegt nicht daran, dass ich nur nicht fündig werde - schade, wenn Dinge, die vorhanden waren und funktionierten, wieder entfernt werden. Projekte kopieren und dann in Projekt- und XML-Dateien rumeditieren, um neue, sinnvolle Namen zuzuweisen, ist schon ätzend. Kennt jemand 'nen Link mit Beschreibung, wie man so ein CMSIS C/C++ Projekt zusammenstellt?
Uli N. schrieb: > die CMSIS C/C++ Projekte werden nicht mehr unterstützt Das war mal so, inzwischen geht es doch wieder, und zwar so: http://stefanfrings.de/stm32/cube_ide.html#projekt
Auf Stefans Website: http://stefanfrings.de/stm32/cube_ide.html Aber die STM32 haben doch genügend Resourcen, warum tut man sich diesen Purismus an? Edit: Stefan war schneller, er hat die Antworten dazu glaube ich schon als Textbaustein da liegen :)
Johannes S. schrieb: > warum tut man sich diesen Purismus an? z.B. weil man (ich) keine Lust darauf hat, neben dem Referenzhandbuch tausende Zeilen Code und Manual durchzuarbeiten, um die HAL richtig verwenden zu können. Oder weil (wieder ich) man mit der HAL schon mehrfach auf die Schnauze gefallen ist (Bugs die man (ich) nicht selber lösen konnte).
Johannes S. schrieb: > er hat die Antworten dazu glaube ich schon als > Textbaustein da liegen :) So ist es. nein Quatsch. Aber meine Homepage ist sozusagen voller vorbereiteter Bausteine, damit ich nicht immer wieder das Gleiche schreiben muss.
Johannes S. schrieb: > Aber die STM32 haben doch genügend Resourcen, warum tut man sich diesen > Purismus an? Dazu möchte ich noch ergänzen, dass die kleinen STM32F103 schon mit einem "Hello World!" über USB gut gefüllt sind, wenn man die HAL verwendet. Beim Wechsel von AVR nach STM32 hatte eich eigentlich vor, größere Programme zu schreiben. Aber bei den großen STM32 Modellen (F4 und F7, die ich noch nicht benutzt habe) würde ich mich wohl auch mit der HAL beschäftigen wollen. Meinen PC programmiere ich schließlich auch nicht mehr ohne Frameworks.
den F103 mit USB habe ich auch gerade auf dem Tisch liegen. Mit USBKeyboard oder USBSerial und mbed2 bin ich bei ca. 27 kB Flash, das ist ok für mich. Den F103 würde ich da aber auch schon nur noch zur Resteverwertung der blauen Pillen nehmen, mit dem F303 den du öfter empfiehlst oder dem F401/411 hat man schon 256/512 kB Flash bei gleicher Modulgröße.
Johannes S. schrieb: > den F103 mit USB habe ich auch gerade auf dem Tisch liegen. Mit > USBKeyboard oder USBSerial und mbed2 bin ich bei ca. 27 kB Flash Ja so ist es. Selbst mit nur 64kB Flash ist HAL und USB gar kein Problem. Auch FreeRTOS geht noch locker mit rein und man hat dann immernoch etwa 30kB frei in denen man sehr viel Funktionalität unterbringen kann.
Johannes S. schrieb: > Aber die STM32 haben doch genügend Resourcen, warum tut man sich diesen > Purismus an? Also das Program ist jetzt schon 25k groß, ohne das irgendwas getan wäre und letztlich soll das Programm mal zweimal zusammen mit einem Bootloader reinpassen - bevor ich dann alles nochmal machen muss, geh' ich dann doch lieber gleich den Weg ohne Overhead. Bei anderen Projekten ließe mich auch der Laufzeit-Overhead grübeln, wenn gleich da Mixed-Ansätze u.U. ein Ausweg wären.
Ich wollte nur mal ergänzen, wer sich für die LL Library interessiert kann in STM32CubeIDE seine Projekte als reine "LL" Projekte erstellen lassen. Einfach nach dem MCU-Selector im Project Manager und Advanced Settings alle Peripherie auf "LL" stellen statt auf HAL, dann Code Generation ausführen und die HAL Dateien sind verschwunden... Beispiele zur Verwendung findet man im Firmware Ordner unter "Projects/"
>die CMSIS C/C++ Projekte werden nicht mehr unterstützt das Gegenteil ist der Fall, CMSIS ist ein integraler Bestandteil der CubeMX_IDE. Neues STM32 Projekt in der CubeMX_IDE anlegen, einfach keine HAL oder LL Libs auswählen, stattdessen unter Additional Software alle CMSIS Libs die man braucht dem Projekt hinzufügen. Einfach mal ein paar Schulungsvideos auf YT von ST ( nach MOOC suchen) schauen ?
Uli N. schrieb: > Wie kann ich bei der STM32CubeIDE ein Projekt ohne HAL erstellen. Ich selbst stehe mit dem grafischen Interface der CubeIDE (und somit der automatischen Codeerzeugung) auf Kriegsfuß. Hier sind die Schritte, wie ich ein leeres STM32F4 Projekt erzeuge, bei dem KEINE einzige Zeile Code automatisch erzeugt wird, aber dennoch die Compileroptionen und das Startfile etc im Projekt bestehen bleiben: 1. File->New->STM32 Project 2. Board selector: STM32F4DISCOVERY (oder wähle das Board/den MCU deiner Wahl) -> Next 3. Unter der Option "Target Project Type" wählst du "Empty" 4. Kopiere die CMSIS Mappe mit deinen gewünschten Headerfiles in das Projekt, das du zuvor erstellt hast 5. In der CubeIDE: Rechte Maustaste auf dein Projekt -> Properties -> C/C++ Build -> Settings -> MCU GCC Compiler -> Include Paths: Füge den Pfad zu deiner kopierten CMSIS Mappe. Ich habe von ST die Datei mit allen HAL/LL sowie CMSIS Dateien heruntergeladen. Der Link befindet sich hier: https://www.st.com/en/embedded-software/stm32cubef4.html Die CMSIS Dateien befinden sich in einer Mappe, die "Driver" heißt. Dort habe ich die Header Dateien in mein Projekt kopiert. Anbei ein Screenshot, wie das in der CubeIDE aussieht. Vielleicht hilft dir das ja weiter. Gruß,
drm schrieb: > Einfach mal ein paar Schulungsvideos auf YT von ST ( nach MOOC suchen) > schauen ? Auf diese Weite komme ich aber nicht zu einem Projekt, dass nur auf CMSIS basiert ohne die Cube HAL. > einfach keine HAL oder LL Libs auswählen Das geht nicht. Die einzige ähnliche Option, die ich gefunden habe ist ein "Empty" Projekt, aber dann hat man den von den Dir gezeigten Dialog nicht. Kannst du bitte mal die Schritte beschreiben, wie man das richtig macht?
Hallo Stefan und Alle anderen. Ich hab mir einen STM32L476RGT6 besorgt und wollte voll durchstarten. Hat sich mittlerweile etwas getan bezüglich HAL. Würdet ihr es auf dem System nutzt? Oder doch weiter mit CMSIS? MFG.
HalloSTM schrieb: > Hat sich mittlerweile etwas getan bezüglich HAL. Würdet ihr es auf dem > System nutzt? Oder doch weiter mit CMSIS? Ich nutze nach wie vor nur CMSIS. Warum? Weil ich für Timer, DMA, SPI, USART, ADC, DAC, RCC etc. keine HAL benötige. Man versteht den Controller, kann alles schnell anpassen, alles ist eigener Code und man erzeugt keinen Overhead - denn es sind in der Regel nur wenige Zeilen Code, so zwei DIN A4 Seiten. Bei USB hab ich bisher immer HAL benutzt, jedoch habe ich ausschließlich die Sourcen und Header eingebunden, die dafür absolut nötig sind und alles andere auskommentiert. Wenn ich ein neues Projekt anlege in der CubeIDE behalte ich nur die *.cpp Dateien, welche keinen Code erzeugen welcher auf die Hardware zugreift. Ich weiß grad nicht wie die heißen, diese *_hal.cpp wird gelöscht, main.h auch, systeminit auch...
:
Bearbeitet durch User
Ben S. schrieb: > HalloSTM schrieb: >> Hat sich mittlerweile etwas getan bezüglich HAL. Würdet ihr es auf dem >> System nutzt? Oder doch weiter mit CMSIS? > > Ich nutze nach wie vor nur CMSIS. Warum? Weil ich für Timer, DMA, SPI, > USART, ADC, DAC, RCC etc. keine HAL benötige. Man versteht den > Controller, kann alles schnell anpassen, alles ist eigener Code und man > erzeugt keinen Overhead - denn es sind in der Regel nur wenige Zeilen > Code, so zwei DIN A4 Seiten. > > Bei USB hab ich bisher immer HAL benutzt, jedoch habe ich ausschließlich > die Sourcen und Header eingebunden, die dafür absolut nötig sind und > alles andere auskommentiert. Wie geht man dabei als Anfänger in STM32-Programmierung mit abgeschlossenem E-Technik Studium am besten vor, die notwendigen Informationen zu erhalten um unabhängig von Libs und trotzdem präzise selbst zu programmieren?
PS: Ich mache das Ganze um mich als Embedded Entwickler bewerben zu können.
Ben S. schrieb: > Wenn du bisher AVR oder PIC auf Registerbene programmiert hast, > ist > nicht wirklich viel anders. Gut hab ich nicht. Also kannm an getrost das AVR-Tutorial hier auf der Seite verwenden?
HalloSTM schrieb: > Gut hab ich nicht. Also kannm an getrost das AVR-Tutorial hier auf der > Seite verwenden? Dann fehlt dir aber das grundsätzliche Verständnis. Man kann auch gleich mit nem STM32 anfangen, da stolpern aber viele. Hol dir einen Atmega und probiere da ein bisschen rum mit ADC, Timer, GPIOs, etc. - wenn du das aus dem FF kannst, ist der Umstieg nicht sonderlich groß und es gibt nur wenige Fallstricke. HalloSTM schrieb: > PS: Ich mache das Ganze um mich als Embedded Entwickler bewerben zu > können. Da sollte man aber schon deutlich Erfahrung haben und mindestens ein oder zwei Projekte umgesetzt haben.
:
Bearbeitet durch User
Ben S. schrieb: > HalloSTM schrieb: >> Gut hab ich nicht. Also kannm an getrost das AVR-Tutorial hier auf der >> Seite verwenden? > > Dann fehlt dir aber das grundsätzliche Verständnis. Man kann auch gleich > mit nem STM32 anfangen, da stolpern aber viele. Hol dir einen Atmega und > probiere da ein bisschen rum mit ADC, Timer, GPIOs, etc. - wenn du das > aus dem FF kannst, ist der Umstieg nicht sonderlich groß und es gibt nur > wenige Fallstricke. Da muss ich jetzt durch. Hab den STM schon hier und bleibe auch erstmal dabei. Wäre dankbar für Tips die zum Erfolg führen. MFG.
Ben S. schrieb: > Da sollte man aber schon deutlich Erfahrung haben und mindestens ein > oder zwei Projekte umgesetzt haben. Naja. Ablehnen können die Unternehmen mich immer. Ich versuchs trotzdem. Hab zwar keine µC- aber andere nützliche Elektrotechnische Erfahrung. Aber das ist OT...
HalloSTM schrieb: > Da muss ich jetzt durch. Hab den STM schon hier und bleibe auch erstmal > dabei. Wäre dankbar für Tips die zum Erfolg führen. MFG. Verstehst du Englisch?
Alex -. schrieb: > HalloSTM schrieb: >> Da muss ich jetzt durch. Hab den STM schon hier und bleibe auch erstmal >> dabei. Wäre dankbar für Tips die zum Erfolg führen. MFG. > > Verstehst du Englisch? Ja.
Alex -. schrieb: > HalloSTM schrieb: >> Da muss ich jetzt durch. Hab den STM schon hier und bleibe auch erstmal >> dabei. Wäre dankbar für Tips die zum Erfolg führen. MFG. > > Verstehst du Englisch? Ja Bitte? :D
HalloSTM schrieb: > Ja. Dann kann ich die Udemy Kurse von Fastbitlab.com empfehlen. Gibt es momentan sogar im Angebot (glaube ich). Gruß,
HalloSTM schrieb: > Ich hab mir einen STM32L476RGT6 besorgt und wollte voll durchstarten. Direkt auf die große Kacke hauen - Ok, hätte auch ein L7 sein können. Mach mal, ich fange lieber klein an. > Hat sich mittlerweile etwas getan bezüglich HAL. > Würdet ihr es auf dem System nutzt? Oder doch weiter mit CMSIS? Da ich mit diesen Dingern primär meine eigene Neugier auf die Technik befriedige, befasse ich mit mit der CMSIS (also den Registern). Nach wie vor empfehle ich diesen Weg, denn wer den µC nicht kennt, wird sich schwer tun, die HAL zu verstehen und richtig einzusetzen. Für die Nutzung der HAL hatte ich noch keinen ernsthaften Bedarf. Klar habe ich schon das eine oder andere ausprobiert, aber nicht ernsthaft benutzt. Die HAL bringt Dir Vorteile, wenn du Code auf mehreren STM32Modellen der gleichen Serie wieder verwenden willst. Sie bringt dich aber auch dazu, STM Spezifisch zu programmieren. Wenn du auch Produkte anderer hersteller programmieren willst, halte ich die HAL eher für hinderlich als nützlich. Man sollte sich auf jeden Fall beide (CMSIS und HAL) man angucken und ausprobieren.
Stefan ⛄ F. schrieb: > HalloSTM schrieb: >> Ich hab mir einen STM32L476RGT6 besorgt und wollte voll durchstarten. > > Direkt auf die große Kacke hauen - Ok, hätte auch ein L7 sein können. > Mach mal, ich fange lieber klein an. Hi Stefan. Bei Bestellung war nicht bewusst, dass das ne schlechte Idee ist, da die Dinger im Netz ansonsten als "Good to Sart" angepriesen werden... Würdest du da mit HAL arbeiten? Aufgrund deiner Aussage hier im Faden.
HalloSTM schrieb: > Wie geht man dabei als Anfänger in STM32-Programmierung mit > abgeschlossenem E-Technik Studium am besten vor, die notwendigen > Informationen zu erhalten um unabhängig von Libs und trotzdem präzise > selbst zu programmieren? Es begintn damit, das Referenzhandbuch des Mikrocontrollers mindestns 2 mal durchzulesen (auch wenn du zunächst nur einen Bruchteil davon verstehst). Es ist nämlich leider so, dass viele Komponenten von anderen abhängen und das nicht so schön zusammenhängend dokumentiert ist, wie bei 8bit AVR Mikrocontrollern. Dann brauchst du kommentierte Beispiele, die dir bei den ersten Schritten helfen. Die Taktversorgung und Peripherie muss nämlich in einer bestimmten Reihenfolge initialisiert werden. Da kommt man von alleine (nur anhand des Referenzhandbuches) nicht drauf. Nach den ersten Experimenten würde ich empfehlen, mal die sonstigen verfügbaren Dokus du durchforsten, vor allem die Application Notes und das Errata Dokument. Mir persönlich hat es auch ab und zu mal geholfen, von der HAL und vom Ardunio Core (auf GitHub) abzugucken.
HalloSTM schrieb: > Also kannm an getrost das AVR-Tutorial hier auf der > Seite verwenden? Ja durchaus. Und meine Bücher dazu dazu, auf http://stefanfrings.de
Stefan ⛄ F. schrieb: > Es ist nämlich leider so, dass viele Komponenten von anderen > abhängen und das nicht so schön zusammenhängend dokumentiert ist, wie > bei 8bit AVR Mikrocontrollern. Welche denn? Oder meinst du: - RCC konfigurieren - GPIO konfigurieren - ADC/DAC/... konfigurieren
:
Bearbeitet durch User
HalloSTM schrieb: > Würdest du da mit HAL arbeiten? Erst nach einiger Erfahrung mit den Registern. Wenn du mit STM32L4 HAL Erfahrung hast, dann bist du eben nur STM32L4 HAL Experte. Schon der Wechsel auf z.B. einen STM32F303 wird dir Schwierigkeiten bereiten. Und wenn es mal zu ganz anderen Mikrocontroller gehen wird, dann wird es noch schwieriger, denn mit der HAL hast du eher den Abstraktionslayer kennen gelernt, anstatt den Mikrocontroller selbst. Das prinzipiell ist das gleiche Thema, wie bei Arduino. Damit lernt man nur sehr oberflächlich, wie so ein Mikrocontroller und seine Peripherie funktioniert. Das ist so, wie ich meinen PC kenne. Ich programmiere täglich, doch von dem was sich innerhalb des Kastens abspielt, weiß ich fast nichts. Bei einem IBM XT hätte dir noch jedes Bauteil erklären können, doch das ist lange her.
Ben S. schrieb: >> Es ist nämlich leider so, dass viele Komponenten von anderen >> abhängen und das nicht so schön zusammenhängend dokumentiert ist, wie >> bei 8bit AVR Mikrocontrollern. > Welche denn? Oder meinst du: > - RCC konfigurieren ... Die RCC Komponente ist das Paradebeispiel, um die kommt man gar nicht herum, egal was man nutzen will. Wenn du einen seriellen Port (UART) verwenden willst, musst du dich nicht nur mit dem entsprechenden Kapitel befassen, sondern auch mit RCC, Pin-Konfiguration (Alternate functions), DMA Controller, Interrupt Controller. Zusätzlich zum Interrupt Controller muss man auch die EXTI Register kennen. Das ist alles kein Hexenwerk. Wenn man den Dreh einmal raus hat, wird es einfach. Es ist halt nur deutlich komplexer, als bei 8bit Controllern. Ich finde, dass man mit denen einen deutlich leichter in die Materie herein kommt. Muss man aber nicht. Man kann auch mit 32bit anfangen.
Tilen Majerle hat eine Seite mit vielen Tutorials zu STM32: https://stm32f4-discovery.net/ oder einige 'light wight' Libs auf Github: https://github.com/MaJerle er arbeitet aber jetzt bei STM und liefert immer mehr HAL Beispiele :) Ein weiterer Klassiker ist die Diller Seite, auch angefangen mit Register Programmierung, empfiehlt jetzt aber selber auch HAL/CubeMX: https://www.diller-technologies.de/stm32_wide.html und http://pomad.fr/node/2 erklärt auch einiges sehr detailiert. Wenn man eine Aufgabe mit dem µC erledigen und sich nicht gleich in den µC verlieben will, dann kommt man mit CubeMX schon recht schnell ans Ziel. Und so ineffizient ist der Code auch nicht. Es sieht erst nach viel aus, aber vieles ist auch Sicherheit wie die Locking Funktionen oder die ASSERT Makros die im release build keinen Code erzeugen. Sinnvoll ist auch gleich die ersten Tests mit dem Debugger zu verfolgen und mal vom ResetHandler an zu verfolgen was beim Start passiert. So wie es auch in http://pomad.fr/node/7 gezeigt wird. Stefan ⛄ F. schrieb: > Es begintn damit, das Referenzhandbuch des Mikrocontrollers mindestns 2 > mal durchzulesen STM hat seine Doku zweigeteilt, in Datasheet und Reference Manual. Ich würde da eher empfehlen erstmal im Datasheet das Kapitel 'Device Overview' zu überfliegen. Da steht drin was der Käfer so alles draufhaut und das ist schon erschlagend genug. Und für spezielle Themen gibt es noch die Application Notes, da gibt es auch genug zu lesen für die kommenden langen Winterabende. ach ja, und weil die 32 Bitter auch nicht mit Speicher geizen, kann man sich auch mit OS und RTOS beschäfftigen, Mbed-os z.B.
Johannes S. schrieb: > Tilen Majerle hat eine Seite mit vielen Tutorials zu STM32: > https://stm32f4-discovery.net/ > oder einige 'light wight' Libs auf Github: > https://github.com/MaJerle > er arbeitet aber jetzt bei STM und liefert immer mehr HAL Beispiele :) > > Ein weiterer Klassiker ist die Diller Seite, auch angefangen mit > Register Programmierung, empfiehlt jetzt aber selber auch HAL/CubeMX: > https://www.diller-technologies.de/stm32_wide.html > > und > http://pomad.fr/node/2 > erklärt auch einiges sehr detailiert. > ... Nur ein kleiner Vorschlag: Mikrocontroller net ist eine recht fluktuierende Community. von AVR gibt es Artikel. STM32 und co. scheinen doch aber sehr beliebt. Hier im Thread allein sind so viele nützliche Infos (Die ich durchs googlen nicht gefunden hätte), kann man den nicht anheften und "Für Beginner - nützliche Links" umbenennen?
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.