Wurde ein wenig chaotisch mit einer Funktion, die in zwei Dateien und einer mit einem __weak-Symbol definiert ist. Ich habe die folgende Funktion aufgerufen, um die Einstellungen von UART1 in STM32L476RG aus meiner Hauptdatei zu laden
if(HAL_UART_Init(&UartHandle) != HAL_OK) and this function is defined at
{
Error_Handler();
}
Ich habe festgestellt, dass diese Funktion eine andere Funktion namens HAL_UART_MspInit(huart);
This aufruft, die an zwei Stellen definiert ist.
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)
Mein Problem ist, dass jedes Mal, wenn ich die UART-Einstellung lade, die __weak-Funktion aufgerufen wird. Ich habe es getan, indem ich auf ein Beispiel verwiesen habe, UART_WakeUpFromStop, das auf der [STM32F476RG-Produktseite] angegeben ist . wobei im Beispiel die Funktion in nstm32l4xx_hal_msp.c , void HAL_UART_MspInit(UART_HandleTypeDef *huart) aufgerufen wird. Was läuft in meinem Code falsch? Was ist der Einfluss von __weak Symbol?
Damit die Definition und Implementierung mit einem nicht schwachen Typ, auch bekannt als benutzerdefinierter Typ, überschrieben werden kann.
Überprüfen Sie das Handbuch zum Bienenanzug.
brhans