eclipse中创建stm32工程_esplise stm32
3. 将固件库中的STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template目录下的以下4个选中的文件 main.c, stm32f10x_conf.h, stm32f10x_it.c, stm32f10x_it.h放在user文件夹下:
4. 将固件库目录F:\stm32f103官方固件库 STM32中文编程参考手册\stm32f103官方固件库+STM32中文参考手册+\STM32F10x_StdPeriph_Lib_V3.5.0*STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\gcc_ride7*
下的startup_stm32f10x_md.s放在工程目录下的startup文件夹下,并将后缀改成大写.S。这个文件的选择要根据自己选用的单片机型号的大、中、小容量进行选择,我用的是STM32F103C8T6,属于中容量,所以选择startup_stm32f10x_md.s
这里要注意:因为我的eclipse用的是GCC编译,所以要从gcc_ride7下面拷贝.s文件,有的参考链接里说的是从arm\目录下拷贝,这个要根据编译器的不同要进行选择。
根据里面是
5. 将F:\stm32f103官方固件库 STM32中文编程参考手册\stm32f103官方固件库+STM32中文参考手册+\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\TrueSTUDIO\STM3210B-EVAL目录下的stm32_flash.ld文件拷贝到工程目录下,这个是用来链接的文件。
注意:这个文件的选择要根据单片机的型号,B-EVAL,C-EVAL,Z-EVAL对应不同的单片机,我的单片机是STM32F103C8T6,所以选择STM3210B-EVAL,具体的可以打开这个ld文件看一下里面的flash大小和ram大小是否和你的单片机datasheet上写的对应。
datasheet上的大小说明:
至此,所用到的库和链接文件以及.s文件拷贝完。
最后,删除工程录下固件库目录下的Projects 和 Utilities 两个文件夹。按F5或右击工程点击Refresh刷新工程。
至此,工程创建完成。
二、 接下来是工程的配置:
在工程上右击–》properties, 接下来按照图中进行以下操作。
1. 设置cortex家族
2. 表示使用中型的MCU和外围固件
3. 加入头文件的路径
4. 设置链接文件
5. 设置Toolchains:
点解确定,至此编译环境配置完成。
三,对main.c文件进行修改,删除里面没有用的东西,只留下main()函数以及里面的while(1), 然后进行编译,
这时会出现以下编译错误:
ERROR:register may not be the same – strexb r3,r2,[r3]等错误的
解决方法如下:
打开工程文件\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport下的core_cm3.c,找到
__ASM volatile (“strexb %0, %2, [%1]” : “=r” (result) : “r” (addr), “r” (value) );
__ASM volatile (“strexh %0, %2, [%1]” : “=r” (result) : “r” (addr), “r” (value) ); 两行,更改如下
__ASM volatile (“strexb %0, %2, [%1]” : “=&r” (result) : “r” (addr), “r” (value) );
__ASM volatile (“strexh %0, %2, [%1]” : “=&r” (result) : “r” (addr), “r” (value) );
修改完成后,保存!注意,请再选中工程项目,刷新F5,再一次编译。刷新是很重要的。
另外,有可能还会出现下面的make错误,
解决方法:如下图,将Current builder改成 CDT Internal Builder,点击OK。进行编译,就没有问题了。
至此,整个创建和编译配置的完成。
作者:普通网友