Ich werde mit der ARM-Entwicklung beginnen (nach 2 Jahren AVR) und habe die STM DISCOVERY-Karte mit dem Mikroprozessor stm32f4 darauf aufgenommen.
Ich habe mich für eclipse + ARM gcc entschieden, da mir das Code-Limit für Keil nicht gefällt und ich nicht das Geld habe, um eine kostenpflichtige Version zu erhalten.
Im Anschluss an die Tutorials habe ich Eclipse zusammen mit gcc ARM Tools + openocd + make utils usw. installiert.
Meine Frage betrifft das 'Pakete'-Plugin. Wie jeder Anfänger bin ich verwirrt, ob ich neues STM HAL oder das ältere SPL verwenden soll.
Mein Verständnis ist, dass HAL die Abstraktion auf eine Ebene implementiert hat, auf der sie als Arduino-Äquivalent für Arm bezeichnet werden kann. SPL hingegen bietet gerade genug Abstraktion, um das Codieren zu beschleunigen, aber Sie müssen sich immer noch auf Chipebene befassen.
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 zur Verwendung von HAL? Wenn ja, kann mich jemand darauf hinweisen, wie SPL mit meinem Setup verwendet wird?
Antworten:
Die SPL hat, wie ich sehe, nichts mit der von Ihnen verwendeten IDE zu tun. Sie können einfach die relevanten Module (z. B. stmf4xx_dma.c und stmf4xx_dma.h) in Ihr Projekt aufnehmen und die Funktionen verwenden, die in den Dateien .c und .h verfügbar gemacht (und sehr gut beschrieben) sind. Tatsächlich habe ich auf dem stmf411-Nucleo mit gcc, openocd und SPL nur über die Windows-Eingabeaufforderung gelernt. keine IDE. Pakete in Eclipse würden Sie wahrscheinlich zwingen, die HAL zu verwenden (da im heruntergeladenen Ordner "Pakete" für Eclipse nur HAL-Module angezeigt werden).
Die HAL selbst IMO scheint vielschichtiger als nötig. Der direkte Zugriff auf die Register wird lästig und ist kaum lesbar. Die SPL scheint genau richtig zu sein. clive1, der Guru im st.com-Forum, bevorzugt auch die SPL gegenüber HAL. Hier ist meine Frage in diesem Forum ... könnte hilfreich sein.
Benötigen Sie Hilfe mit USART auf Nucleo stmf411
quelle
Ich habe keine Erfahrungen mit HAL, habe aber SPL oft verwendet, um meine Zeit zu sparen. Meiner Meinung nach besteht die Zielgemeinschaft dieser eingebetteten Prozessoren aus zwei Gruppen: der ersten Gruppe, die nicht daran interessiert ist, sich mit Hardwareschichten zu befassen. Softwareprogrammierer, übliche Hobbyisten und Arduino, Himbeeranbeter. Wenn Sie in dieser Gruppe sind, scheint HAL eine gute Wahl für Sie zu sein. Sekunden, die von der Elektronik- und Hardware-Community kommen, die es vorziehen
zu
zum Einschalten der LED und möchten wissen, was sie im Grunde tun. Wenn Sie in dieser Gruppe sind und genügend Zeit haben, um das Referenzhandbuch und das Programmierhandbuch Ihrer MCU zu lesen, ist möglicherweise eine Programmierung auf Registerebene eine andere Wahl. Wenn Sie sich jedoch zwischen nur einer Option über 2 entscheiden möchten: HAL hat aufgrund der Unterstützung von ST eine bessere Zukunft, aber SPL ist für einen neuen Starter eine einfachere Methode zum Verständnis. Vielleicht kann dies helfen http://www.eevblog.com/forum/microcontrollers/stm32-and-their-hal-library/
quelle
Holen Sie sich diese IDE: System Workbench für STM32 - sie ist kostenlos, basiert auf Eclipse und enthält sowohl arm-gcc als auch openocd in einem Paket.
Und zu Bibliotheken: Neben SPL und HAL gibt es jetzt LL. Jeder hat einige Vor- und Nachteile, und Sie müssen wählen, was Sie brauchen. Und so wie ich es verstehe , haben alle einen experimentellen Status für ST. Unter meinen Noten für jeden von ihnen:
Kurzbeschreibung für meine Noten:
>_<
, um Byte für Byte von usart zu empfangen , alle Funktionen für TIM + DMA sind für das Umschreiben des TIM-Registers implementiert und keine anderen ...)Für eine kleine Rehabilitation von HAL: Es hat einen großen Vorteil für Neulinge - es wird von STMCubeMX unterstützt.
BEARBEITEN:
Ich vergesse libopencm3 - es ist eine alternative Bibliothek. Ich habe es nicht benutzt.
quelle