STM32/STM8技术william hill官网
直播中

吴晓成

7年用户 362经验值
私信 关注
[问答]

请问如何将一个STM32 GCC工程改成MDK工程?


从网上查到,这个工程是用gcc-arm-none-eabi-4_8+Cygwin64+ Makefile文件来实现编译的,Makefile文件里包含了多个工程,但是具体我也不懂,我没学过Makefile。
我最不喜欢的就是这个工程每次编译都要用命令行来编译,我觉得比较麻烦。
所以,我希望各位网友指教一下,如何把这个工程改成MDK工程,让我在MDK环境下也可以方便编译???
或者是把这个工程如何移植到eclipse,方便编译就行! 谢谢!!!
我悬赏30金币,希望各位网友可以帮忙解决我这个问题!

回帖(28)

李雨坤

2018-11-7 08:57:53
这里再次自荐一下我的一个文章。
【使用KEIL插件,帮你把所有文件和文件路径导入KEIL工程】
http://bbs.21ic.com/icview-705814-1-1.html

附件含教程和插件

举报

陈思远

2018-11-7 09:10:48
按照目录结构重新建立工程即可,加载对应的文件和库文件,至于那些工程相关的文件,MDK会自动生成,不过工程中的配置和包含目录,预定义项要你来补充完成,最好是会一些GCC并有相关软件,打开工程来看一看再改。
举报

陈俊

2018-11-7 09:24:12
eclipse也能操作STM32么
举报

吴晓成

2018-11-7 09:36:38

eclipse可以操作STM32的
举报

吴晓成

2018-11-7 09:45:19
引用: 60user54 发表于 2018-11-7 19:02
按照目录结构重新建立工程即可,加载对应的文件和库文件,至于那些工程相关的文件,MDK会自动生成,不过工程中的配置和包含目录,预定义项要你来补充完成,最好是会一些GCC并有相关软件,打开工程来看一看再改。

我现在就是这个卡了很久,不会弄
举报

李小雯

2018-11-7 09:55:53
把所有的源码copy到自己的工程不可吗
举报

刘琨

2018-11-7 10:12:17
看makefile里面的,应该是有两种芯片可以选择,一个是103的,一个是303的,你是想使用哪一个芯片呢?
举报

李兆水

2018-11-7 10:29:54
如果是新人,可能拷贝不全的。
举报

刘琨

2018-11-7 10:47:20
就哪103的举个例子吧:
不管是哪一个芯片,有些文件是都需要添加进到你的工程中去的,这些公共文件是:build_config.c
                   version.c
                   $(TARGET_SRC)
                   config/config.c
                   config/runtime_config.c
                   common/maths.c
                   common/printf.c
                   common/typeconversion.c
                   main.c
                   mw.c
                   flight/altitudehold.c
                   flight/failsafe.c
                   flight/flight.c
                   flight/imu.c
                   flight/mixer.c
                   drivers/bus_i2c_soft.c
                   drivers/serial.c
                   drivers/sound_beeper.c
                   drivers/system.c
                   io/beeper.c
                   io/rc_controls.c
                   io/rc_curves.c
                   io/serial.c
                   io/serial_cli.c
                   io/serial_msp.c
                   io/statusindicator.c
                   rx/rx.c
                   rx/pwm.c
                   rx/msp.c
                   rx/***us.c
                   rx/sumd.c
                   rx/sumh.c
                   rx/spektrum.c
                   rx/xbus.c
                   sensors/acceleration.c
                   sensors/battery.c
                   sensors/boardalignment.c
                   sensors/compass.c
                   sensors/gyro.c
                   sensors/initialisation.c
                   $(CMSIS_SRC)
                   $(DEVICE_STDPERIPH_SRC)


像$(TARGET_SRC) 这样的东西是makefile中的变量。在找的时候,$就是一个简单的字符,说明后面的东西是个变量,实际上在看的时候,只需要看$后面括号中的东西就行了。比如TARGET_SRC,也就是目标文件,在makefile中,找到了TARGET_SRC = $(notdir $(wildcard $(TARGET_DIR)/*.c)),也就是TARGET_DIR中的所有的.C文件,而这个Target是根据你的选择来设置的,具体的可以根据你的芯片来确定,具体的可以去看src/main/target里面的所有文件夹,根据你的芯片,将target文件夹中选择一个,把里面的所有源文件拷贝到你的工程中。


将源文件拷贝到工程的时候,不要忘记把对用的头文件添加到你的工程中,添加完之后,记得在你的KEIL中设置一下头文件的路径。

他的F303的芯片使用的是硬件浮点,你也可以在keil中设置硬件浮点,如果你的是103系列芯片,那就不用设置硬件浮点的,直接使用软件浮点就行。

工程中对应的.ld文件不用管,那是gcc用的,KEIL不需要使用。另外,记得把启动文件,那个汇编文件换掉。自己下载一个ST官方的库文件,找到里面的KEIL使用的启动文件,换掉工程中的启动文件。

根据你使用的芯片设置宏定义。这个就要具体看你的芯片了。

暂时就这些,如果还有不懂的地方,可以再下面评论,
举报

王丽娟

2018-11-7 10:57:31
引用: 60user160 发表于 2018-11-7 20:39
就哪103的举个例子吧:
不管是哪一个芯片,有些文件是都需要添加进到你的工程中去的,这些公共文件是:build_config.c
                   version.c

学习啦
举报

吴晓成

2018-11-7 11:08:55
引用: 烈阳异丙醇 发表于 2018-11-7 20:21
如果是新人,可能拷贝不全的。

全部工程就在这里了
举报

吴晓成

2018-11-7 11:26:48
引用: 60user160 发表于 2018-11-7 20:39
就哪103的举个例子吧:
不管是哪一个芯片,有些文件是都需要添加进到你的工程中去的,这些公共文件是:build_config.c
                   version.c

牛!我再尝试一下吧
举报

李雨坤

2018-11-7 11:43:05
举报

李雨坤

2018-11-7 11:51:44
本帖最后由 Dylan疾风闪电 于 2015-1-14 12:56 编辑

第二步,把压缩包中的插件导入keil。注:所谓的插件,其实就是文件枚举和XML编辑器。大家可以放心使用。喜欢自己写C#的朋友,可以问我要源码。
举报

李雨坤

2018-11-7 12:08:17
举报

李雨坤

2018-11-7 12:15:07

剩下的工作就是调整一些语法。将不兼容的语法改过来。
举报

吴晓成

2018-11-7 12:20:58
引用: 嘻嘻爱哈哈 发表于 2018-11-7 22:06
剩下的工作就是调整一些语法。将不兼容的语法改过来。

强!!
举报

吴晓成

2018-11-7 12:38:03
引用: 嘻嘻爱哈哈 发表于 2018-11-7 22:06
剩下的工作就是调整一些语法。将不兼容的语法改过来。

最后一个问题,如何调整一些语法。将不兼容的语法改过来呢??
举报

姬房有

2018-11-7 12:56:37
引用: 嘻嘻爱哈哈 发表于 2018-11-7 22:06
剩下的工作就是调整一些语法。将不兼容的语法改过来。

牛啊!!!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分