Ubuntu下安装Stm32的Eclipse的开发环境(1)

发布者:灵感狂舞最新更新时间:2020-06-07 来源: eefocus关键字:Ubuntu  Stm32  Eclipse  开发环境 手机看文章 扫描二维码
随时随地手机看文章

在最起初的时候,我刚刚接触linux上单片机的开发,最喜欢的就是 eclipse + arm-plug-in + arm-none-eabi 的开发环境,因为这是在Linux上最接近于windows下keil、IAR等IDE的开发方式,然而那是由于对eclipse亦或是makefile等编译过程中的工具的不甚了解,很多时候会遇到一些莫名的错误,也导致了那是觉得这样的环境很鬼畜,现在看来多是一些很浅显的问题,直到最近我再一次的尝试了eclipse开发环境的搭建和使用,我才很顺利的完成了程序的配置。现在也把这个方法推荐给大家,不过在使用这个方式前,还是建议大家先把之前的文章内容看懂了,否则很多时候遇到问题都会不知道怎么解决。


安装java
与CubeMX一样,eclipse也是运行在java环境下的,所以我们首先要在环境下安装Java库。方式在上一篇中已经介绍过了,这里就不再做更多阐述了。


还有就是eclipse在显示readme时会自动的加载markdown格式的预览,需要系统安装libwebkitgtk-1.0-0才能使用。

$ sudo apt-get install libwebkitgtk-1.0-0

安装eclipse
在eclipse的官网上下载系统eclipse安装包。注意一定下载CDT 版本的就是 Eclipse IDE for C/C++ Developers 版本,这个才是给C/C++语言开发用的版本,里面已经预装好了CDT的插件。

https://www.eclipse.org/downloads/eclipse-packages/

解压后放到自己喜欢的位置就可,我一般会把外部的程序放在用户路径下application的文件夹中。而后实际上我们这时候只要点击解压后文件夹内的eclipse运行程序就能打开了。但是为了在系统菜单中添加一个快捷方式,我们同样的像上一篇中,在 /usr/share/applications/ 的路径下添加一个desktop的文件。

$ sudo gedit /usr/share/applications/eclipse

写入内容,注意执行文件路径和图标路径根据自己的位置修改。

[Desktop Entry]
Encoding=UTF-8
Name=Eclipse Platfrom
Comment=Eclipse IDE
Exec=/home/yangliu/Application/eclipse/eclipse
Icon=/home/yangliu/Application/eclipse/icon.xpm
Terminal=false
StartupNotify=true
Type=Application
Categories=Development

然后我们就能在开始菜单中找到eclipse的快捷方式了把它拖到我们左侧的快捷启动栏然后开启吧~。在第一次打开软件后eclipse会要求设置一个工作目录也就是日后我们默认的创建工程的目录,我一般会选择默认的在用户路径下的workspace目录,点击use as default 就会默认了,之后我们再启动就不会需要再点击确定了。


偶尔会我们遇到eclipse卡顿,对操作反应很慢的情况,大家如果碰到了可以参照这位大大的文章修复。 
http://blog.csdn.net/u010652906/article/details/51626257

安装GNU ARM Eclipse plug-ins
其实按照eclipse的特性来说,我们单纯的使用CDT eclipse + 工具链就可以完成整个工程的编译,但是在那种情况下要设置很多的参数,十分的麻烦。所以在这里我们选择安装一个国外大神制作的arm 开发插件,用插件来配置我们的工程会极大的加快我们初始的工作。


这个插件的项目主页在这里,里面有安装插件的详细介绍,不过我们下下面也会讲到。

http://gnuarmeclipse.github.io/

在下面这个网站中下载插件的zip压缩包,不用解压。

https://github.com/gnuarmeclipse/plug-ins/releases

打开eclipse,点击菜单栏上的help-> Install New Software

点击 add -> archive 选择我们刚刚下载好的插件压缩包,eclipse就会自动读取里面的内容了,在选择框内全选插件的所有内容,然后开始安装。之后就是一些安装过程中的协议确认什么的常见过程没什么好介绍的,等安装完毕后,eclipse会提示重启软件,我们点重启就行。


配置eclipse开发环境
在我们安装插件完毕后,还需要进行一些设置,来优化我们的eclipse显示和操作,用以适应嵌入式开发,点击 windows -> preference 打开全局设置。然后根据一下官网的说明完成即可。除此之外我默认大家的Ubuntu中已经安装好了arm-none-eabi 的工具链且配置到了系统PATH中,如果没有请参照本系列之前的文章安装。

http://gnuarmeclipse.github.io/eclipse/workspace/preferences/

导入CubeMX工程
再配置好我们的eclipse后,我们就要开始正式的开发过程了,这里我推荐大家使用CubeMX来生成工程模板。我们在上一章中已经教大家生成了GNU下使用的stm32工程,也尝试使用了makefile去编译运行它吗,那么我们现在来看看eclipse下怎么编译它吧。


点击新建工程 C project 或 C++ project ,选择一个空工程,toolchain设置为 cross arm gcc。并在project name 的地方给工程起个名字。


