分享

搭建eclipse+codesourcery的STM32开发环境

 xingwangjy 2017-10-10

1、首先需要下载jre保证eclipse能运行,这里我直接装的jdk1.7(我上传的http://yun.baidu.com/s/1i31RD7v),然后需要配置环境变量并确保java虚拟机正确运行(这里我就不详细讲解,大家可以在网上搜如何安装jdk并配置环境变量)。再下载eclipse的c/c++开发工具并安装,各位可以自己去网上下载,也可以直接下载我上传的http://yun.baidu.com/s/1i3AFgJb。然后还需要安装这个插件http://yun.baidu.com/s/1ntzbCZR,具体插件安装方法也可以在网上搜一下;


2、下载codesourcery并安装,这个文件找起来比较麻烦,但是网上也可以找到。这里我上传了一份,大家可以在这个链接去下载http://yun.baidu.com/s/1mgGEEBQ;


3、安装完成后我们打开eclipse,我们选择File->New->C Project新建一个C的工程(如下图);



4、弹出对话框(如下图),我们需要在Project name中输入项目名,在Project type栏中选择Empty Project,然后在右边Toolchains栏中选择Cross ARM GCC并点击Next;



5、点击完Next后将会跳转到如下图所示界面,这里我们直接点击Next;



6、点击完Next后将会跳转到如下图所示界面,Toolchain name选择GNU Tools for ARM Embedded Processors(arm-none-eabi-gcc),Toolchain path则需要选择codesourcery安装路径下的bin文件夹,大家根据实际情况选择。然后我们点击Finish;



7、点击完Finish后我们可以看到(如下图)在Project Explorer出现了我们刚刚新建的项目,项目下面已经有一些Includes的文件。如果这里没有Includes的文件,关闭eclipse重启。如果重启还是没有,那有可能就就是前面安装出了问题,重新再检查一遍吧;



8、接下来我们在workspace下项目生成的文件夹中添加库Libraries、Linkers文件夹和src文件夹(如下图),库文件夹为ST的官方库,Linkers文件夹下放链接文件,src文件夹下放各位自己要实现的文件;



9、添加完后回到ecipse,点击项目并按下F5,项目会刷新并自动显示出我们刚刚添加的文件夹以及文件夹中的文件(如下图);



10、我们接下来右键点击项目,并选择Properties,选择C/C++ Build -> Settings -> Tool Settings -> Cross ARM C Compiler -> Preprocessor(如下图),在右边栏中Defined Symbols(-D)中添加两个定义,一个是STM32F10X_HD(这个根据实际使用的芯片填写,我选用的芯片是STM32F103ZE大容量的,如果是中等容量的芯片填STM32F10X_MD,小容量的填STM32F10X_LD,如果是STM32F105或者STM32F107填STM32F10X_CL),另一个是USE_STDPERIPH_DRIVER;



11、继续选择Cross ARM C Compiler下的Includes,在右边栏中添加文件的路径(如下图)。其中库Libraries文件包括四个需要添加的路径:

"${workspace_loc:/${ProjName}/Libraries/CMSIS/CM3/CoreSupport}"

"${workspace_loc:/${ProjName}/Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x}"

"${workspace_loc:/${ProjName}/Libraries/STM32F10x_StdPeriph_Driver/inc}"

"${workspace_loc:/${ProjName}/Libraries/STM32F10x_StdPeriph_Driver/src}"

另外各位自行创建的文件夹记得也要添加进来。我这里只创建了一个src的文件夹,因此除了库文件的四个路径外再把src文件夹的路径添加进来即可;

"${workspace_loc:/${ProjName}/src}"



12、接下来我们选择Cross ARM C Linker->General,并在右边添加Linkers文件夹下的链接文件即可(这里我说一下链接文件也是在ST的官方库中找,在官方库中的Project -> STM32F10x_StdPeriph_Template -> TrueSTUDIO文件夹中,里面会有不同的EVAL文件夹,每个文件夹下都有一个.ld的文件(.ld文件就是链接文件),各位可以用记事本把链接文件打开看看,里面的Abstract中会描述该链接文件适用于哪款芯片,大家根据实际情况选择。找到后将文件复制到开始的Linkers文件夹下并刷新Project Explorer就会出现在项目中);



13、我们切换到Toolchains栏中,这里我们需要将Build command和Remove command修改为cs-make和cs-rm(如下图),另外还需要确保Global path的路径正确,这里可以直接找到路径下去看是否有cs-make.exe和cs-rm.exe文件(如下下图);


----------



14、切换到Build Steps下并在Post-build steps下的Command中填写arm-none-eabi-objcopy -S -O binary "${ProjName}.elf" "${ProjName}.bin",如下图所示;



15、接下来我们设置完后记得点击对话框中右下角的Apply按钮,然后点击OK按钮;


16、然后我们就可以右键项目先选择Clean Project,然后选择Build Project编译项目,然后可能会碰到问题;



可能碰到的问题:

1、如果我没有记错的话库文件Libraries中是没有system_stm32f10x.c这个文件的,这个文件需要在ST的库中的Project->STM32F10x_StdPeriph_Examples文件夹下的任意一个项目里面都是有的。各位可以自己将system_stm32f10x.c文件拷进工程下面的文件夹中,这里我是放在了工程中Libraries\STM32F10x_StdPeriph_Driver\src这个文件夹下(http://yun.baidu.com/s/1gd2BCbD链接可以下载我导出来的例程,经测试编译通过,大家可以直接导入到eclipse中查看相关的配置);



2、这里还有可能会碰到的问题是core_cm3.c文件无法编译通过,文件中的uint32_t __STREXB(uint8_t value, uint8_t *addr)函数和uint32_t __STREXH(uint16_t value, uint16_t *addr)存在问题,这里我们需要将函数中“=r”修改成"=&r"(如下图);


那么解决完这两个问题后大家可以再次编译工程并且应该能编译通过了!


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多