STM32启动汇编代码中的[WEAK]是什么意思?

电器工程 stm32 集会 基尔
2022-01-25 01:55:54

我正在阅读 Keil 软件中的 STM32F407 启动文件以收集一些信息。我遇到了这个问题:[WEAK]符号是用来做什么的?

使用此符号的部分代码是:

Reset_Handler    PROC
                 EXPORT  Reset_Handler             [WEAK]
        IMPORT  SystemInit
        IMPORT  __main

                 LDR     R0, =SystemInit
                 BLX     R0
                 LDR     R0, =__main
                 BX      R0
                 END
1个回答

它说函数的实现应该是弱链接的(与通常的强链接相反)。

这允许提供函数的“后备”实现,以防找不到其他(强链接)。

这通常用于裸机 MCU 框架中的默认中断处理程序。这样,当你实现一个中断时,你只需要编写你的函数,而不必从源代码中删除默认的,链接器就可以完成这项工作。

https://en.wikipedia.org/wiki/Weak_symbol