之后选择工具链设置其位置,并选择编译配置模板。最后点击finish完成。

在完成设置后,我们会在工作区看到一个空的工程。这是我们在工程上点击右键选择 import ,选择导入文件结构。并在选择中工程文件夹勾选它后点击finish 进行导入操作。


设置编译参数
在我们导入后可能会看到很多的报错和警告,我们先不要理会他们,首先我们要做的是把 startup下的 .s 汇编写成的启动文件的改为 .S 因为eclipse默认是识别大写S 为汇编文档的。我们在资源管理器中右键,启动文件 rename 修改即可。


而后我们需要右键资源栏中的工程设置工程参数。

在下面的界面中设置编译参数,然后保存我们就可以编译了,这些参数的设定就相当于我们把makefile 变成了一个图形化的配置界面放了过了,最后eclipse会在工程下创建一个debug目录,并在里面存放自动生成的makefile和编译的中间结果及最终对象。它的实际make目录就是在debug 下进行的。如果编译报错了,大家可以根据这些去看看自己是不是有些参数或路径有问题。只要看看编译过程中的指令输入和后面的参数,再对应设置菜单,我想大家只要看过之前的篇目就会很快理解这些小问题了。


至于一开始的报错,我们在完成设置后,右键工程,选择index -> fresh all files 来让eclipse重建索引目录就可以完成了。


eclipse下的特性
在eclipse下,我可以享受很多keil IAR下没有的开发功能,比如 格式化代码 ,灰色显示未启用的 宏定义区块,快速查找 函数位置等等一系列的方便功能,在windows下也就只有由 eclipse 再开发的 Truestdio 能够与之相比。


其次eclipse也是支持运行用户自己的makefile的,只有在make窗口中新建指令就可以实现。双击即可执行。


使用eclipse调试工程
在eclipse下开发与我们之前的裸开发方式最大的不同我想也就是在调试过程中了,我们接下来就来为大家介绍eclipse下使用 OpenOCD的调试方式。这里我们同样默认我们已经安装了OpenOCD了。


选择debugconfig 然后在GDB OpenOCD上双击建立一个调试配置。 


如下根据自己的板卡设置好参数。

配置好后我们点击debug就可以愉快的开始调试啦~。有图形界面的调试是不是还是挺爽的?哈~。同样的如果这里产生报错我们只要查看一下报错指令很快就能修复。只要我们能够理解eclipse上所有的操作只相当于帮助用户在终端输了一大串的指令,当我们点下一个按钮的时候背后都是一条或多条终端指令的执行。我想对于大家这么久以来跟着我一步一步从命令行开发走过的小伙伴,只要明白这一点,看着eclipse console下的信息解决一些报错和问题想来绝不是难事了。


最后几句
最近有些忙,近期的几篇文章可能写的有些赶了,讲的不是很详细,如果大家遇到一些问题可以在下面留言,我会尽可能的解答的。同时在最后我也附上个参考的网址,大家可以自己去看看,里面有很多很有一些的东西哦~。比如自动读取RTOS任务序列啦之类的很炫酷又实用的东西,很多我都没有自己去尝试过,也希望大家在试验成功后能够写一篇博客,在评论区告诉我,大家多交流喽~

在eclipse上开发arm :

https://mcuoneclipse.com/

DIY Free Toolchain for Kinetis :

https://mcuoneclipse.com/2013/08/04/diy-free-toolchain-for-kinetis-part-5-freertos-eclipse-kernel-awareness-with-gdb/

openocd 怎样能支持FreeRTOS 8.1.2

http://blog.csdn.net/rickleaf/article/details/41006699

样板工程
哦对了差点忘了,放上我们配置好的样例工程的链接,大家自己下载下去参考参考吧~。下载后记得要用导入功能加入eclipse哦,否则会遇到一些工程路径设置什么的问题,需要手动修改才能正常编译。


标准的eclipse工程配置:https://github.com/zhengyangliu/Stander_Cross_GCC_STM32F429iDISCO

带有arm插件的工程配置:https://github.com/zhengyangliu/Stander_Cross_ARM_GCC_STM32F429iDISCO

关键字:Ubuntu  Stm32  Eclipse  开发环境 引用地址:Ubuntu下安装Stm32的Eclipse的开发环境(1)

上一篇:关于STM32CubeMx printf重定向,及报错。"FILE" is undefined
下一篇:Ubuntu下安装Stm32的Eclipse的开发环境(2)

推荐阅读最新更新时间:2024-11-05 20:23

