Eclipse还是我用得最多的IDE,不管是CCS还是Xilinx的SDK,都是Eclipse的开发环境。所以最近准备做STM32相关的开发时,也准备用Eclipse。

软件下载与安装

  • STM32CubeMX
  • Eclipse

  CubeMX是ST的用于生成初始化代码的工具,能大大提升开发的效率。Eclipse是一个开源的IDE,从官网可以下载到这个eclipse installer,然后选择Eclipse IDE for Embedded C/C++ Developers。目前官网的Eclipse版本是2022-03,这也是我目前用的版本。

  Eclipse Embedded CDT,Eclipse的C/C++嵌入式开发工具是一个非常大的开源项目。

  从项目的官网中可以看到,它还提供了一些额外的工具链接,包括build tools和gcc工具链。build tools用来生成Makefile,gcc工具链负责真正的编译和链接。这些工具包都是通过xPack管理的。
  要说xPack得从JavaScript说起,有一个包管理工具叫做npm(Node Package Manager),这里的包都是用JavaScript写的。xpm(xPack Project Manager)是npm管理的一个Module,关于xPack的介绍可以在这里找到更多详细的解释。大概就是说xpm管理的包的格式和npm几乎是一样的,“xPack”中的“x”取自“eXtended”,它管理的包是通用的包,并不局限于JavaScript。
  用xpm安装build tools和工具链都非常简单,安装完成后,在Eclipse的“Windows->Preferences”里面可以对build tools和工具链进行设置,只需要点右边的xPack就可以自动地关联上刚刚安装的工具。

CubeMX生成初始化代码

  用Eclipse生成初始化代码真的非常方便!选择你所用的处理器型号创建工程后,可以在Help菜单栏中找到帮助文档。主要一个就是关于CubeMX的使用,另一个就是处理器相关的文档,还有各种应用笔记,资料非常丰富。

  外设的配置就不详细介绍了,一开始让我比较震惊的是它对FreeRTOS也有很好的支持。

  不光是FreeRTOS的一些configuration,heap管理,task、Timer、Semaphore、Queue的初始化都非常方便。
  CMSIS(Common Microcontroller Software Interface Standard)是Arm提供的一种标准接口。这里FreeRTOS的接口可以选择CMSIS_V2,对于CortexM4来说,选CMSIS_V1或者CMSIS_V2都行,后者是前者基础上的扩展。这部分介绍可以在CMSIS文档中找到介绍。

  基于CMSIS-RTOS接口的开发,用户就不会直接调用FreeRTOS的API,而是Arm提供的RTOS的API,应该是便于在不同的RTOS之间迁移。

  因为我们是采用Eclipse开发,所以在输出的形式上选Makefile应该是最合适的。

CMSIS Package下载

  其实如果我们已经用CubeMX生成了Makefile文件,这里的CMSIS Package我们基本已经用不上了。因为所有源文件和编译的流程都已经由Makefile管理了。但是这里还是需要下载你所用到的处理器的Package,原因后面再介绍。

  第一次打开CMSIS Package的管理界面应该是空的,需要点右上角的刷新才能看到可以下载的Package。

Eclipse建立工程

  新建工程的时候选择“Makefile Project with Existing Code”。

  选择MakeFile所在的路径,工具链选择Arm Cross GCC。

  然后打开某一个源文件,会发现有很多红色的波浪线,这是因为当前的工程并不知道include的路径和一些symbol的定义。

  打开Makefile可以看到里面的-D参数和-I参数。去掉“-D”和“-I”才是具体的Define和Include,Makefile中这么些是方便把这些设置直接作为gcc编译的选项。比如“-DSTM32F407xx”实际上是需要定义“STM32F407xx”这个Symbol。

  在工程的Properties中添加这些include和symbol就不会有那些红色的波浪线了。


  要通过编译还有非常重要的一步,就是选择Device。
  因为Makefile是我们自己生成的,所以前面即使不往工程里添加的include和symbol,我们根据这个Makefile进行make,一样能够完成编译。当工程目录下没有Makefile时,Eclipse CDT会帮我们生成一个Makefile,那时候才会用到我们在上面设置的东西。
  我发现如果不选择Device,就无法编译,问题好像是找不到make。但只要选了相应的Device就可以正常编译啦。

  如果你在上面找不到你的Device,就需要通过CMSIS的Package管理页面下载所需的Package。在这里选择了Device之后,就可以在Documents的页面里看到相关的文档。其中比较常用的应该就是“STM32F4xx HAL Drivers”这个文档,基本就靠查这个写代码了。

  如果要增加新的源文件或者增加新的include目录就需要自己手动改Makefile。

