Al usar la HAL (Biblioteca de abstracción de hardware) para cualquiera de los microcontroladores STM32:
Para un periférico dado, ¿por qué tiene que llamar un HAL_...init() , así como un HAL ..._ MspInit ( ) : ¿por qué se separan varios "inits"?
Al usar la HAL (Biblioteca de abstracción de hardware) para cualquiera de los microcontroladores STM32:
Para un periférico dado, ¿por qué tiene que llamar un HAL_...init() , así como un HAL ..._ MspInit ( ) : ¿por qué se separan varios "inits"?
El manual del usuario de ST UM1725 - Descripción de los controladores HAL y LL STM32F4 , consulte las páginas 61 a 63, da una explicación:
La inicialización periférica se realiza a través de HAL_PPP_Init () mientras que
La inicialización de recursos de hardware utilizada por un periférico ( PPP ) se realiza durante esta inicialización llamando a MSP función de devolución de llamada HAL_PPP_MspInit () .
La devolución de llamada MspInit realiza la inicialización de bajo nivel relacionada con los diferentes recursos de hardware adicionales: RCC, GPIO, NVIC y DMA.
(MSP: M CU S upport P ackage)
y
2.12.2 Inicialización global de HAL:
HAL_Init (): esta función debe llamarse al inicio de la aplicación para
- inicializar el caché de datos / instrucciones y pre-buscar cola
- configure el temporizador SysTick para generar una interrupción cada 1 ms (según el reloj HSI) con la prioridad más baja
- establecer la agrupación de prioridad en 4 bits de prioridad
- llame a HAL_MspInit () función de devolución de llamada del usuario para realizar inicializaciones a nivel del sistema (Reloj, GPIO, DMA, interrupciones). HAL_MspInit () se define como "débil" vacío función en los controladores HAL.
Lea otras preguntas en las etiquetas microcontroller programming stm32 stm32f3 hal-library