描述
在Keil中,如果在 lib01.a 中定义了 WEAK foo(),而在 lib02.a 中定义了 foo(),最后链接成 axf 文件的时候,会使用 lib01.a 中的 weak 定义。
为什么会遇到这个问题
我想将驱动封装成库,比如 Systick_IRQHandler Strong定义也放在这里面,发现最后执行的是 startup.s 中的 Systick_IRQHandler ,一旦执行 Delay 就跑不下去了。
解决办法
参考Keil HELP关于WEAK的说明,将 Strong foo() 放到直接生成 axf 文件的工程(有啥学名没有)中。
The Future
有没有更好的办法,我实在不想在用户应用中看到驱动源码。 |