IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> CubeMX+Eclipse+Jlink STM32开发环境搭建 -> 正文阅读

[嵌入式]CubeMX+Eclipse+Jlink STM32开发环境搭建

??Eclipse还是我用得最多的IDE,不管是CCS还是Xilinx的SDK,都是Eclipse的开发环境。所以最近准备做STM32相关的开发时,也准备用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。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-04-28 12:02:29  更:2022-04-28 12:03:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 3:43:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码