Comenzaré con el desarrollo ARM (después de 2 años de AVR) y he adquirido la placa STM DISCOVERY con el microprocesador stm32f4.
Decidí usar eclipse + ARM gcc porque no me gusta el límite de código en 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 antiguo SPL.
Tengo entendido que HAL ha implementado la abstracción a un nivel en el que puede denominarse equivalente de Arduino para brazo. SPL, por otro lado, proporciona suficiente abstracción para hacer que la codificación sea más rápida, pero aún debe lidiar con el nivel de chip.
Con este entendimiento, me gustaría seguir con SPL para comprender mejor las cosas en lugar de usar HAL.
Lo que me gustaría saber es si 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?
El SPL, como veo, no tiene nada que ver con el IDE que 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 ID. Los paquetes en eclipse probablemente lo obligarían a usar HAL (ya que dentro de la carpeta 'Paquetes' descargada para eclipse, solo veo módulos HAL).
El HAL en sí mismo, en mi opinión, parece mucho más estratificado de lo necesario. Mientras que acceder a los registros directamente se vuelve tedioso y difícilmente legible. El SPL parece correcto. clive1, el gurú del foro st.com, también prefiere SPL a HAL. Aquí está mi pregunta en ese foro ... podría ser útil.
No tengo ninguna experiencia con HAL, pero usé SPL muchas veces para ahorrar tiempo. En mi opinión, la comunidad objetivo de estos procesadores integrados son 2 grupos: El primer grupo que no está interesado en comprometerse con las capas de hardware. Programadores de software, aficionados habituales y Arduino, adoradores de Raspberry. Si está en este grupo, parece que HAL es una buena opción para usted. Seconds que proviene de la comunidad electrónica y de hardware, que prefieren
GPIO_A->PIN &= ~(1 << 15);
a
LED_On(1)
para encender el LED y quiere saber lo que están haciendo básicamente. entonces, si está en este grupo y tiene suficiente tiempo 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 las 2 opciones anteriores: HAL tiene un mejor futuro debido al soporte de ST, pero SPL es una forma más fácil de entender para un nuevo principiante. Tal vez esto pueda ayudar http://www.eevblog.com/forum/microcontrollers/stm32-and-their-hal-library/
Obtenga este IDE: System Workbench para STM32 : es gratis, está basado en Eclipse y tiene arm-gcc y openocd en un solo paquete.
Y sobre librerías: además de SPL y HAL ahora existen LL. Cada uno tiene algunas ventajas y desventajas, y debes elegir lo que necesitas. Y según tengo entendido , todos ellos tienen estado experimental para ST. Debajo de mis calificaciones a 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 compatible con STMCubeMX.
EDITAR:
Me olvidé de libopencm3 , es una biblioteca alternativa. no lo he usado
Arsenal
Bence Kaulics
Eugenio Sh.
Gesto de desaprobación
Ankit
Ankit