1.CubeIDE下载与安装
STM32CubeIDE 是 STM32Cube 软件生态系统的一部分。 它是一个针对st芯片的先进C/C++开发平台,具有针对STM32单片机和微处理器的外设配置、代码生成、代码编译和调试功能。 它基于 Eclipse®/CDT™ 框架和 GCC 工具链进行开发,并基于 GDB 进行调试。 它支持与数百个现有插件集成,以完善 Eclipse® IDE 的功能。 STM32CubeIDE集成了STM32CubeMX的STM32配置和工程创建功能。 通过所选板或示例选择空的 STM32 MCU 或 MPU,或预配置微控制器或微处理器后,将创建项目并生成初始化代码。 在开发过程中的任何时候,用户都可以返回到外设或中间件的初始化和配置阶段,并重新生成初始化代码,而不会影响用户代码。
下载地址:STM32CubeIDE – STM32集成开发环境 – 意法半导体,您需要一个电子邮件地址以获得下载权限
中文包地址:Index of /eclipse/technology/babel/update-site/
本文安装时的中文版包:
在线安装路径:索引/eclipse/technology/babel/update-site/R0.19.2/2021-12/
直接下载和离线安装:
下载stmcubeIDE后,双击安装包完成安装:
安装完成后,进入help->install new software进行配置并安装汉化包。
选择简体中文完成在线安装
2.创建工程并配置芯片引脚
汉化后,重启软件,在File->New Project->stm32工程中输入自己的芯片型号,本文为STM32L496VGTx
单击“下一步”,输入项目名称,选择项目路径,完成项目创建。
工程创建后,直接弹出cubeMX配置界面,可以图形化配置芯片引脚接口。
启用USB串行端口功能
本文仅从外部高速时钟(HSE)开始
系统时钟频率直接提升至80MHz
对于一个简单的测试项目,只配置了三个按钮的GPIO和三个LED灯。
项目管理,保持默认设置,
代码生产页面仅按需生成,为每个接口类型生成独立的头文件和源代码文件。
在高级设置页面上,保留设置。 1)本文选择HAL库进行GPIO实现。 您也可以单击选择 LL 库。 2)直接生成GPIO初始化调用(在main.c中实现)。 您还可以选中“不生成呼叫”并将其删除。 您可以删除 Visibility (Static) 选项,并且不生成 GPIO 初始化函数。
点击菜单栏的保存或代码制作按钮,即可实现cubeMX配置到源码生成。
代码生成后,在main.h中配置GPIO接口映射信息
生成GPIO接口的源码为gpoi.h/c,仅提供GPIO初始化函数,通过调用HAL库函数实现。
首先创建您自己的按钮和 LED 驱动器。 这个驱动也是基于HAL库提供的功能来实现的。 HAL库与底层硬件交互,间接帮助我们实现硬件读写控制等能力。
3. 编码与编译
右键项目目录->New->SourceFolder创建源目录,添加四个源文件key.h/c和led.h/c
密钥.h
/*
* key.h
*
* Created on: Sep 29, 2022
* Author: py_hp
*/
#ifndef KEY_H_
#define KEY_H_
#include "main.h"
#include "gpio.h"
GPIO_PinState get_key0_val();
GPIO_PinState get_key1_val();
GPIO_PinState get_key2_val();
#endif /* KEY_H_ */
密钥.c
/*
* key.c
*
* Created on: Sep 29, 2022
* Author: py_hp
*/
#include "key.h"
GPIO_PinState get_key0_val()
{
return HAL_GPIO_ReadPin(KEY0_GPIO_Port,KEY0_Pin);
};
GPIO_PinState get_key1_val()
{
return HAL_GPIO_ReadPin(KEY1_GPIO_Port,KEY1_Pin);
};
GPIO_PinState get_key2_val()
{
return HAL_GPIO_ReadPin(KEY2_GPIO_Port,KEY2_Pin);
};
led.h
/*
* led.h
*
* Created on: Sep 29, 2022
* Author: py_hp
*/
#ifndef LED_H_
#define LED_H_
#include "main.h"
#include "gpio.h"
void Toggle_led0();
void Toggle_led1();
void Toggle_led2();
void set_led0_val(GPIO_PinState PinState);
void set_led1_val(GPIO_PinState PinState);
void set_led2_val(GPIO_PinState PinState);
#endif /* LED_H_ */
led.c
/*
* led.c
*
* Created on: Sep 29, 2022
* Author: py_hp
*/
#include "led.h"
void Toggle_led0()
{
HAL_GPIO_TogglePin(LED0_GPIO_Port,LED0_Pin);
}
void Toggle_led1()
{
HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin);
}
void Toggle_led2()
{
HAL_GPIO_TogglePin(LED2_GPIO_Port,LED2_Pin);
}
void set_led0_val(GPIO_PinState PinState)
{
HAL_GPIO_WritePin(LED0_GPIO_Port,LED0_Pin,PinState);
};
void set_led1_val(GPIO_PinState PinState)
{
HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,PinState);
};
void set_led2_val(GPIO_PinState PinState)
{
HAL_GPIO_WritePin(LED2_GPIO_Port,LED2_Pin,PinState);
};
在main.c中添加按键和LED实现,并在为用户保留的代码区添加自写代码,这样cubeMX修改后再次产生的代码不会修改或擦除已经写入或修改过的代码。
添加头文件
添加函数调用实现,您可以自行调用
右键项目,进入属性页(也可以直接从菜单进入),检查编译器输出文件格式对该项目的支持。
点击编译按钮,完成编译
4、将编译好的程序加载到硬件中并测试
点击help->ST-Link update运行配置更新,这样编译好的软件就可以直接下载到硬件上。
点击运行工具的运行配置按钮,进入配置页面。 在 STM32 C/C++ 应用程序中创建新的调试配置。 每个项目仅配置一次。 稍后可以直接点击运行按钮,将编译好的软件加载到硬件中。
用数据线连接电脑和硬件,点击运行下载程序
或者使用其他下载工具,如STM32 ST-LINK Utility来加载
五、程序运行效果
显示效果如下:
Toggle_led2();//闪灯
set_led0_val(get_key0_val());//按键亮灯
HAL_Delay(100);
【1】闪光灯
【2】按钮亮起