Biblioteca de periféricos estándar y controladores HAL juntos en Keil

parece que:

  1. ST se ha movido al inicializador de código Cubemx y genera solo controladores HAL
  2. Keil ha presentado DFP y Manage-Run-time-Environment que utilizan unidades HAL

aunque cubemx de ST y run-time-env de Keil son muy útiles, pero los controladores HAL todavía tienen algunos errores. mientras tanto, hay muchos códigos en git-hub, etc. para Stm32F4, todos escritos con bibliotecas periféricas estándar (std_lib).

¿Es posible usar la biblioteca de periféricos estándar y las unidades HAL juntas en un proyecto de Keil?

Probablemente podría usar una combinación, si usa solo uno de ellos para un periférico determinado, o realizar un seguimiento de lo que cada uno está haciendo, pero no es exactamente la práctica más limpia. Realmente debería limpiar el prefacio de su pregunta, y es HAL con solo una "L" para la capa.
Gracias por la respuesta, ¿cómo puedo usar ambos? ¿cubemx sugiere una forma de hacerlo? (por cierto, ¡HALL cambió a HAL mal escrito!)

Respuestas (1)

Sí, es bastante posible y me ha salvado la vida en un proyecto en el que estaba trabajando donde tenía todo construido alrededor de HAL.

Lo creas o no, seguí resistiéndome a la transición a HAL durante tanto tiempo, hasta que me vi obligado a usarlo para mi proyecto debido a las muchas ventajas que brinda en cierto aspecto.

Sin embargo, parte de mi proyecto es controlar un dispositivo esclavo sobre SPI y tenía la biblioteca para SPL de ST. Después de pasar un tiempo tremendo tratando de resolver un problema que tuve con la parte de recepción del SPI sobre HAL, y después de dejar de probar cientos de ejemplos y fragmentos de código para el SPI, finalmente logré resolverlo mezclando el controlador SPI del SPL con el resto de mi proyecto, que fue construido con HAL.

Esto es lo que hice en Keil uVision para que me funcionara sin ningún problema. He creado objetos precompilados para SPI y cualquier dependencia utilizada por SPI y los he importado/vinculado a mi proyecto HAL. Por supuesto, eliminé todo lo relacionado con HAL_SPI en el proyecto y ahora el proyecto compila y se ejecuta de forma rápida y sin problemas. Ahora puedo manejar mi dispositivo con las funciones SPI basadas en SPL y seguir disfrutando de lo que HAL tiene para ofrecer para los módulos restantes del proyecto.