STM32开源开发环境的搭建

发布者:快乐的成长最新更新时间:2021-12-02 来源: eefocus关键字:STM32  开源  开发环境  搭建 手机看文章 扫描二维码
随时随地手机看文章

STM32开源开发环境的搭建

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


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


1.环境搭建

1.1 Eclipse的下载与安装

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


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

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

下载页面如图1.1所示。

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

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

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

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

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

下载界面如图1.3所示。

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

下载界面如图1.5所示。

clip_image009

图1.5 软件下载界面


通过下载界面可以可以知道Sourcery G++ Lite有4中版本,其中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.0Libraries文件夹拷贝到刚刚建立的工程文件目录下。这是编译时候需要调用的固件库。


2.2链接与启动文件

接下来需要找出Linker所需的ld文件,由于在固件库中ST提供了一些编译器的工程模板,因此可以使用模板中的配置文件。TrueSTUDIO文件夹下存在几个文件夹。TrueSTUDIO是ST官方的编译器,也是GCC的,因此使用它模板中的配置文件。打开STM32F10x_StdPeriph_Lib_V3.4.0ProjectSTM32F10x_StdPeriph_TemplateTrueSTUDIO可以看到在在目录下有几个文件夹,因为我用的是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文件一样,打开目录如下:

workspaceGCCTESTLibrariesCMSISCM3DeviceSupportSTSTM32F10xstartupTrueSTUDIO

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


2.3其他文件

在工程根目录下新建一个User的文件夹,拷贝一个例程到文件中,固件库中给了很多例程,我拷贝STM32F10x_StdPeriph_Lib_V3.4.0ProjectSTM32F10x_StdPeriph_ExamplesGPIOIOToggle这个例程,将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_HD,USE_STDPERIPH_DRIVER。STM32F10X_HD和前面的链接与启动文件对应,表示是大容量期间(我猜测的)。USE_STDPERIPH_DRIVER表示使用固件。

clip_image021

图2.6 添加编译预定义


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

clip_image023

图2.7 添加文件包含路径

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

clip_image025

图2.8 添加链接文件

关键字:STM32  开源  开发环境  搭建 引用地址:STM32开源开发环境的搭建

上一篇:STM32 在16位数据宽度下的地址问题
下一篇:使用Keil MDK运行第一个STM32程序

推荐阅读最新更新时间:2024-11-16 20:00

