Keil-MDK 中 [WEAK] 的作用
扫描二维码
随时随地手机看文章
移植后的代码戳这里:https://code.csdn.net/KISSMonX/freertos_f3discovery_test
在上一篇文章 ARM 汇编中的 "B ." 语句意义.时, 顺带介绍了 [WEAK] 的作用.
昨天再思考移植问题的时候(也就是执行第一个任务时直接跳到 SVC_Handler 里的 B . 处),
想到了这个问题, 然后在移植配置文件中添加了几个宏定义就解决了问题, 移植成功, 具体下文介绍.
这里再做一次解释. 看看自己是不是真正的理解了. :)
第一步明显是要贴代码装逼, 去启动文件里摘取出要介绍的部分. 然后记笔记的形式摘录下来.如下:
;Resethandler这里才是启动文件的重点啊.不过没见到为C程序建立栈空间操作啊???直接调用main大丈夫?MAN???
Reset_HandlerPROC
EXPORTReset_Handler[WEAK]
IMPORTSystemInit
IMPORT__main
LDRR0,=SystemInit
BLXR0
LDRR0,=__main
BXR0
ENDP
;DummyExceptionHandlers(infiniteloopswhichcanbemodified)
NMI_HandlerPROC
EXPORTNMI_Handler[WEAK]
B.
ENDP
HardFault_Handler
PROC
EXPORTHardFault_Handler[WEAK]
B.
ENDP
MemManage_Handler
PROC
EXPORTMemManage_Handler[WEAK]
B.
ENDP
BusFault_Handler
PROC
EXPORTBusFault_Handler[WEAK]
B.
ENDP
UsageFault_Handler
PROC
EXPORTUsageFault_Handler[WEAK]
B.
ENDP
SVC_HandlerPROC
EXPORTSVC_Handler[WEAK]
B.
ENDP
DebugMon_Handler
PROC
EXPORTDebugMon_Handler[WEAK]
B.
ENDP
PendSV_HandlerPROC
EXPORTPendSV_Handler[WEAK]
B.
ENDP
SysTick_HandlerPROC
EXPORTSysTick_Handler[WEAK]
B.
ENDP
Default_HandlerPROC
EXPORTWWDG_IRQHandler[WEAK]
EXPORTPVD_IRQHandler[WEAK]
EXPORTTAMPER_STAMP_IRQHandler[WEAK]
EXPORTRTC_WKUP_IRQHandler[WEAK]
EXPORTFLASH_IRQHandler[WEAK]
EXPORT RCC_IRQHandler [WEAK]