STM32开源开发环境的搭建

简介:

STM32开源开发环境的搭建

Eclipse+ GNU ARM Eclipse Plug-in+Sourcery G++ Lite Edition for ARM+OPENCD+Jlink的开源开发环境。

 

    这个教程是去年刚开始做STM32的时候写的,当时还没开始用STM32,先琢磨了免费的开发环境搭建,因此写的这个教程可能有很多错误,最近在网上看到很多人在论坛里转载了这个教程,由于当初我在ourdev论坛上只是贴出了文字,并上传了一个pdf版本,因此这次在博客里更新一下。帖子中的内容暂时不更新了,后面会重新写一个教程,欢迎大家关注我的博客。

                                                                                                                                                                   --emouse

1.环境搭建

1.1 Eclipse的下载与安装

Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。由于eclipse只是一个IDE,因此需要借助其他插件以及软件来搭建完整的开发环境,也正是因为如此eclipse具有很大的灵活性。

因此首先下载安装eclipse,下载地址:

http://www.eclipse.org/downloads/

下载页面如图1.1所示。

clip_image002

1.1 eclipse下载界面

由于是针对C开发,所以下载Eclipse IDE for C/C++ Developers版本,这个版本已经集成了CDT插件便于C语言的开发。

1.2 JRE的下载与安装

下载的eclipse是一个绿色软件,并不需要安装,双击就可以直接运行,但是由于eclipse是基于java开发,因此系统中必须安装了JDK或者JRE,这里使用JRE,下载地址如下:

http://www.oracle.com/technetwork/java/javase/downloads/index.html

如果觉得官网下载比较麻烦可以到这儿下载:

http://www.skycn.com/soft/27213.html

java的下载界面如图1.2所示。

clip_image004

1.2 java下载界面

JDKJava Development Kit是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境。JREJava Runtime Enviroment是指Java的运行环境,是面向Java程序的使用者,而不是开发者。因此我们只需要安装JRE就可以。由于在运行eclipse的时候必须要在后台运行java虚拟机,因此对内存和CPU占用较大,有时会比较卡。

1.3 GNU ARM Eclipse Plug-in的下载与安装

要搭建针对ARM的开发环境还需要下载针对ARM开发的插件,这样才能够新建针对ARM开发的项目,这里使用GNU ARM Eclipse Plug-in,下载地址如下:

http://sourceforge.net/projects/gnuarmeclipse/

下载界面如图1.3所示。

clip_image006

1.3 GNU ARM Eclipse Plug-in下载界面

安装eclipse的安装方式安装插件之后再新建项目就可以看到ARM的项目了,如图1.4所示。

clip_image008

1.4 安装插件之后的新建工程界面

1.4 Sourcery G++ Lite的下载与安装

前面只是安装了一个工具,要完成ARM的开发还需要安装一个完整的软件开发环境,从GNU ARM Eclipse Plug-in这个插件的支持也可以看到如图4所示,他所支持的有四种WinARMSourcery G++ LiteYagartodevkitPro四种,其中前两种较为有名,WinAVR在之前做AVR等单片机设计的时候已经用的很多,也很方便,但是WINARM之前的很多版本并不支持STM32cortex-M3内核,虽然WinARM_20080331_testing版本支持但是在测试时遇到了麻烦,支持的并不是太好而且已经停止了更新,因此放弃此种方案。Sourcery G++ 是一个基于 GNU 工具链的完整的软件开发环境,目前仍在更新,通过比较选择Sourcery G++作为开发环境,Sourcery G++本身是付费的但是Sourcery G++ Lite版本是免费的,我们采用免费版本。下载地址如下:

http://www.codesourcery.com/sgpp/lite/arm/portal/subscription?@template=lite

下载界面如图1.5所示。

clip_image009

1.5 软件下载界面

通过下载界面可以可以知道Sourcery G++ Lite4中版本,其中EABI是针对底层也就是不包含任何系统的开发的,我们就使用这个版本。Sourcery G++ Lite是采用安装包的方式,相对于以前用的Cygwin等在安装上很方便,只需点击下一步就可以,安装之后Eclipse能够自己找到,无需再手动加入环境变量。

这样一个基本的开发环境便搭建完成,针对STM32我们使用了ST公司的官方固件库,这样可以减少对底层硬件的关心,缩短开发周期,同时有利于程序的稳定性和规范性,因此我们在搭建的开发环境中对固件库进行编译,ST的固件库有很多版本,各版本之间有的差异也比较大,我们采用的是3.1版本,相对比较新,ST公司也不断有新的版本发布,下载地址:

http://www.st.com/stonline/products/support/micro/files

