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?