Voy a comenzar con el desarrollo de ARM (después de 2 años de AVR) y he elegido la placa STM DISCOVERY con el microprocesador stm32f4.
Decidí usar eclipse + ARM gcc ya que no me gusta el límite de código de Keil y no tengo el dinero para obtener una versión paga.
Siguiendo los tutoriales, instalé eclipse junto con gcc ARM tools + openocd + make utils, etc.
Mi pregunta es sobre el complemento 'paquetes'. Como todos los principiantes, estoy confundido sobre si usar el nuevo STM HAL o el SPL anterior.
Tengo entendido que HAL ha implementado la abstracción a un nivel en el que se puede referir como Arduino equivalente para el brazo. SPL, por otro lado, proporciona la abstracción suficiente para hacer que la codificación sea más rápida, pero aún debe tratar a nivel de chip.
Con esta comprensión, me gustaría seguir con SPL para comprender mejor las cosas en lugar de usar HAL.
Lo que me gustaría saber es: ¿el uso de paquetes para STM me obliga implícitamente a usar HAL? Si es así, ¿alguien puede indicarme cómo usar SPL con mi configuración?
Respuestas:
El SPL, como veo, no tiene nada que ver con qué IDE está utilizando. Simplemente puede incluir los módulos relevantes (por ejemplo, stmf4xx_dma.c y stmf4xx_dma.h) en su proyecto y usar las funciones expuestas (y descritas muy bien) en los archivos .c y .h. De hecho, he estado aprendiendo sobre el núcleo stmf411 con gcc, openocd y SPL usando solo el símbolo del sistema de Windows; sin IDE Los paquetes en eclipse probablemente lo obligarían a usar el HAL (dado que dentro de la carpeta descargada 'Paquetes' para eclipse, solo veo los módulos HAL).
La propia HAL IMO parece mucho más capas de lo necesario. Mientras que el acceso a los registros directamente se vuelve pesado y difícil de leer. El SPL parece correcto. clive1, el gurú en el foro st.com, también prefiere el SPL sobre HAL. Aquí está mi pregunta en ese foro ... podría ser útil.
¿Necesita ayuda con USART en Nucleo stmf411?
fuente
No tengo ninguna experiencia con HAL, pero usé SPL muchas veces para salvar mis tiempos. En mi opinión, la comunidad Target de estos procesadores integrados son 2 grupos: el primer grupo que no está interesado en participar con las capas de hardware. Programadores de software, aficionados habituales y adoradores de Arduino, Raspberry. si estás en este grupo parece que HAL es una buena opción para ti. Segundos que provienen de la comunidad electrónica y de hardware, que prefieren
a
para encender el LED y querer saber qué están haciendo básicamente. entonces, si tiene en este grupo y tiene tiempo suficiente para leer el manual de referencia y el manual de programación de su MCU, tal vez la programación de nivel de registro sea otra opción. pero si desea decidir entre solo la opción anterior 2: HAL tiene un futuro mejor debido al soporte de ST, pero SPL es una forma más fácil de entender para un nuevo iniciador. Tal vez esto pueda ayudar http://www.eevblog.com/forum/microcontrollers/stm32-and-their-hal-library/
fuente
Obtenga este IDE: System Workbench para STM32 : es gratuito, está basado en Eclipse y tiene tanto arm-gcc como openocd en un solo paquete.
Y sobre bibliotecas: además de SPL y HAL ahora existen LL. Cada uno tiene algunas ventajas y desventajas, y debe elegir lo que necesita. Y según tengo entendido , todos ellos tienen un estado experimental para ST. Por debajo de mis calificaciones para cada uno de ellos:
Breve descripción de mis calificaciones:
>_<
, todas las funciones para TIM + DMA se implementan para reescribir el registro TIM y ninguna otra ...)Para rehabilitar un poco a HAL: tiene una gran ventaja para los novatos: es el soporte de STMCubeMX.
EDITAR:
Me olvido de libopencm3 , es una biblioteca alternativa. No lo he usado.
fuente