STM32CUBEMX+Eclipse构建项目过程
STM32CUBEMX+Eclipse构建项目过程
前言
相信很多使用过STM32的开发者都对KEIL和 IAR非常熟悉了,网上也很容易找到他们的破解版,为什么我不想用?就是因为Eclipse可扩展性强,跨平台,功能丰富,使用灵活,Eclipse是免费开源软件,而KEIL和 IAR都是收费软件,且都是国外公司开发的,在这一领域中国一直是弱势,随着中国加入RCEP,版权意识必然会越来越引起重视(律师函警告)。
其实ST官方也提供了免费的IDE: TrueStudio,它是基于Eclipse内核开发的,集成度高,更易于上手,TrueStudio具有完整的嵌入式软件开发功能,且是针对STM32定制的,如果你觉得自己配置Eclipse环境比较麻烦,TrueStudio确实是不错的选择,所以这篇文章只面向那些有一定开发经验并且喜欢折腾的玩家,没有困难,创造困难也要上!
准备
硬件:STM32F103开发板,Jlink
软件:Jlink 版本6.0,stm32cubemx版本6.0, eclipse版本2020q3
0.jre或者jdk
1.STM32CubeMX安装
STM32Cube initialization code generator
2.eclipse安装
eclipse-inst-jre-win64.exe
首先下载安装器–>打开–>选择eclipse IDE for c/c++ developers
3.CDT
打开eclipse–>帮助–>安装新软件–>添加路径:https://download.eclipse.org/tools/cdt/releases/10.0
4.Eclipse Embedded插件
帮助–>eclipse–>marketplace, 输入gnu arm或Eclipse Embedded 搜索,第一个安装
5.GNU ARM交叉编译器
gcc-arm-none-eabi-9-2020-q2-update-win32.zip
下载,解压到任意目录,我的是D:\eclipse\gcc-arm-none-eabi-9-2020-q2-update-win32,记住这个位置
6.Jlink驱动
略
创建工程
1.创建STM32CUBEMX工程
关于如何使用STM32CUBEMX配置时钟与引脚,这里不做赘述,初学者可以移步ST官网或论坛查找相关资料。需注意工程输出的IDE/toolchain选择Makefile
保存,GENERATE CODE生成代码,记住生成的目录,关闭cube。
2.导入Eclipse工程
首先添加交叉编译器到eclipse:窗口–>首选项–>MCU–>所有编译器路径改为gcc-arm-none-eabi交叉编译器所在的路径,我的是D:\eclipse\gcc-arm-none-eabi-9-2020-q2-update-win32\bin,视具体情况而定
文件–>新建项目–>Makefile project with existing code;
Existing code location选择上一步生成 代码的目录;
右键项目属性–>工具链编辑器
项目–>全部构建进行编译,正常情况下编译成功是0错误,0警告。
3.下载程序
编译完成后/build文件夹下面会自动生成*.bin, *.hex文件,将其下载到MCU上(具体方法有很多,我这里用的是jflash,因为在eclipse没有找到可以下载hex/bin的地方o(╯□╰)o,有高手找到的话麻烦指教一下,感谢)
4.仿真调试
需要创建一个 J-Link Debug Configuration
打开 Run -> Debug Configurations…
双击 GDB SEGGER J-Link Debugging
切换debugger选项,设置jlink路径
下滑,设置GDB路径
其他选项使用默认设置。设置完成后就可以对MCU进行单步调试了
5.添加源文件
用这种方式建立的工程,不能像KEIL一样通过组织文件管理添加源文件,而是在Makefile里面声明,如在C_SOURCES后面添加源文件名,在C_INCLUDES后面添加头文件路径
6.修改RAM/ROM偏移
对于需要IAP功能并且自己写BootLoader的玩家, 可以通过修改工程目录下的***FLASH.ld文件重新定义RAM和ROM的起始地址,比如我使用的是STM32F103RCTx芯片,48K RAM, 256K ROM。
BootLoader地址:0x8000000
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 4K
FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 16K
应用程序地址:0x8004000
RAM (xrw) : ORIGIN = 0x20001000, LENGTH = 44K
FLASH (rx) : ORIGIN = 0x8004000, LENGTH = 100K
本文地址:https://blog.csdn.net/Acquila/article/details/110085083