Linux 下如何搭建 STM32CubeMX 开发环境请参考:

        STM32CubeMX开发教程(1)— 安装教程


文章目录

前言

1 新建工程

1.1 MCU型号选择

1.2 CubeMX配置界面

1.3 MCU引脚布局配置

1.4 MCU时钟树配置

1.5 工程管理

2 编译工程

2.1 编辑代码

2.2 编译代码

3 下载工程

4 运行工程

总结



前言

        搭建好 Linux 下 STM32 开发环境后,我们使用 STM32CubeMX 新建工程,点亮 LED 灯。初步了解根据项目需求,如何使用 STM32CubeMX 快速配置 MCU,生成基于 HAL 库的项目工程。以及在项目工程中添加功能代码的注意事项。附加学习如何通过 Makfile 编译工程和如何通过 Ozone 下载、调试工程。


1 新建工程

1.1 MCU型号选择

(1)双击 STM32CubeMX 软件快捷图标,打开软件。在用户界面菜单栏点击 "File"—>"New Project" 或者直接选择 "ACCESS TO MCU SELECTOR";

 (2)在左上角搜索框内输入我们开发所用的芯片型号(本例程选择 STM32F427VIT6),再单击 "MCUs/MPUs" 列表中的所需芯片;

        单击以后,右上角会弹出该芯片的相关资料:芯片特性、芯片架构图、文档和资源(包含参考手册)以及数据手册。其中芯片参考手册数据手册是我们嵌入式开发必备的文档资料。

         如果是设计产品,想要选择一款芯片,该页面提供多种方式筛选芯片,主要有:

        1)产品信息:主要包含芯片系列、价格、封装、内核和协处理器等;

        2)内存相关:主要包含FlashEEPROM、RAM、SRAM 等;

        3)定时器:定时器的数量/位数和定时器功能(看门狗、RTCSysTick 等);

        4)数模模块:ADC 数量/位数、DAC 数量/位数和比较器等;

        5)通讯接口:CAN、I2C、SPI、UART、I2S、SAI 和 Ethernet 等;

        6)USB接口:USB OTG、USB 2.0 和 USB HS 等;

        7)外部内存接口:QSPI、OCTOSPI 和 FMC 等;

        8)其它接口:DFSDM、SDMMC 和相机、网络接口等;

        9)图像:显示控制和图像加速;

        10)安全性:加密协议(AES、ECC、RSA、SHA)和安全功能;

        11)其它外设:IPCC、I/O 和 SMPS等;

        12)物理方面:工作电压、输出功率和工作温度等。

(3)了解芯片的相关信息后,双击 "MCUs/MPUs"  列表中的所需芯片,弹出图形化配置界面;

