Ich werde mit der ARM-Entwicklung beginnen (nach 2 Jahren AVRs) und habe das STM DISCOVERY-Board mit dem stm32f4-Mikroprozessor darauf aufgegriffen.
Ich habe mich für Eclipse + ARM gcc entschieden, da mir das Code-Limit auf Keil nicht gefällt und ich nicht das Geld habe, um eine kostenpflichtige Version zu bekommen.
Nach den Tutorials habe ich Eclipse zusammen mit gcc ARM-Tools + openocd + make utils usw. installiert.
Meine Frage bezieht sich auf das Plugin "Pakete". Wie jeder Anfänger bin ich verwirrt, ob ich den neuen STM HAL oder den älteren SPL verwenden soll.
Mein Verständnis ist, dass HAL die Abstraktion auf einer Ebene implementiert hat, auf der sie als Arduino-Äquivalent für Arm bezeichnet werden kann. SPL hingegen bietet gerade genug Abstraktion, um die Codierung schneller zu machen, aber Sie müssen immer noch auf Chipebene arbeiten.
Mit diesem Verständnis möchte ich bei SPL bleiben, um die Dinge besser zu verstehen, anstatt HAL zu verwenden.
Was ich gerne wissen würde, ist, zwingt mich die Verwendung von Paketen für STM implizit dazu, HAL zu verwenden? Wenn ja, kann mir jemand zeigen, wie ich SPL mit meinem Setup verwenden kann?
Wie ich sehe, hat die SPL nichts damit zu tun, welche IDE Sie verwenden. Sie können einfach die entsprechenden Module (z. B. stmf4xx_dma.c und stmf4xx_dma.h) in Ihr Projekt einbinden und die in den .c- und .h-Dateien bereitgestellten (und sehr gut beschriebenen) Funktionen verwenden. Tatsächlich habe ich auf dem stmf411 nucleo mit gcc, openocd und SPL gelernt, indem ich nur die Windows-Eingabeaufforderung verwendet habe. keine IDE. Pakete in Eclipse würden Sie wahrscheinlich dazu zwingen, die HAL zu verwenden (da ich im heruntergeladenen Ordner „Packages“ für Eclipse nur HAL-Module sehe).
Die HAL selbst scheint meiner Meinung nach viel vielschichtiger als nötig zu sein. Wohingegen der direkte Zugriff auf die Register mühsam und kaum lesbar wird. Der SPL scheint genau richtig zu sein. clive1, der Guru im st.com-Forum, bevorzugt ebenfalls SPL gegenüber HAL. Hier ist meine Frage in diesem Forum ... könnte hilfreich sein.
Ich habe keine Erfahrungen mit HAL, habe aber SPL oft verwendet, um meine Zeit zu sparen. Meiner Meinung nach besteht die Zielgemeinschaft dieser Embedded-Prozessoren aus 2 Gruppen: Die erste Gruppe, die nicht daran interessiert ist, sich mit Hardwareschichten zu beschäftigen. Softwareprogrammierer, übliche Bastler und Arduino, Himbeeranbeter. Wenn Sie zu dieser Gruppe gehören, scheint HAL eine gute Wahl für Sie zu sein. Sekunden, die aus der Elektronik- und Hardware-Community stammen, die es bevorzugen
GPIO_A->PIN &= ~(1 << 15);
zu
LED_On(1)
für das Einschalten der LED und wollen wissen, was sie im Grunde tun. Wenn Sie in dieser Gruppe sind und genügend Zeit haben, das Referenzhandbuch und das Programmierhandbuch Ihrer MCU zu lesen, ist die Programmierung auf Registerebene möglicherweise eine andere Wahl. aber wenn Sie sich nur zwischen den beiden oben genannten Optionen entscheiden möchten: HAL hat eine bessere Zukunft, da ST' unterstützt wird, aber SPL ist ein einfacherer Weg zum Verständnis für einen Neuling. Vielleicht kann das helfen http://www.eevblog.com/forum/microcontrollers/stm32-and-their-hal-library/
Holen Sie sich diese IDE: System Workbench für STM32 - sie ist kostenlos, basiert auf Eclipse und hat sowohl arm-gcc als auch openocd in einem Paket.
Apropos Bibliotheken: Neben SPL und HAL gibt es jetzt LL. Jeder hat einige Vor- und Nachteile, und Sie müssen auswählen, was Sie brauchen. Und soweit ich weiß , haben alle von ihnen experimentellen Status für ST. Nachfolgend meine Noten zu jedem von ihnen:
Kurzbeschreibung meiner Noten:
>_<
, alle Funktionen für TIM + DMA sind implementiert, um das TIM-Register neu zu schreiben und keine anderen ...)Für ein wenig Rehabilitierung von HAL: Es hat einen großen Vorteil für Neulinge - es wird von STMCubeMX unterstützt.
BEARBEITEN:
Ich habe libopencm3 vergessen - es ist eine alternative Bibliothek. Ich habe es nicht benutzt.
Arsenal
Bence Kaulics
Eugen Sch.
Tut
Ankit
Ankit