Standard-Peripheriebibliothek und HAL-Treiber zusammen in Keil

Es scheint, dass:

  1. ST ist zum Cubemx-Codeinitialisierer übergegangen und generiert nur noch HAL-Treiber
  2. Keil hat DFP und Manage-Run-Time-Environment eingeführt, die HAL-Laufwerke verwenden

Obwohl ST's cubemx und Keil's run-time-env so nützlich sind, sind sie so praktisch, aber HAL-Treiber sind noch irgendwie fehlerhaft. Inzwischen gibt es viele Codes auf Git-Hub usw. für Stm32F4, die alle mit Standard Peripheral Libraries (std_lib) geschrieben wurden.

Ist es möglich, sowohl Standard Peripheral Library als auch HAL-Laufwerke zusammen in einem Keil-Projekt zu verwenden?

Sie könnten wahrscheinlich einen Mix verwenden, wenn Sie nur einen von ihnen für ein bestimmtes Peripheriegerät verwenden, oder verfolgen, was jeder vorhat, aber es ist nicht gerade die sauberste Praxis. Sie sollten das Vorwort zu Ihrer Frage wirklich aufräumen, und es ist HAL mit nur einem "L" für Layer.
Danke für die Antwort, wie kann ich beide verwenden? schlägt cubemx eine Möglichkeit vor, dies zu tun? (Übrigens hat sich HALL in HAL geändert!)

Antworten (1)

Ja, es ist durchaus möglich und es hat mir das Leben gerettet für ein Projekt, an dem ich arbeitete, wo ich alles um HAL herum gebaut hatte.

Ob Sie es glauben oder nicht, ich habe mich so lange gegen den Übergang zu diesem HAL-Ding gewehrt, bis ich mich aufgrund vieler Vorteile, die es in bestimmten Aspekten bietet, gezwungen sah, es für mein Projekt zu verwenden.

Ein Teil meines Projekts besteht jedoch darin, ein Slave-Gerät über SPI zu steuern, und ich hatte die Bibliothek für die SPL von ST. Nachdem ich viel Zeit damit verbracht hatte, ein Problem zu lösen, das ich mit dem Empfangsteil des SPI über HAL hatte, und nachdem ich es aufgegeben hatte, Hunderte von Beispielen und Codeschnipseln für das SPI auszuprobieren, habe ich es endlich geschafft, es durch Mischen des SPI-Treibers herauszufinden von der SPL mit dem Rest meines Projekts, das mit HAL gebaut wurde.

Folgendes habe ich in Keil uVision getan, damit es problemlos für mich funktioniert. Ich habe vorkompilierte Objekte für das SPI und alle von SPI verwendeten Abhängigkeiten erstellt und diese in mein HAL-Projekt importiert/verknüpft. Natürlich habe ich alles über HAL_SPI im Projekt entfernt und jetzt kompiliert und läuft das Projekt schnell und reibungslos. Ich kann jetzt mein Gerät mit den SPL-basierten SPI-Funktionen betreiben und trotzdem genießen, was HAL für die verbleibenden Module des Projekts zu bieten hat.