1.2 CubeMX配置界面

        在这个界面,我们主要通过一些图形化的操作来完成我们之前在代码中所做的一些硬件资源配置,主要分为四个功能区域:引脚布局配置时钟树配置、工程管理和工具。

        我们主要的工作在引脚布局配置界面,分为三个配置区:

        1)外设资源选择区①区)按照类别(Categories)和字母(A —> Z)两种排序方式供用户查询选择外设资源;

        2)外设资源具体配置区②区)是在选择外设以后,对外设进行更加详细的配置

        3)外设资源引脚预览区(③区主要用于配置 MCU 的引脚功能和显示引脚位置。

1.3 MCU引脚布局配置

        点亮 LED 灯,我们需要将连接到 LED 灯的芯片引脚(我的开发板有两个灯,分别连接到 PE2PB15 引脚)配置成输出,即在引脚布局配置③区进行相关配置。

(1)找到 PE2 引脚,鼠标右击引脚图标,然后引脚功能选用 "GPIO_Output"。初步配置完成,引脚图标变为绿色,表示可以使用;(PB15 引脚同样操作)(根据自己的开发板,选择相应的引脚进行配置

 (2)我们对刚才选择的外设IO资源,进行更加详细的配置:在①区,选择 "System Core"—> "GPIO",弹出 PB15PE2 引脚的详细配置界面(②区);

 (3)在②区单击 PB15 引脚名,本例程上下拉选择 "Pull-down",输出速度选择 "Medium";(PE2 引脚同样配置)(具体根据自己开发板的硬件原理图进行配置)

(4)选择 "System Core"—> "SYS",弹出系统模式和配置界面;

(这里调试口我们选择 "Serial Wire",即一般USB下载程序口。选择以后,③区引脚预览处,可以看到 PA14(SWCLK)PA13(SWDIO)标记为绿色。可以根据自己开发板的实际调试口进行相应选择)

1.4 MCU时钟树配置

        本例程选择外部高速时钟(HSE),为芯片提供系统时钟。而使用外部时钟,需要先配置RCC(复位和时钟控制);(没有外部时钟,只使用内部时钟,不需要配置RCC

(1)在引脚布局配置①区,选择 "System Core"—> "RCC",HSE 选择 "Crystal/Ceramic Resonator";

(可以看到,当我们配置好外部时钟后,③区的 "RCC_OSC_IN" 和 "RCC_OSC_OUT" 晶振引脚变为绿色)

 (2)选择快捷菜单栏 "Clock Configuration",弹出芯片时钟树的图形配置界面;

        本例程外部晶振为 16MHz,根据箭头的指向,我们依次选择分频系数多路选择器(在代码中,这部分配置应该很熟悉了),直至为系统提供 168MHz 的系统时钟。具体的换算为:16MHz 经过 M(16) 分频,再 N(336) 倍频,最后 P(2) 分频得到 168MHz

提示:也可以直接选用内部晶振,配置好分频系数多路选择器即可。如果有紫红色外设晶振出现,说明芯片不支持,调整分频系数可以解决

1.5 工程管理

        I/O 引脚和系统时钟树配置完成后,点亮 LED 灯所需的外设资源我们就配置完毕了。接下来就是对项目工程进行设置。

(1)选择快捷菜单栏 "Project Manager",弹出项目配置界面;

        主要设置工程名称代码存储位置,以及选择工具链/IDE。本例程在 Linux 下进行开发,希望借用 Make工具管理代码,所以工具链选择 Makefile

(2)选择左侧 "Code Generator",对将要生成的代码库进行配置;

        有关于 STM32Cube MCU软件包的配置,本例程选用第一项(将所有库文件拷贝到项目文件夹),方便后续进行更多外设功能的开发,不再依赖于 STM32CubeMX。如果仅仅为了体验点亮 LED 的实验,推荐选择第二种或者第三种,生成的代码文件体积小,编译速度快。

(3)点击 "Tools" 上方的 "GENERATE CODE",生成代码库;

2 编译工程

2.1 编辑代码

(1)在代码编辑器或者 IDE 中打开 LED 项目工程(本例程选用 Visual Studio Code);

 (2)打开 "Src"—> "main.c",在while(1)函数的用户代码区添加如下代码;

HAL_Delay(500);
HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_2);
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_15);

 (提示:之所以在用户代码区中添加代码,是因为后续在此项目工程添加新的外设,我们再次使用 STM32CubeMX 配置工程时,在用户代码区中的代码会被保留下来,而用户代码区外的代码会被重置删除)

2.2 编译代码

(3)在 LED 项目工程的顶级目录下打开终端,输入编译命令;

make

 当生成 LED.elfLED.hexLED.bin 文件,表示工程编译成功。

3 下载工程

(1)在终端输入命令,打开Ozone,弹出项目下载配置界面;

ozone

(2)Device 选择具体芯片型号,本例程选择 "STM32F427VI";

(3)选中芯片,点 "OK"—> "Next";

(4)设置下载方式和下载速度;

 (5)加载下载文件(在项目顶级目录的 build 文件夹中,我们选择带有调试信息的 LED.elf 文件);

 (6)其它默认配置;

 (7)点击左上角(下载和复位程序)按钮下载程序;

当看到 J-Link:Flash download: ***,表示程序下载成功。

4 运行工程

(1)退出调试:再点击一次左上角(下载和复位程序)按钮,程序运行。


总结

        以上就是在 Linux 环境下通过 STM32CubeMX 新建工程,点亮 LED 灯。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