如何在Linux下为STM32 MCU构建代码

发布时间:2024-03-26  

步骤1:安装必需的软件

首先,安装必需的软件。


为ARM安装gcc编译器:

gcc编译器包含用于编译,链接和构建MCU的构建代码的工具。安装以下三个软件包:

gcc-arm-none-eabi

binutils-arm-none-eabi

libnewlib-arm-none-eabi

sudo apt-get install gcc-arm-none-eabi binutils-arm-none-eabi libnewlib-arm-none-eabi

安装STM32CubeMX

STM32CubeMX是用于生成C项目的基于Java的工具。借助此工具可以配置使用过的MCU的所有部分,例如USART,I2C,SPI,GPIO,TIMx,。..。

网页:www.st.com/stm32cube

CubeMX工具具有Linux支持。易于安装:

下载并解压缩zip文件

运行安装程序

遵循向导

取决于您的ST32硬件(STM32F0,STM32F10x 。.. |),您需要为MCU下载库。运行STM32CubeMX并单击“帮助”-》“安装新库”。从列表中为您的MCU选择最新的库。

安装Makefile4CubeMX

从CubeMX项目生成Makefile需要使用Makefile4CubeMX。

下载链接:github.com/duro80/Makefile4CubeMX

如何安装:

git clone https://github.com/duro80/Makefile4CubeMX.git

sudo ln -s“ $ PWD“/CubeMX2Makefile.py/usr/bin/CubeMX2Makefile.py

安装代码:: Blocks IDE

要安装Code :: Blocks IDE,请使用您的软件包管理器。在Ubuntu下可用的版本是13.12-3:

sudo apt-get install codeblocks

安装stlink

stlink是用于将构建的代码下载到MCU(闪存)的程序。由texane维护的inux版本,位于github:github.com/texane/stlink。此处介绍了安装过程。如果您喜欢二进制文件,则最新版本在这里:github.com/texane/stlink/releases。

步骤2:设置代码:: Blocks IDE

如何在Linux下为STM32 MCU构建代码

要为ARM处理器编译并构建自己的程序,必须设置C :: B IDE。在“设置-》编译器。..”中:

在左窗格中选择“全局编译器设置”

在顶窗格中选择编译器:ARM的GNU GCC编译器

在中心窗格中,选择“工具链可执行文件”选项卡并填写以下值:

编译器安装目录:/usr

C编译器:arm-none -eabi-gcc

C ++编译器:arm-none-eabi-g ++

动态库链接器:arm-none-eabi-gcc

静态链接器库:arm-none-eabi-ar

调试器:现在可以为空

make程序:make

Step 3:创建STM32CubeMX项目

在启动项目之前,请检查是否存在特定库MCU。在菜单帮助-》安装新库中,检查所需的库(在我的情况下为STM32F0版本1.5.0)。单击“立即安装”将库安装到本地存储库中。

下一个项目将用于STM32F0 MCU。

创建新项目

有两种可能:通过选择MCU来创建新项目

,通过选择STM板

在“新建项目”对话框中选择“系列”: STM32F0,行:STM32F0x0价值行。从列表中选择STM32F030F4Px

出于测试目的,将PA0引脚检查为GPIO_Output。

设置项目属性

单击项目设置:菜单Project-》 Settings。 。.

键入项目名称(例如InstructableF0)

更改项目位置(如果需要)

工具链/IDE:选择SW4STM32

取消选中“根据根生成”

单击“确定”

生成C代码

单击“项目”-》“生成代码”以生成空项目

步骤4:生成Makefile和C :: B项目

要生成Makefile和Code :: Block项目,即Makefile4CubeMX

打开生成CubeMX项目的目录,并在其中打开终端。类型:

CubeMX2Makefile.py 。

在工作目录中将生成文件:Makefile,InstructableF0.cbp(此文件的名称取决于CubeMX项目名称)

Step 5:编写并构建程序

打开项目InstructableF0.cbp并打开main.c文件。

现在,我们可以做一点代码了。让我们切换端口PA.0来演示工作代码。

int main(void){

/* MCU Configuration-------------------------*/

/* Reset of all peripherals, Initializes the Flash interface and the Systick. */

HAL_Init();

/* Configure the system clock */

SystemClock_Config();

/* Initialize all configured peripherals */

MX_GPIO_Init();

/* Infinite loop */

/* USER CODE BEGIN WHILE */

while (1) {

HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_0);

HAL_Delay(500); // 500ms

/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */

}

/* USER CODE END 3 */

}

构建代码以验证我们代码的正确性:Build-》 Rebuild(Ctrl + F11)

步骤6:连接硬件


准备硬件:

连接stlink-v2加密狗与您的电路板

LED二极管连接到端口PA0(串联到150欧姆或更高的电阻)

构建

在Code :: Block中,在编译器工具栏中选择“发布”。

选择“重建”(Ctrl + F11)。重建后,代码会自动加载到MCU

LED二极管开始闪烁。

您也可以在不使用Code :: Block IDE的情况下使用Makefile。

在工作目录(放置Makefile的目录)中打开终端,然后键入:

内部版本代码:

make

闪存代码到MCU:


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    ) = (2N – 1) 电压范围(VRANGE) = 最大DAC输出电压(VMAX) – 最小DAC输出电压(VMIN) = 4 × VREF  DAC输入代码(未校准)   ► 增益校正(GC......
    第一个目标,就是弄清楚怎么下载程序的问题,也就是把一个最简单的闪灯程序运行起来,写了几行代码,如下:    ldr     r0,=0x7f008820    ldr     r1,=0x1111......
    是如何控制激光的呢?DAC负责提供非常精确的输出电压,该电压将被用作电机的模拟输入。DAC的每个特定模拟输入代码都与特定的电机位置有关。此电机负责移动镜子,该镜子可在x、y或z平面上重新放置,以引......
    ) = 最大DAC输出电压(VMAX) – 最小DAC输出电压(VMIN) = 4 × VREF DAC输入代码(未校准) ► 增益......
    在外部提供。 图1. 图片由 ADI公司. 上述理想传递函数对应于一个三位单极性DAC。请注意,DAC输入和输出都是量化值,传递函数实际上由八个点组成(而不是穿过这八个点的线)。此外,模拟输出(输入代码......
    速比的计算公式如下:   i 表示电机速比;n_1表示输入轴的转速,单位是转/分钟(rpm);n_2 表示输出轴的转速,单位是转/分钟(rpm)。   如果电机驱动的是一个减速器或 传动系统,那么输入轴一般是减速器或传动系统的输入......
    。 【24】请问在应用主控指令MC N0 M100时,左母线上的N0 M100触点应该怎么输入进去呢? 答:左母线上的N0 M100触点是不需要自己输入进去的,当编程软件的状态处于写入模式时,左母......
    总结大佬经验,如何学习STM32?(入门、进阶);一、想快速入门进阶,面向工作时先把工作中需要的东西学会,一项一项的来,比如先把GPIO弄清楚,怎么初始化,怎么输入输出,然后定时器、串口、ADC......
    整合各方大佬多得来的经验如何学习STM32!(入门、进阶);一、想快速入门进阶,面向工作时   先把工作中需要的东西学会,一项一项的来,比如先把GPIO弄清楚,怎么初始化,怎么输入输出,然后......
    远见开发环境,FS-MP1A平台 实验步骤 本实验基于tf-a-stm32mp-2.2版本,然后添加意法半导体提供的补丁文件。 导入代码 建立源码目录 将en.S OURCES-stm32mp1......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>