STM32微控制器和微处理器的配置与项目创建功能

在开发过程的任何时间,用户均可返回外设或中间件的初始化和配置阶段,并重新生成初始化代码,期间不会影响用户代码。先创建自己的按键及LED驱动,该驱动同样是基于HAL库提供的函数实现,而HAL库和底层硬件打交道,间接帮我们实现对硬件读写控制等能力。

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】按钮亮起

单片机

STM32的原题已经改了,但这不是我故意抬杠

2024-2-8 3:01:39

单片机

单片机工作的节拍内部的引导程序一般工作电压在5.5V~V

2024-2-8 4:03:28

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索