包含了固件库之后的开发界面如图1.6所示。

clip_image011

1.6 完整的开发环境界面

2.工程配置

2.1 新建工程

         使用配置好的开发环境新建一个工程,如图2.1所示。

clip_image013

2.1 新建工程界面

         新建一个工程,点击Finish之后会进入工程界面,如果环境配置正确,工程中会自动包含相关的文件,如图2.2所示。包含的文件应该为Sourcery G++ Lite的安装目录。

clip_image014

2.2 新建工程之后的包含文件

接下来是准备相关的文件,为了更好的进行STM32开发,我使用ST提供的固件库,可以从网上下载,我现在用的是最新版本3.4,其他版本可能类似。

固件库的文件名为STM32F10x_StdPeriph_Lib_V3.4.0,首先把STM32F10x_StdPeriph_Lib_V3.4.0\Libraries文件夹拷贝到刚刚建立的工程文件目录下。这是编译时候需要调用的固件库。

2.2链接与启动文件

接下来需要找出Linker所需的ld文件,由于在固件库中ST提供了一些编译器的工程模板,因此可以使用模板中的配置文件。TrueSTUDIO文件夹下存在几个文件夹。TrueSTUDIOST官方的编译器,也是GCC的,因此使用它模板中的配置文件。打开STM32F10x_StdPeriph_Lib_V3.4.0\Project\STM32F10x_StdPeriph_Template\TrueSTUDIO可以看到在在目录下有几个文件夹,因为我用的是STM32F103ZET6因此我选择STM3210E-EVAL文件下的stm32_flash.ld,通过记事本打开查看,部分内容摘录如下:

**  File        : stm32_flash.ld

**  Abstract    : Linker script for STM32F103ZE Device with

**                512KByte FLASH, 64KByte RAM

**                Set heap size, stack size and stack location according

**                to application requirements.

**                Set memory bank area and size if external memory is used.

猜测应该是我要找的,复制文件到工程根目录下。

接下来要找到工程的启动文件,和linker文件一样,打开目录如下:

workspace\GCCTEST\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\TrueSTUDIO

里面同样有很多文件,因为我用的是STM32F103ZET6所以我选择startup_stm32f10x_hd.S这个文件,猜测对应的就是STM32的大容量,这一点应该是一致的,注意要把扩展名改为大S,拷到startup目录下,把其他多余的都删掉。

2.3其他文件

         在工程根目录下新建一个User的文件夹,拷贝一个例程到文件中,固件库中给了很多例程,我拷贝STM32F10x_StdPeriph_Lib_V3.4.0\Project\STM32F10x_StdPeriph_Examples\GPIO\IOToggle这个例程,将IOToggle下面的所有文件拷贝到User文件夹下。这样所有的文件就准备好了。

2.4 配置工程

         回到eclipse的界面,按F5键,可刷新当前的工作目录,这样刚刚添加的文件就会在项目窗口显示出来,如图2.3所示。

clip_image015

2.3 文件添加完毕之后的项目窗口

         这个时候如果直接去编译肯定出错,因此我们需要对工程进行设置,接下来设置工程,右键点击工程,选择“properties”菜单。点击C/C++ Build-Settings设置界面如图2.4所示

clip_image017

2.4 设置界面

 

 

         点击Target Processor选择All configurations 处理器选择cortex-m3,如图2.5所示。

clip_image019

2.5 处理器选择

         如图2.6所示,添加两条编译预定义STM32F10X_HDUSE_STDPERIPH_DRIVERSTM32F10X_HD和前面的链接与启动文件对应,表示是大容量期间(我猜测的)。USE_STDPERIPH_DRIVER表示使用固件。

clip_image021

2.6 添加编译预定义

         接下来添加文件包含路径,为了防止工程找不到对应的头文件需要把相应的路径添加进去,和上面添加的方法类似,点击添加按钮,在路径上选择workspace,依次将工程目录下有头文件的文件夹都给包含进去。如图2.7所示。

clip_image023

2.7 添加文件包含路径

接下来添加链接文件,如图2.8所示,添加前面准备好的链接文件。

clip_image025

2.8 添加链接文件


本文转自emouse博客园博客,原文链接:http://www.cnblogs.com/emouse/archive/2011/10/10/2206584.html,如需转载请自行联系原作者

