Zacznę od opracowania ARM (po 2 latach AVR) i wybrałem płytę STM DISCOVERY z mikroprocesorem stm32f4.
Zdecydowałem się na Eclipse + ARM gcc, ponieważ nie podoba mi się limit kodu na Keil i nie mam pieniędzy, aby uzyskać płatną wersję.
Zgodnie z samouczkami zainstalowałem Eclipse wraz z narzędziami ARM gcc + openocd + make utils itp.
Moje pytanie dotyczy wtyczki „pakietów”. Jak każdy początkujący, jestem zdezorientowany, czy użyć nowego STM HAL, czy starszego SPL.
Rozumiem, że HAL zaimplementował abstrakcję do poziomu, w którym można ją nazwać odpowiednikiem Arduino dla uzbrojenia. Z drugiej strony SPL zapewnia wystarczającą abstrakcję, aby przyspieszyć kodowanie, ale nadal musisz radzić sobie na poziomie układów.
Mając to zrozumienie, chciałbym trzymać się SPL, aby lepiej rozumieć rzeczy, niż używać HAL.
Chciałbym wiedzieć, czy używanie pakietów dla STM domyślnie zmusza mnie do używania HAL? Jeśli tak, to czy ktoś może mi wskazać, jak używać SPL w mojej konfiguracji?
Odpowiedzi:
Jak widzę, SPL nie ma nic wspólnego z używanym IDE. Możesz po prostu dołączyć odpowiednie moduły (np. Stmf4xx_dma.c i stmf4xx_dma.h) do swojego projektu i korzystać z funkcji ujawnionych (i bardzo dobrze opisanych) w plikach .c i .h. W rzeczywistości uczyłem się na jądrze stmf411 z gcc, openocd i SPL, używając tylko wiersza poleceń systemu Windows; bez IDE. Pakiety w środowisku Eclipse prawdopodobnie zmusiłyby cię do korzystania z HAL (ponieważ w pobranym folderze „Packages” do zaćmienia widzę tylko moduły HAL).
Sam HAL IMO wydaje się dużo bardziej warstwowy niż to konieczne. Natomiast bezpośredni dostęp do rejestrów jest męczący i trudny do odczytania. SPL wydaje się w sam raz. clive1, guru na forum st.com, również woli SPL niż HAL. Oto moje pytanie na tym forum ... może być pomocne.
Potrzebujesz pomocy z USART na Nucleo STMF411
źródło
Nie mam żadnych doświadczeń z HAL, ale wiele razy używałem SPL do oszczędzania czasu. Moim zdaniem Społeczność docelowa tego procesora osadzonego to 2 grupy: pierwsza grupa, która nie jest zainteresowana zaangażowaniem się w warstwy sprzętowe. Programistów, zwykłych hobbystów i wyznawców Arduino, malin. jeśli jesteś w tej grupie, wydaje się, że HAL jest dla ciebie dobrym wyborem. Sekundy, które pochodzą od społeczności elektronicznej i sprzętowej, którzy wolą
do
za włączanie diody LED i chcą wiedzieć, co robią w zasadzie. to jeśli masz w tej grupie i masz wystarczająco dużo czasu na przeczytanie podręcznika referencyjnego i podręcznika programowania MCU, może programowanie na poziomie rejestru jest kolejnym wyborem. ale jeśli chcesz wybierać pomiędzy opcją tylko powyżej 2: HAL ma lepszą przyszłość dzięki obsłudze ST ', ale SPL jest łatwiejszym sposobem zrozumienia dla nowego startera. Może to może pomóc http://www.eevblog.com/forum/microcontrollers/stm32-and-their-hal-library/
źródło
Zdobądź IDE: System Workbench dla STM32 - jest bezpłatny, oparty na Eclipse i zawiera zarówno arm-gcc, jak i openocd w jednym pakiecie.
A o bibliotekach: oprócz SPL i HAL istnieje teraz LL. Każdy ma pewne zalety i wady i musisz wybrać to, czego potrzebujesz. I jak rozumiem , wszystkie mają status eksperymentalny dla ST. Poniżej moich ocen do każdego z nich:
Krótki opis moich ocen:
>_<
, wszystkie funkcje dla TIM + DMA są zaimplementowane do przepisywania rejestru TIM i żadnych innych ...)Dla małej rehabilitacji HAL: ma jedną wielką zaletę dla początkujących - jest obsługiwany przez STMCubeMX.
EDYTOWAĆ:
Zapomniałem o libopencm3 - to alternatywna biblioteka. Nie użyłem tego.
źródło