STM32CubeMX开发教程(2)— 使用教程(点亮LED灯)

简介: STM32CubeMX开发教程(2)— 使用教程(点亮LED灯)

前言

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

1 新建工程

1.1 MCU型号选择

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

4faca33505ea494091cdfd26c2c5689e.png

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

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

7f40073146d14bb4a24d22feaa48fad3.png

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

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

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

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

       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 的引脚功能和显示引脚位置。

5d2cf6082ce24a4ea457526ce2969835.png

1.3 MCU引脚布局配置

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

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

2d26af6d6005448193fc27910ad4fd5c.png

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


1abd77f9a41a4c3e9a13d8472725a4f0.png

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

3998b8e4a36042a19978f250d2cf39e9.png

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


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

b0087af5b0084f60aa403b151142ef60.png

1.4 MCU时钟树配置

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

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

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

a846f1bc6ef94ad38ea61b60cc86d4d6.png

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


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


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

fb8348b6deea435ca5bf21aebe74842a.png

1.5 工程管理

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

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


befeeeb4a5294b928158de99b76493b6.png

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

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


1c244b42fefd4e2c9e0b6a985a7697f2.png

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

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

0fc4b87e70514dad8f2ea03b77ca800d.png


2 编译工程

2.1 编辑代码

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

cf8fa38b578c442e94eaa4a708f5ba40.png

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


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

d956001495fd455998a3ddb9e5ebf05e.png

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

2.2 编译代码

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

make

5da245d2e69b4e4f937a97b7b2c43793.png

当生成 LED.elf、LED.hex 和 LED.bin 文件,表示工程编译成功。

3 下载工程

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

ozone

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

9bb128cb245a488387228991d060b359.png

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


265eed29031a4475a2d7ce4719558037.png


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

e8e0dbd5630d43bb85b29fd06475ba5b.png



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


8e94df1cf0e149c8afc4307e382b0b6d.png


(6)其它默认配置;


dbad4f79f64a42d5ba72df5508c5a6b6.png


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

eb5014e3baaa4fac8ef8b934eac10705.png



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


4 运行工程

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


总结

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


相关文章
|
芯片
最详细STM32,cubeMX 按键点亮 led
最详细STM32,cubeMX 按键点亮 led
260 0
|
10月前
|
IDE 编译器 开发工具
【STM32 LVGL基础教程】初识LVGL
【STM32 LVGL基础教程】初识LVGL
776 0
|
5月前
|
存储
【TFT彩屏移植】STM32F4移植1.8寸TFT彩屏简明教程(二)
【TFT彩屏移植】STM32F4移植1.8寸TFT彩屏简明教程(二)
164 0
|
5月前
|
存储 芯片
【TFT彩屏移植】STM32F4移植1.8寸TFT彩屏简明教程(一)
【TFT彩屏移植】STM32F4移植1.8寸TFT彩屏简明教程(一·)
283 0
|
9月前
使用STM32F103标准库实现定时器控制LED点亮和关闭
通过这篇博客,我们学习了如何使用STM32F103标准库,通过定时器来控制LED的点亮和关闭。我们配置了定时器中断,并在中断处理函数中实现了LED状态的切换。这是一个基础且实用的例子,适合初学者了解STM32定时器和中断的使用。 希望这篇博客对你有所帮助。如果有任何问题或建议,欢迎在评论区留言。
629 2
|
5月前
stm32学习 3-2 LED流水灯
stm32学习 3-2 LED流水灯
102 4
|
5月前
stm32学习3-1 LED闪烁
stm32学习3-1 LED闪烁
56 4
|
5月前
【寄存器开发速成】半小时入门STM32寄存器开发(二)
【寄存器开发速成】半小时入门STM32寄存器开发(二)
105 0
|
5月前
|
芯片
【寄存器开发速成】半小时入门STM32寄存器开发(一)
【寄存器开发速成】半小时入门STM32寄存器开发(一)
135 0