LED Blink

  我做的第一个demo工程是一个LED Blink的功能。在CubeMX中配置一个task,这个task的函数可以像下面这样写。自己只需要加一行代码“HAL_GPIO_TogglePin”,然后改一下delay的时间即可,这里的500指的是500ms,FreeRTOS的tick默认是1ms。

/* USER CODE END Header_BlinkTskFxn */
__weak void BlinkTskFxn(void *argument)
{/* USER CODE BEGIN BlinkTskFxn *//* Infinite loop */for(;;){HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_9);osDelay(500);}/* USER CODE END BlinkTskFxn */
}

Jlink

  jlink驱动可以直接在官网下载。

  正版的jlink特别贵,最新的jlink驱动可以检测出你用的jlink是不是盗版的。但我觉得大部分人应该都是在某宝上买的盗版的jlik,这样在每次连jlink的时候就会有类似上面这样的提示。网上也有各路大神给出解决方案,但我为了省事就直接装了最低版本的jlink驱动V5.00,也能用。

Jlink调试

  在前面配置Eclipse的工具链的界面,还有下面这个设置Jlink路径的地方。需要设置成jlink的安装目录。

  点绿色的小虫子旁边的下拉按键,选择“Debug Configuration”,

  新建一个J-Link Debug的配置。只需要做一些必要的配置就行,比如elf文件和处理器型号,其余大部分都可以保持默认。然后基本上就可以调试了。

Jlink下载并运行

  用过MDK的都知道,除了jlink调试,MDK也可以直接往flash里烧写。
  Eclipse也能做到这一点。通过下面的方式添加一个External Tool。

  在进行配置之前,有必要先了解一下Jlink的使用。Jlink也是一个终端,在Jlink的终端里输入command来实现连接设备、调试、flash烧写等功能。Jlink本身是一个exe可执行文件,它也可以通过windows的终端来运行,通过命令行运行Jlink有一些command line option
  上面提到的command可以写到一个CommandFile里,然后作为command line option中的一个选项,实现jlink的批处理运行。详细的信息可以查看官网的文档:Jlink命令(PS:官网给出的命令是针对最新的Jlink驱动的,所以如果用比较老的驱动可能会遇到某些命令不支持的情况)

  经过我的一些尝试后,我确认下面这样的参数配置是完全可行的。另外需要在工程目录下新建一个“JlinkCommandFile.jlink”,用来写Jlink的command。

-device STM32F407VE -if SWD -speed 4000 -CommanderScript ${project_loc}\JlinkCommandFile.jlink

  JlinkCommandFile.jlink:

r
h
loadfile D:\PrjStm32\NUEDC2021H\build\NUEDC2021H.bin
r
Exit

  JlinkCommandFile.jlink中每一行就是一个command。r表示复位;h表示停止(这里有没有好像都可以);loadfile后面跟一个要烧写进flash 的文件。烧写完成之后再用“r”复位,可以让程序马上开始执行,而不需要让板子重新上电。最后Exit Jlink。

