Je vais commencer par le développement ARM (après 2 ans d'AVR) et j'ai choisi la carte STM DISCOVERY avec le microprocesseur stm32f4 dessus.
J'ai décidé d'aller avec eclipse + ARM gcc car je n'aime pas la limite de code sur Keil et je n'ai pas l'argent pour obtenir une version payante.
En suivant les tutoriels, j'ai installé eclipse avec les outils gcc ARM + openocd + make utils etc.
Ma question concerne le plugin «packages». Comme tout débutant, je ne sais pas s'il faut utiliser le nouveau STM HAL ou l'ancien SPL.
Ma compréhension est que HAL a implémenté l'abstraction à un niveau où elle peut être appelée équivalent Arduino pour arm. SPL, d'autre part, fournit juste assez d'abstraction pour accélérer le codage, mais vous devez toujours traiter au niveau de la puce.
Avec cette compréhension, je voudrais m'en tenir à SPL pour mieux comprendre les choses plutôt que d'utiliser HAL.
Ce que j'aimerais savoir, est-ce que l'utilisation de packages pour STM me force implicitement à utiliser HAL? Si oui, quelqu'un peut-il m'indiquer comment utiliser SPL avec ma configuration?
Réponses:
Le SPL, comme je le vois, n'a rien à voir avec l'IDE que vous utilisez. Vous pouvez simplement inclure les modules appropriés (par exemple stmf4xx_dma.c et stmf4xx_dma.h) dans votre projet et utiliser les fonctions exposées (et très bien décrites) dans les fichiers .c et .h. En fait, j'ai appris sur le nucléo stmf411 avec gcc, openocd et SPL en utilisant simplement l'invite de commande windows; pas d'IDE. Les packages dans eclipse vous forceraient probablement à utiliser le HAL (puisque dans le dossier 'Packages' téléchargé pour eclipse, je ne vois que les modules HAL).
Le HAL lui-même IMO semble beaucoup plus en couches que nécessaire. Alors que l'accès direct aux registres devient fastidieux et difficilement lisible. Le SPL semble juste. clive1, le gourou du forum st.com, préfère également le SPL à HAL. Voici ma question sur ce forum ... pourrait être utile.
Besoin d'aide avec USART sur Nucleo stmf411
la source
Je n'ai aucune expérience avec HAL, mais j'ai utilisé SPL plusieurs fois pour gagner du temps. À mon avis, la communauté cible de ces processeurs intégrés comprend 2 groupes: le premier groupe qui n'est pas intéressé à s'engager avec les couches matérielles. Programmeurs de logiciels, amateurs habituels et Arduino, adorateurs de framboises. si vous êtes dans ce groupe, HAL semble être un bon choix pour vous. Secondes provenant de la communauté électronique et matérielle, qui préfèrent
à
pour allumer la LED et voulez savoir ce qu'ils font fondamentalement. alors si vous avez dans ce groupe et avez assez de temps pour lire le manuel de référence et le manuel de programmation de votre MCU, peut-être que la programmation au niveau du registre est un autre choix. mais si vous voulez décider entre seulement au-dessus de l'option 2: HAL a un meilleur avenir grâce au support de ST 'mais SPL est un moyen plus facile à comprendre pour un nouveau démarreur. Peut-être que cela peut aider http://www.eevblog.com/forum/microcontrollers/stm32-and-their-hal-library/
la source
Obtenez cet IDE: System Workbench pour STM32 - c'est gratuit, basé sur Eclipse et avez à la fois arm-gcc et openocd dans un seul paquet.
Et sur les bibliothèques: en plus de SPL et HAL existent maintenant LL. Chacun a ses avantages et ses inconvénients, et vous devez choisir ce dont vous avez besoin. Et si je comprends bien , tous ont un statut expérimental pour ST. Ci-dessous mes notes à chacun d'eux:
Brève description de mes notes:
>_<
, toutes les fonctions pour TIM + DMA sont implémentées pour réécrire le registre TIM et pas d'autre ...)Pour un peu réhabiliter HAL: il a un gros avantage pour les débutants - il est soutenu par STMCubeMX.
ÉDITER:
J'oublie libopencm3 - c'est une bibliothèque alternative. Je ne l'ai pas utilisé.
la source