STM32之GPIO及第一个STM32程序(跑马灯)
今天来说一说,GPIO,对于我这个新手来说,GPIO就好比我在学习开车之前得学会如何开门一样,由此可以看出这对于我学习STM32 的重要性,好废话不多说,先总结一下STM32F103ZE的开发板里总共有7组IO口,每组IO口有16个IO,即这块板子总共有112个IO口分别是GPIOA~GPIOG。 GPIO的工作模式主要有八种:4种输入方式,4种输出方式,分别为输入浮空,输入上拉,输入下拉,模拟输入;输出方式为开漏输出,开漏复用输出,推挽输出,推挽复用输出。对应的为: (1)GPIO_Mode_AIN 模拟输入 (2)GPIO_Mode_IN_FLOATING 浮空输入 (3)GPIO_Mode_IPD 下拉输入 (
[单片机]
STM32串口+DMA的使用2
uint8_t UART4_Rx_buffer ,UART4_Rx_num; void UART4_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; DMA_InitTypeDef DMA_InitStructure; // NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); //选择NVIC优先级分组0 R
[单片机]
STM32中断,看着一篇就够了
1,环境搭建: 硬件平台:STM32H750XBH6开发环境:STM32CubeMX V6.8.1+KEIL V5.28.0.0STM32H750固件版本:package V1.11.0仿真下载驱动:ST-Link 2,中断的定义 中断(Interrupt)微控制器中的一种机制,允许在正常程序执行期间暂停当前正在执行的任务,以处理特定事件或条件。这些事件或条件可以是来自外部的信号、设备状态的改变、定时器触发、错误条件等。中断使系统能够及时响应重要事件,而无需不断轮询或等待事件的发生。 3,中断的分类 中断可以根据多个因素进行分类,主要根据其来源、优先级、触发方式和处理方式。以下是一些常见的中断分类: 根据来源分类:A.外部中断
[单片机]
<font color='red'>STM32</font>中断,看着一篇就够了
STM32学习——MPU6050姿态传感器
STM32移植(抄)起来特别爽。。。 MPU6050简介 1.MPU6050是一款六轴(三轴加速度+三轴角速度(陀螺仪))传感器 2.MPU6050含有一个第二IIC接口,可用于连接外部磁力传感器 3.MPU6050自带数字运动处理器(DMP)通过主IIC接口,可以向CPU提供四元数,CPU可利用四元数得到欧拉角,避免了CPU通过原始数据进行姿态计算(DMP驱动库由官方提供,使用时需要改动) 4.据说stm32的硬件IIC接口存在bug,需要用软件模拟IIC时序 MPU6050初始化步骤 (1)初始化IIC接口 即SDA和SCL对应的GPIO (2)复位MPU6050 使MPU6050内部所有的寄存器恢复默认值,通过对电
[单片机]
<font color='red'>STM32</font>学习——MPU6050姿态传感器
基于STM32开发板的UART收发空闲中断设计
有人在使用STM32的UART收发并开启空闲中断时,有时会发现空闲中断相比预期多进一次的情况。比方,本来以为只会进3次空闲中断的结果进了4次;或者说根本没开启接收,一使能空闲中断就立即进一次中断服务程序;有时即使在使能空闲中断之前还特意做了空闲事件标志的清零也会发生类似情况。 下面我找了块STM32开发板,选择USART1做自发自收的测试。也的确可以重现问题。 下面是我的测试代码的main程序: #define Length (25) uint8_t Data_RX ={0}; uint32_t UART_Rx_Len; //the Number of received data by DMA uint32_t UART_
[单片机]
基于<font color='red'>STM32</font>开发板的UART收发空闲中断设计
STM32笔记】RCC配置函数
void RCC_Configuration(void) { ErrorStatus HSEStartUpStatus; //使能外部晶振 RCC_HSEConfig(RCC_HSE_ON); //等待外部晶振稳定 HSEStartUpStatus = RCC_WaitForHSEStartUp(); //如果外部晶振启动成功,则进行下一步操作 if(HSEStartUpStatus==SUCCESS) { //设置HCLK(AHB时钟)=SYSCLK RCC_HCLKConfig(RCC_SYSCLK_Div1);
[单片机]
STM32系列第22篇--I2C
简介: I2C(IIC,Inter-Integrated Circuit),两线式串行总线,由PHILIPS公司开发用于连接微控制器及其外围设备。 它是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送,高速IIC总线一般可达400kbps以上,IIC是半双工通信方式。多主机I2C总线系统结构 需要将SDA和SCL两根线接上拉电阻拉高。 I2C协议: 空闲状态+开始信号+停止信号+应答信号+数据的有效性+数据传输 (1)空闲状态 I2C总线总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。 (2)起始信号与停止信号 起始信号:当SCL为高期间,SDA
[单片机]
<font color='red'>STM32</font>系列第22篇--I2C
stm32+uln2003驱动步进电机程序(28BYJ-48)
今天,接到一个任务,采用stm32驱动步进电机,已经有了驱动模块了。所以不再采用PWM方式,直接用软件编写。 我也是初学,仅供参考。 1、管脚接线 // IN4: PC9 d // IN3: PC8 c // IN2: PC7 b // IN1: PC6 a 电源接开发板电源。地接地(简直是废话)。 2、定义正转反转数组 uint16_t phasecw ={0x0200,0x0100,0x0080,0x0040};// D-C-B-A uint16_t phaseccw ={0x0040,0x0080,0x0100,0x0200};// A-B-C-D 说明一下,数组里面的值,就是对应的GPIO口的地址。根据自己
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved