江南体育STM32高级开发(5)-gcc-arm-none-eabi
发布时间:2023-04-29 00:34:22

  在完成对ubuntu的基本操作和指令的学习后,我们下面正式的进入有关于我们stm32/ARM单片机的软件安装过程。首先我们就要介绍这个会贯穿我们整个开发过程中的软件gcc-arm-none-eabi。

  最直接的当我说出这个软件的时候,江南体育大部分童鞋可能会奇怪他到底是个什么呢?首先他是个软件这就不用多说了,做什么的软件呢?编译软件,或是准确点叫工具链。那么听起来是不是和keil、IAR感觉一样呢?我们是不是安装好他以后,打开获得一个界面导入代码就可以编译hex文件呢?答案是否定的。

  又我们国内Keil+IAR环境教育出来的童靴们,很少会理解IDE其本质的含义。也许查询百度,他会告诉你IDE是集成开发环境,那么KEIL、IAR这样的IDE(集成开发环境)集成了什么功能呢?首先我们来看看他们的功能:

  连接单片机调试器硬件(如:jlink、ST-link等)实现单步执行、寄存器提取、资源监测等调试功能。

  我们可以看到的是,在商业化的软件如KEIL之流,他们把很完善的功能都集成在了一个带有界面的程序中,所以叫他们IDE即集成开发环境,固然这样很方便,对于很多新手或刚入职的工程师来说,这样的软件极大的简化了他们距离实际编写程序的距离。但缺点也显而易见:它阻碍了童鞋们对编译器以及编译过程的理解,也在集成化的过程中缺少了很多可选择的高级功能。

  经过上面的介绍我想大家已经理解了一个集成开发环境的构成,而我们所讲的gcc-arm-none-eabi就是其中的编译器的功能,更专业的,在嵌入式开发中我们一般将它叫做工具链。(工具链:一般由编译器、连接器、解释器和调试器组成)关于它的调试功能这个比较复杂,我们之后慢慢来讲。

  在我们这个系列的第一篇STM32高级开发(1)-开源是什么的文章中我们就介绍了,gcc-arm-none-eabi是GNU项目下的软件,是一个面向裸机arm的编译器。那么说了这么多介绍,它都包含什么具体功能又怎么安装与使用呢,我们继续。

  在写这篇文章时它的软件版本已更新到了5_4-2016q3 。我们直接点击下面Linux版进行下载。在下载的过程中建议大家去网站的首页看看,随便逛逛了解一下gcc-arm-none-eabi。

  Library,其实叫什么名字都行,只是以后我们所有的库和工具都会放在这里,所以就起名叫这个了,然后把下载好的压缩包放入Library文件夹中,并解压(右键压缩包选择解压到此处)。然后我们就可以删除压缩包了,或者放个地方存着以防以后还要用。

  这个文件夹中的便是软件的执行文件了,不过他们都是通过指令行调用的,但是在终端调用之前,我们需要把软件的路径置于系统的环境变量之下,这样系统才能过直接调用程序,否则我们每次执行都需要输入长长的路径系统才能够找到软件。

  修改这个文件来添加我们的路径,ubuntu的环境变量文件有好多个,他们都在不同的时候起作用,具体的讲解可以看看这篇文章:Ubuntu系统环境变量详解,里面把这个问题讲的很清楚了,这个文章中列举的文件后几个也许你在自己的系统中找不到,但那只是系统没有创建设定,如果新建一个同样名称的文件他们依然是会起作用的。

  此处export意为设置变量,”PATH”是一个系统默认的内置变量即系统路径。”$PATH”,意为取值PATH变量。“:”代表拼接,用它来分割多个路径。后面的即为我们编译器执行文件的路径,这个根据大家自己的路径设置,可以随便点开一个执行文件查看他的路径复制粘贴即可。此处这行设置意为:将后面的路径与PATH之前的值合并,并更新给PATH,即将一段路径添加入PATH路径内。

  如果补全了,那么说明我们已经设置成功了,我们此时可以直接键入指令来调用工具链的程序。如果没有,说明你上面的环境变量设置步骤有误请重新检查自己的操作。

  同时如果你安装的是64位的ubuntu版本,则需要安装lsb-core才能正常使用这个工具链,使用指令:

  随后我们输入指令,来再次欣赏一下自己的成果,这个条指令意为显示工具链的版本。(是不是很长,记得我们的小技巧吗?只要输入”arm-”再按Tab就能补全指令啦,是不是很方便?)

  注意以上操作,从source 开始请使用一个终端,不要关闭,否则可能出错:无法找到工具链。实际按理说source指令和重启的效果是一样的,但在我安装的过程中却出错了,重启之后才变正常了。

  还有个检查的方法就是,使用指令查看当前系统PATH变量的值,查看是否PATH中是否有刚刚设置的路径:

  在我们安装好gcc-arm-none-eabi后,我们可以在终端中输入指令来调用gcc-arm-none-eabi的功能了,那么这个工具链下茫茫多的执行软件都是做什么的呢,可以看到在路径下一共有28个工具。接下来我们就来介绍一下我们将会用到的工具和他的功能及使用方式。

  这个工具为c语言编译器,可以将.c文件转化为.o的执行文件。如果大家不明白,.o是什么作用,建议大家去看一些关于编译过程和原理的介绍,如这篇文章:C语言的编译过程。

  它的使用方法是,在终端中cd到工作目录,如编译当前目录下的hello.c文件,生成hello.o文件:

  这个工具为c++语言编译器,可以将.cpp文件转化为.o的执行文件,使用方式如上。

  这个工具为链接器即最后链接所有.o文件生成可执行文件的工具。一般我们不使用 arm-none-eabi-ld 的指令调用它,而是通过使用arm-none-eabi-gcc 来调用,因为前者对c/cpp文件混合型生成的.o文件们的支持性不好,所以官方的说明书中也推荐使用arm-none-eabi-gcc 指令来代替arm-none-eabi-ld,如下:

  此工具将链接器生成的文件转化为bin/hex等烧写的格式,用以下载进入单片机。如下:

  工具链中的调试器,将它连接到调试器硬件产生的网络端口,就可以进行硬件和代码的调试了。GDB是gnu下一个独特的调试软件,它具有很多自己的特性,也许大家无法想象使用命令行调试的景象,但是之后我们会看到它的强大。

  当然这一系列的指令只是一个简单且包含用法错误的例子,实际的使用中我们要输入很多设置参数,才能适配我们的单片机,所以这个样例只是为了让大家理解工具链的调用方式,在我们之后的工程编写中会为大家介绍他们详细的用法。

  至此,我们的工具链便介绍完成了,大家目前可能会有些疑问,难道编译过程就那么多命令行一个一个输入吗?一个一个文件手动编译?GDB又要怎么通过计算机网络端口连接到调试器呢?我们请看下一篇的讲解:STM32高级开发(6)-make与调试器驱动。关键字:编辑:什么鱼 引用地址:STM32高级开发(5)-gcc-arm-none-eabi

  现在开发者可以在 VS Code上全面设计、编写和调试 STM32应用2023年4月26日,中国 – 服务多重电子应用领域、全球排名前列的半导体公司意法半导体(STMicroelectronics,简称ST;)发布了新的扩展工具,把微软的集成开发环境 Microsoft® Visual Studio Code (VS Code) 的优势引入 STM32 微控制器。VS Code 是一个人气颇高的集成开发环境(IDE),以好用和灵活性而享誉业界,例如,IntelliSense可简化并加快代码编辑。现在开发者能够从 VS Code进入STM32生态系统,让STM32 社区更多的嵌入式开发者能够使用这些功能,还让习惯于开发高级应用和消费类

  全面支持Microsoft Visual Studio Code /

  这是根据TI官方那个方案改:精确监测和 50μA 待机电流、13S、48V 锂离子电池组参考设计TIDA-010030,链接如下:原方案里的MCU用的是TI自家的MSP430,由于没用过,我自己改成了STM32F103C8T6。除了电量计这块没有进行充放电学习过程外,基本实现要求功能,自定义的过流,短路,过放,过温都行。可以自动识别充放电,充电过程进行电池均衡(这里设置了一节),防充电器倒冲(程序存在BUG我最后只做到了10V,如果一上来就低于10V就不管用了),CAN总线传输数据也整上了。BQ7718我买错型号了

  坡道行驶巡线 p30 12v;转动一圈390个脉冲;减速比1比30。通过获取每100毫秒的脉冲个数,就可以计算出速度的大小3)7针0.96寸oled显示屏4)舵机:看着挺高级的,马力大,不过控制代码与那种两块钱的一样,模拟控制,PWM控制,用来控制方向5)红外传感器模块:4个红外对管,一块模拟转数字模块6)电源18650+电池座:经济实惠7)锂电池充电器:一个模块加一个电池座,加起来不到2块钱8)旋转编码器,用来调节时间的,按下小车就可以跑了8)小车底盘购买链接:其实编码电机与舵机小车上面都有,直接买一个小车车身

  坡道行驶巡线小车制作教程 /

  以下就简单的介绍下项目组成:实现的功能面板上共四个按键,对应不同的功能:按键1:按下后,将一分钟内的平均脉搏设为正常脉搏,正常脉博值更新后蜂鸣器隔一秒响一次,正常脉博值未更新时蜂鸣器一秒响4次。这样能知道当前什么状态,报警状态就是一直响。如果已经按下过按键1 ,那再按一次就会蜂鸣器快响,并计算平均值,计算完蜂鸣器再慢响,相当于更新了一次平均值。按键2:实时检测xyz轴加速度,并且设置对应的三个报警值,超过报警值蜂鸣器报警,需要按按键4手动取消报警,报警值设置程序中采用宏定义的方式,方便用户更改调试,每次更改后需重新下载程序。再按一次按键2加虚度检测停止工作。按键2 相当于只检测加速度。按键3:脉搏报警值和加速度报警值每两分钟改变一次

  实现的功能:1)测量用电设备的有功功率、电流和电压有效值和用电量;2)电参数通过NB-IoT上传到OneNET,可以在后台实时监控数据;3)通过OneNET后台发送指令控制电参数是否上传(可以拓展继电器控制)。02需要的材料需要的材料:一个STM32芯片,我这里用的是正点原子的mini开发板,型号:STM32F103RCT6ST-Link下载器,主要用来给STM32单片机下载程序的,有其他的仿真下载器也是可以的。当然,用串口也是可以下载的,就是比较麻烦,我比较喜欢用仿真器下载,一键完事!USB-TTL串口模块,这个是用来调试M5311模块的,可以不需要,因为mini开发板板载USB转TTL模块,你可以拔掉原有的短路帽来用。不过玩单片

  婴儿床监测主要有以下功能:床内温度;检测婴儿状态;配置RTC实时时间;电机PWM按键三档调速;自动开关加热器;发送温度到手机终端;把所有要呈现的状态通过OLED屏幕显示。感兴趣的小伙伴还可以加入更多的功能。# 硬件元件清单 #主控为STM32F103C8T6,使用最小系统板:OLED显示屏1个,连接方式:VCC-3.3/5V;GND-GND;SCL-单片机SCL脚;SDA-单片机SDA脚轻触按键3个,连接方式:对脚连接;一脚接GND;一脚接上拉电阻至电源、及IO口引脚一路5v继电器模块 1个,连接方式:上面口:VCC-5V;GND-GND;PIN-单片机信号脚下面口:选择常开/常闭连接负载L298N电机驱动板模块 1个,连接方式如下

  智能婴儿床监控 /

  F103微控制器

  技巧篇 (王敏志)

  Cadence 高速电路设计Allegro Sigrity SI/PI/EMI设计指南

  【投票赢双肩包、充电夜灯、50元京东卡】最痛电磁干扰(EMI)问题您来定!

  有奖直播安森美全新 ADAS 电源 IC 提升 ADAS 系统的清晰度及安全性

  【下载】STM32WB基于Custom Template实现客户定制BLE私有协议

  【视频】TouchGFX 4.21版更新:TouchGFX Stock和SVG小部件

  【新品】STM32H5-Arm® Cortex®-M33 内核,主频高达250MHz,提升性能与信息安全性

  【新品】STM32MP13X-支持Linux、RTOS和Bare Metal应用,新一代通用工业级MPU

  【新品】Arm® Cortex®-M33处理器内核,运行频率160 MHz,基于Armv8-M架构并带有TrustZone®

  TouchGFX 4.21推出庞大的图形资产库TouchGFX Stock,STM32 MCU用户免费使用!

  综合资讯51单片机PIC单片机AVR单片机ARM单片机嵌入式系统汽车电子消费电子数据处理视频教程电子百科其他技术STM32MSP430单片机资源下载单片机习题与教程