¿cuál es el propósito de __ una referencia débil utilizada en Keil MDK ARM?

3

Se puso un poco desordenado con una función definida en dos archivos y una con un símbolo __weak. Llamé a la siguiente función para cargar la configuración de UART1 en STM32L476RG desde mi archivo principal

 if(HAL_UART_Init(&UartHandle) != HAL_OK) and this function is defined at 
  {
    Error_Handler();
  }

Encontré que esta función llama a otra función llamada HAL_UART_MspInit(huart); Esto se define en dos lugares,

 1. in stm32l4xx_hal_msp.c as void HAL_UART_MspInit(UART_HandleTypeDef
    *huart)
 2. in stm32l4xx_hal_uart.c as __weak void HAL_UART_MspInit(UART_HandleTypeDef *huart)

Mi problema es que cuando se carga la configuración de UART, se llama a la función __weak. Lo hice refiriéndome a un ejemplo, UART_WakeUpFromStop que figura en [STM32F476RG Página del producto] . donde en el ejemplo se llama a la función en nstm32l4xx_hal_msp.c, se anula HAL_UART_MspInit (UART_HandleTypeDef * huart). ¿Qué está mal en mi código? ¿Cuál es la influencia del __ símbolo débil?

STM32L476RG Manual de referencia

    
pregunta Arun Joe

1 respuesta

1

Soo que la definición y la implementación se pueden anular con un tipo no débil, también conocido como definido por el usuario.

Verifique el manual del traje de abeja ..

    
respondido por el dannyf

Lea otras preguntas en las etiquetas