[求助] 想把STM32的库编译成.lib,然后应用代码链接,编译能成功,但是无法运行

辛昕   2023-9-7 23:07 楼主

如题

想把STM32的库编译成.lib,然后应用代码链接,编译能成功,但是无法运行——

我曾试过,单步调试,就点亮和灭LED灯是可以的,但运行不行。

 

从头说一下,以免不清楚。

我的意思是

 

固件HAL库,编译成库 .lib

1694098921456.png  

 

然后应用代码部分直接链接库编译

1694098969431.png  

 

试过把 startup_xx.s 挪到 APP侧。

试了一下,它可以让(软件延时)toggle LED ,灯确实能闪。

但串口没成功打印字符。

 

感觉了一下,这可能和 armcc (5) 的编译、链接,也和STM32的几个文件的编译、链接方式有关,但是,搜了百度,没有搜到有用的

——他们都没有完全、彻底地把 STM32库有关的文件完全抽离出来。

 

也试过IAR,但效果类似。依然不行。

 

尝试看一下ARMCC的文档,然而,可能是英文的关系,但更大的可能是此前对编译器的命令缺乏了解,所以看不懂。

DUI0477E_using_the_fromelf_utility.zip (448.89 KB)
(下载次数: 1, 2023-9-7 23:06 上传)
DUI0472E_using_the_arm_compiler.zip (1.74 MB)
(下载次数: 2, 2023-9-7 23:06 上传)
DUI0471K_software_development_guide.zip (817.46 KB)
(下载次数: 1, 2023-9-7 23:06 上传)

不知道哪位大侠对此有研究,指教一下,谢谢。

强者为尊,弱者,死无葬身之地

回复评论 (8)

你反汇编一下呀,最终还是要看机器语言是否正确。
点赞  2023-9-8 07:16

编译能成功,确无法运行

感觉很熟悉的问题,又无从下手

是怎么烧写的呢

 

点赞  2023-9-8 07:26

编译成库,只是说里面有这个文件。需要主动去调用吧?你把最小需要的文件保留如 .s(寄存器操作的工程),只单独编译hal库看看

点赞  2023-9-8 09:02

编译成lib,应该也只是可以用里面的函数,直接把底层做成lib我还真没试过,只试过把算法做成lib。

点赞  2023-9-8 09:16

你把代码编译成库不能有main部分,你的代码只是作为库存在,单片机程序使用时需要提供H头文件,用不用是在程序中。

点赞  2023-9-8 10:17
引用: 火辣西米秀 发表于 2023-9-8 07:26 编译能成功,确无法运行 感觉很熟悉的问题,又无从下手 是怎么烧写的呢  

不分开库的方式,正常运行

强者为尊,弱者,死无葬身之地
点赞  2023-9-8 11:04
引用: bigbat 发表于 2023-9-8 10:17 你把代码编译成库不能有main部分,你的代码只是作为库存在,单片机程序使用时需要提供H头文件,用不用是在 ...

main去掉了,截图可能是后来做了别的尝试遗留的。

这个基础问题我试过了的。不至于不至于

强者为尊,弱者,死无葬身之地
点赞  2023-9-8 11:05
引用: 下雨的声音 发表于 2023-9-8 09:02 编译成库,只是说里面有这个文件。需要主动去调用吧?你把最小需要的文件保留如 .s(寄存器操作的工程),只 ...

.s我抽出来了,结果是LED和延迟函数正常,但串口还是不行

强者为尊,弱者,死无葬身之地
点赞  2023-9-8 11:06
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复