CubeMX+Eclipse+Jlink STM32开发环境搭建相关推荐

  1. eclipse+gcc STM32开发环境搭建及调试

    记录一下本人进行eclipse+gcc stm32开发环境的搭建过程,以便后续学习使用 参考资料如下: CubeMX+Eclipse+Jlink STM32开发环境搭建_小裘HUST的博客-CSDN博 ...

  2. 1、STM32开发-环境搭建-Keil5安装

    MDK Keil STM32开发环境搭建 一.准备 1.MDK 安装包获取 ​MDK安装官网下载,在官网选择MDK-Arm选项 ​ 在表单中填写个人信息,最后点击Submit提交,便自动进入软件下载界 ...

  3. Linux 下 STM32 开发环境搭建

    安装编译器 如果还没安装编译器的,先安装: sudo apt install gcc-arm-none-eabi sudo apt install gdb-arm-none-eabi sudo apt ...

  4. java中的adt安装配置,Android SDK 2.3与Eclipse最新版开发环境搭建

    一.背景和准备 1.Android 简介 Android是谷歌于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统.中间件.用户界面和应用软件组成,号称是首个为移动 ...

  5. Android SDK 2.3与Eclipse最新版开发环境搭建(一)

    一. 背景和准备 1. Android简介 Android是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统.中间件.用户界面和应用软件组成,号称是 ...

  6. linux eclipse下qt开发环境搭建,Qt Eclipse开发环境的部署 上篇

    关于Qt  Eclipse的开F发,将会从不同的环境中区安装部署,分为上.中.篇,三篇文章来讲.Windows,Linux平台下安装使用eclipse + QT4.4.3开发环境,Windows,Li ...

  7. Eclipse C/C++开发环境搭建

    1 Eclipse的安装 到http://java.sun.com/j2se/1.5.0/download.jsp 下载JRE安装: 到http://eclipse.org下载Eclipse安装.(这 ...

  8. eclipse android sdk开发环境搭建,Android SDK 2.3与Eclipse最新版开发环境搭建(四)

    五. Eclipse ADT 配置 ADT 的Eclipse Plugin 安装成功之后,开始ADT 的配置,具体如下: 1. Eclipse重启后,选择Window > Preferences ...

  9. eclipse hana xs 开发环境搭建

    不使用HANA STUDIO,使用eclipse安装插件的方式,搭建环境.其实studio也是eclipse基础上来的. 下载eclipse,注意不要下载neon版本的,现在(20160527)han ...

最新文章

  1. 聊聊flink的HistoryServer
  2. 12Boostrap响应式布局
  3. 行业观察丨激荡二十年——货代软件1999—2019
  4. 单片机小白学步系列(十三) 点亮第一个LED——好的開始,成功的一半
  5. 中文编程语言_文言文编程语言,让你明白什么叫“中文比英语还难”。
  6. mysql-修改密码(error-1290 (HY000): The MySQL server is running with the --skip-grant-tables option so)
  7. 开源在线文档编辑工具_开源暑期实习,在线教育新工具等
  8. 6.5. Properties
  9. Atitit timer tech定时器技术总结目录1.1. 程序语言timer dbtimer ,os tiemr 11.2. Atitit timer定时框架api 11.3. 相关技术
  10. talib如何安装方法
  11. ITIL4考试练习题
  12. idea创建yml配置文件不是绿色
  13. JDK8下载安装与Win10下Java环境变量配置
  14. Markdown常用字体 大小 颜色和背景设置
  15. 编程:Python实现图片识别
  16. 巨详细,大电流线性电源(LDO)原理,看完你就明白了
  17. 两个进程共享内存,一个写,一个读
  18. 内网网站发布到外网-五种方法
  19. 计算机网络安全职业资格证书,计算机网络管理员职业资格证书
  20. vue根据不同权限显示图片_vuex根据不同的用户权限展示不同的路由列表

热门文章

  1. python之转义字符
  2. 大数据建模 需要了解的八大定律
  3. 吐血整理50个吊炸天的超实用网站
  4. 全站替换https攻略
  5. 历经四个月,谷歌联盟的PIN码问题终于解决了
  6. RFC8314文档中对465端口和587端口的阐述
  7. 计算机基础知识试题答案6,计算机基础知识试题及答案
  8. 二代测序原理及其流程
  9. 【Web技术】1431- 总结前端主题切换的思考和现代前端样式的解决方案落地
  10. 二层板的射频RF信号如何控阻抗 四层板的射频RF信号如何控阻抗  射频信号是否可以不控阻抗,射频差分需要控阻抗吗?为什么射频信号需要挖空隔层参考?射频信号为什么要加粗?