相关文章
|
10月前
|
JSON 数据可视化 物联网
基于STM32和FreeRTOS的实时天气系统设计与实现【免费开源】
随着物联网(IoT)技术的发展,实时数据监测系统逐渐成为日常生活和工业环境中不可或缺的组成部分。其中,气象监测系统不仅可以提供温度、湿度、天气状况等信息,还可以通过数据分析为农业、城市管理和个人生活提供智能化建议。本项目以STM32F407为核心控制器,结合FreeRTOS实时操作系统和ESP8266 Wi-Fi模块,实现一套高可靠、实时更新的智能气象监测系统。同时,系统集成了计时功能,通过串口屏将实时数据可视化展示,为用户提供直观的操作体验。
基于STM32和FreeRTOS的实时天气系统设计与实现【免费开源】
|
10月前
|
传感器 数据采集 人工智能
基于STM32单片机的智能晾衣架设计与实现【开源免费】
随着智能家居的发展,传统晾衣架已经难以满足现代家庭对便捷、智能化的需求。基于STM32单片机的智能晾衣架能够实现自动升降、光照检测、风干控制、远程控制等功能,为家庭用户提供更智能、更舒适的晾晒体验。本项目以STM32F103C8T6为核心控制器,通过电机驱动模块、光照传感器、温湿度传感器、蓝牙/Wi-Fi通信模块,实现晾衣架的自动化与远程控制。
基于STM32单片机的智能晾衣架设计与实现【开源免费】
|
10月前
|
存储 编解码 开发者
基于STM32和OLED的小恐龙游戏项目设计与实现【免费开源】
小恐龙游戏最初是作为浏览器离线小游戏而广为人知,其简单的操作与生动的画面使其深受用户喜爱。本项目将经典的小恐龙跳跃游戏移植到嵌入式平台上,使用STM32微控制器作为核心控制器,OLED屏幕进行显示,搭配按键或触摸实现用户交互。通过本项目,既可以体验游戏开发在嵌入式系统上的实现方式,又能掌握STM32 GPIO、定时器、OLED驱动、按键扫描及简单动画实现技术。
基于STM32和OLED的小恐龙游戏项目设计与实现【免费开源】
|
10月前
|
传感器 数据采集 物联网
基于STM32和FreeRTOS的智能手环项目设计与实现【免费开源】
随着可穿戴设备的普及,智能手环逐渐成为健康管理、运动监测和生活便捷的重要工具。本项目旨在设计一款基于STM32微控制器和FreeRTOS实时操作系统的智能手环,具备心率监测、运动计步、睡眠分析以及蓝牙通信功能。通过FreeRTOS实现多任务调度,提高系统响应效率和资源利用率,同时保证低功耗设计,延长手环续航。
基于STM32和FreeRTOS的智能手环项目设计与实现【免费开源】
|
10月前
|
存储 物联网 关系型数据库
基于STM32和ESP8266的智慧考勤系统设计与实现【免费开源】
本文介绍了一个基于 STM32F103ZET6 + ESP8266 Mesh 的智慧考勤系统,涵盖了硬件架构、软件设计、网络组网、服务器端实现与数据导出。该系统不仅实现了考勤自动化,还支持多点分布式部署,具有良好的扩展性与应用价值。
|
10月前
|
传感器 数据采集 安全
基于STM32与ESP8266的智能家居控制系统【免费开源】
通过本项目的开发,不仅加深了对 STM32 外设编程的理解,还掌握了物联网系统的整体设计思路。从传感器数据采集,到通信协议实现,再到云端与APP交互,完整地体验了智能家居系统的开发流程。这为后续更复杂的 IoT 项目打下了坚实基础。
基于STM32与ESP8266的智能家居控制系统【免费开源】
|
10月前
|
传感器 数据采集 安全
STM32与传感器技术结合打造智能行李箱 | 自动跟随与报警系统【免费开源】
本项目成功实现了基于STM32的智慧行李箱设计,采用了超声波测距、重力传感器和报警系统等技术,打造了一款智能且安全的行李箱。通过超声波测距模块,行李箱能够实时跟随主人并根据距离变化调整电机的速度与方向,确保小车始终保持与主人的相对位置。此外,重力测量模块能够检测行李箱内物品的重量,若超重则及时通过LED和蜂鸣器提醒主人,避免物品过重对行李箱造成损害或不便。
STM32与传感器技术结合打造智能行李箱 | 自动跟随与报警系统【免费开源】
|
Android开发 C语言 芯片
Eclipse下STM32开发环境之安装配置(二)
Eclipse下STM32开发环境之安装配置(二)
1277 1
Eclipse下STM32开发环境之安装配置(二)
|
IDE Java 编译器
Eclipse下STM32开发环境之安装配置(一)
Eclipse下STM32开发环境之安装配置(一)
837 1
Eclipse下STM32开发环境之安装配置(一)
|
存储 编解码 算法
基于STM32的开源简易示波器项目
基于STM32的开源简易示波器项目
546 0