stm32学习之六
EXTI之按键中断: EXTI中断: 注意: 1、EXTI中断是一种外部中断,需要配置相关的管理中断器件的。 2、如果是事件中断,是不需要配置管理这个寄存器的。 3、着重注意这种关系:EXTI寄存器与NVIC寄存器的关系,就是这个!!! 写出的程序如下: 由于是中断驱动,因此必须配置中断控制器。 首先是: exit.h中断头文件: #ifndef _EXIT_H #define _EXIT_H #include stm32f10x.h void NVIC_Configure(void); void Exit_Configure(void); #endif 然后是: exit.
[单片机]
STM32——MDK4与MDK5中设置系统各部分时钟对比
/******************************************************************************* * 函数名 : RCC_Configuration * 函数描述 : 在MDK4中设置系统各部分时钟 * 输入参数 : 无 * 输出结果 : 无 * 返回值 : 无 *******************************************************************************/ void RCC_Configuration(void) { /* 定义枚举类型变量 HSEStartUpStatus */
[单片机]
STM32 USB 上位机程序实现
libusb 介绍 libusb是开源的C库,使用该库是的用户可以在应用程序中直接访问 USB 设备,无需为 USB 设备编写内核驱动。libusb支持多个平台 (linux, window, ios),所以可以很方便地将应用程序移植到其他平台。 linux libusb 安装 从网上下载libusb的源码,下载地址:http://www.libusb.org/, 下载后编译安装。 # tar jxvf libusb-1.0.20.tar.bz2 # cd libusb-1.0.20 # ./configure # make # sudo make install ubuntu下可以通过以下命令快速安装。
[单片机]
STM32 CAN 波特率的确定
先看两份资料: (1),STM32 得到500Kb/s的波特率 CAN_InitStructure.CAN_SJW=CAN_SJW_1tq; CAN_InitStructure.CAN_BS1=CAN_BS1_8tq; CAN_InitStructure.CAN_BS2=CAN_BS2_7tq; CAN_InitStructure.CAN_Prescaler=1; 每一位的Tq数目 = 1 (固定SYNC_SEG) + 8 (BS1) + 7 (BS2) = 16 如果CAN时钟是 8 MHz : (8M / 1 ) / 16 = 500K 其中: 1 为分频系数 16 为每一位的Tq数目 为了设置为 100K,
[单片机]
STM32直接存储器访问DMA
第一次接触DMA是在学校学习ARM9裸板程序的时候,想起来都时隔快2年了。现在来看看STM32平台的DMA,一样,在标准外设库的支持下,STM32的DMA编程十分简单,但是既是学习,那还是花点时间看看DMA的相关概念及原理的了解下。 1. DMA简介 DMA是Direct Memory Access的简称,是直接存储器访问的意思。DMA是STM32单片机的外设之一,主要功能是用来搬移数据的。通过DMA搬移数据不需要CPU直接参与控制,也不需要中断处理方式那样保留现场和恢复现场。在传输数据的时候,CPU可以干其他事情。 无使用DMA的数据传输: 使用DMA后的数据传输: DMA数据传输支持从外设到存储器、存储器到外设
[单片机]
<font color='red'>STM32</font>直接存储器访问DMA
stm32输入捕获,捕获高电平
输入捕获就是用定时器检测引脚上的电平时间,可以检测高电平时间和低电平时间,然后可以算引脚上信号的频率和占空比。 基本思路就是利用定时器的输入捕获功能。 定时器捕获到高电平或低电平就会进入捕获中断 例如: 我们要捕获高电平时间 0 设置定时器计数频率和装载值,一般设置1MHz,65535 1 设置定时器捕获为高电平捕获 2 进入捕获中断后,获取CNT计数值或CCRx值,定时器捕获到电平后会把CNT的值保存到CCRx。 设置成低电平捕获。 3 再次进入捕获中断,获取CNT计数值-上次的CNT值=总高电平时间。 设置成高电平捕获。 4 重复2-3即可完成下一次捕获。当然还要考虑溢出的情况,
[单片机]
<font color='red'>stm32</font>输入捕获,捕获高电平
stm32之USB应用实例(官方例程资料下载使用)
开发环境:Window 7 开发工具:Keil uVision5 硬件:stc32f103c8t6 stm32系列芯片很多都拥有一个USB2.0全速的通讯接口,下面介绍怎么使用st官方的usb应用例程。 首先从官网下载源码: https://my.st.com/content/my_st_com/en/products/embedded-software/mcu-mpu-embedded-software/stm32-embedded-software/stm32-standard-peripheral-library-expansion/stsw-stm32121.html 需要登录才能下载,如果没有账号,注册一个也很快的。
[单片机]
<font color='red'>stm32</font>之USB应用实例(官方例程资料下载使用)
STM32外部中断学习笔记
中断 分类 STM32的EXTI控制器支持19 个外部中断/ 事件请求。每个中断设有状态位,每个中断/ 事件都有独立的触发和屏蔽设置。 STM32的19个外部中断对应着19路中断线,分别是EXTI_Line0-EXTI_Line18: 线0~15:对应外部 IO口的输入中断。 线16:连接到 PVD 输出。 线17:连接到 RTC 闹钟事件。 线18:连接到 USB 唤醒事件。 触发方式:STM32 的外部中断是通过边沿来触发的,不支持电平触发。 外部中断分组:STM32 的每一个GPIO都能配置成一个外部中断触发源,STM32 通过根据引脚的序号不同将众多中断触发源分成不同的组,比如:PA0,PB0,PC0
[单片机]
<font color='red'>STM32</font>外部中断学习笔记

推荐帖子

频谱分析仪使用常见六大问题解答
逻辑分析仪是利用时钟从测试设备上采集和显示数字信号的仪器,最主要的作用在于时序判定。逻辑分析仪与示波器不同,它不能显示连续的模拟量波形,而只显示高低两种电平状态(逻辑1和0)。在设置了参考电压后,逻辑分析仪将采集到的信号与电压比较器比较,高于参考电压的为逻辑1,低于参考电压的为逻辑0。这样就可以将被测信号以时间顺序显示为连续的高低电平波形,便于使用者进行分析和调试。使用逻辑分析仪,可以方便地设置信号触发条件开始采样,分析多路信号的时序,捕获信号的干扰毛刺,也可以按照规则对电平序列进行解码,完
daoren 测试/测量
一起读《奔跑吧Linux内核(第2版)卷1:基础架构》- 了解kmalloc、vmalloc、malloc
Hello,大家好我是硬核王同学,是一名刚刚工作一年多的Linux工程师,很感谢EEWorld的本次活动,让我有机会参与评测这本和Linux内核相关的的这本书。在计算机编程中,内存分配是程序设计中的关键问题之一,而kmalloc、vmalloc、malloc是常用的内存申请方式。kmalloc和vmalloc主要用于操作系统内核空间中的内存分配,而malloc则主要用于应用程序中的内存分配。本文将一起了解下这几种常用的内存申请方式及其特点。一、kmalloc(1)定义和特点
硬核王同学 嵌入式系统
数字控制移相全桥升压电路的设计
设计一个输入直流12V,输出直流1V至36V可调的电源。使用移相全桥拓扑结构,STM32单片机作为控制芯片,通过片上A/D检测输出的电压和电流,进行数字滤波,实现PID算法参数调整,输出全桥控制信号。有会的吗?原理图不会!数字控制移相全桥升压电路的设计“有会的吗?原理图不会!”根据这一句,可以判断楼主不知道全桥移相是如何工作的。那么可以进一步判断写不出控制程序。此项目是毕业设计?如果是,那么可能太难了。建议先看看UC3895的pdf。你要做全数字的话很有难度。st的stm32F33
wangnan520xiu stm32/stm8
PCB印制电路板设计技术与实践
印制电路板(PCB)设计技术与实践》共分14章,重点介绍了印制电路板(PCB)的焊盘、过孔、叠层、走线、接地、去耦合电路、电源电路、时钟电路、模拟电路、高速数字电路、射频电路的PCB设计的基本知识、设计要求、方法和设计实例,以及PCB的散热设计、PCB的可制造性与可测试性设计,PCB的ESD防护设计。本书内容丰富,叙述详尽清晰,图文并茂,并通过大量的设计实例说明了PCB设计中的一些技巧与方法,以及应该注意的问题,工程性好,实用性强。http://download.eeworld.
arui1999 下载中心专版
为国赛做点什么吧
本帖最后由paulhyde于2014-9-1509:45编辑明年的大学生电子大赛是全国大赛,虽然现在的电子大赛中充斥着一些不好的现象,但是我想还是有很多同学们和我一样,希望能借此机会多学些东西,能靠自己的真正实力来参赛,因此希望大家能为此多提供些帮助,谢谢大家!!为国赛做点什么吧呵呵坛子一定会尽其所能帮助大家的嘿嘿大家有啥需求也可以提出来共同商讨建议回复楼主450678797的帖子本帖最后由paulhyde于2014-9-1509:45编辑
450678797 电子竞赛
电路原理(第二版)
《电路原理(第2版)》分上下册,由汪建,王欢编著,2016年出版。本书在第1版的基础上修订而成,系统地介绍电路的基本原理和基本分析方法。全书分上下两册,共18章。上册内容包括:电路的基本定律和电路元件;电路分析方法等效变换法、电路方程法、运用电路定理法;含运算放大器的电阻电路;动态元件;正弦稳态分析;谐振电路与互感耦合电路。下册内容包括:三相电路;非正弦周期性稳态电路分析;双口网络;暂态分析方法经典分析法、复频域分析法、状态变量分析法;均匀传输线的稳态分析和暂态分析;非线性电路分
arui1999 下载中心专版
小广播
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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