STM32CubeMX教程1 — 点亮一个LED灯

STM32CubeMX教程1 — 点亮一个LED灯

前期准备:
①:STM32硬件(我的是STM32F103ZET6)
②:STM32CubeMX Keil5

实验目的

点亮一个LED灯
(ps:我的LED对应GPIO是PE5,带上拉,低电平点亮)

思维导图

在这里插入图片描述

新建工程:

1.在主界面选择File–>New Project 或者直接点击ACCEE TO MCU SELECTOR 或Ctrl+N;

2.在 Part Number中搜索芯片型号,然后双击右下角的STM32F103ZETX在这里插入图片描述

3.进入下面界面;
在这里插入图片描述

4.首先我们设置时钟,点击System core,找到RCC,将高速时钟与低速时钟都设置为外部时钟,如下
在这里插入图片描述
接下来点击Clock Configuration,
在这里插入图片描述
由于我们选择选择外部时钟,因此勾选HSE,通锁相环分频;

5.其次,我们配置Debug,点击Pinout&Configuration,找到System core分页下的SYS,将Debug选择为Serial Wire,如下:
在这里插入图片描述

6.配置我们的GPIO口,在右下角的搜索相应引脚,我的是在PE5
在这里插入图片描述
点击那个黑色闪烁的PE5,点击GPIO_Output
在这里插入图片描述
跳转到System Core分页下的GPIO,
在这里插入图片描述
我们来配置GPIO:
GPIO output level 设置此引脚为高电平还是低电平
GPIO mode 设置此引脚的输出模式 Output Open Drain 开漏输出,Output Push Pull 推挽输出
GPIO Pull-up/Pull-down 设置上拉下拉
Maximum output speed 设置速度
User Label 用户标签

7.生成我们的工程,点击Project Manager
在这里插入图片描述
依次进行设置,(注:路径中不能包含中文!路径中不能包含中文!路径中不能包含中文!)
接着点击Code Generator
在这里插入图片描述
Cope all used libraries into project folder 软件包中所有.c和.h都复制到工程中
优点:可以在此工程中直接添加外设,不需要再用CubeMX配置
缺点:编译速度慢
Cope only the necessary library files 只复制需要的.c和.h
优点:编译速度较快
缺点:如果要增加外设,需要继续用CubeMX配置
Add necessary library library files as … 不复制.c和.h文件,直接从软件包储存位置中引用
优点:编译速度快
缺点:不能更改文件位置
Generate peripheral initialzation… 每个外设生成单独的.c和.h文件
Backup previously generted… 重新生成代码是保留以前编译产生的文件
Keep User Code when… 重新生成代码时保留用户的代码
Delete previoly generted…重新生成代码是输出以前编译产生的文件

最后点击GENERATE CODE在这里插入图片描述

Keil5编程

8.打开文件
在这里插入图片描述
Core 中的两个文件中包括.c和.h文件(用户如果要写其他的.c和.h文件可以保存在这里面)
LED.ioc 我们可以通过这打开CubeMX继续进行配置

点击MDK-ARM,点开LED.uvprojx,编译一下,无错误警告
在gpio.c中可以找到MX_GPIO_Init(),这是对我们的GPIO引脚初始化,如需修改,我们可以在这里修改
在这里插入图片描述

在main.h中可以找到我们的标签
在这里插入图片描述
接下来我们来学习一下HAL库中常见的输出函数
ps:一点小技巧,我们想要找关于gpio的函数,我们可以在gpio.c分页下找到stm32f1xx_hal_gpio.h
向下拉就会找到

在这里插入图片描述
首先:我们学习
*void HAL_GPIO_WritePin(GPIO_TypeDef GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);
给引脚写入高电平还是低电平

在这里插入图片描述
通过这个可以找到函数的原型(或者直接按F12也可以到定义处)
*第一个参数,第二个参数:确定引脚号,第三个参数:高低电平
void HAL_GPIO_TogglePin(GPIO_TypeDef GPIOx, uint16_t GPIO_Pin);
电平翻转函数

在main.c中我们的代码

HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,GPIO_PIN_RESET); //给PE5引脚写入低电平我的是低电平点亮
	//HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,0); //这样写也可以,但会报warning
	//HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_RESET); //使用我们的用户标签来写

ps:用户代码尽量写在 / USER CODE BEGIN 2 / / USER CODE END 2 / 之间,否则,如果我们使用CubeMX增加外设时我们以前写的代码将会消失

编译烧录复位,就点亮我们的LED灯了(哈哈,很开心对吧)

同理,我们使用void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);这个函数也可以实现点灯。
点灯例程

写在最后,以后不定时会更新


版权声明:本文为weixin_60928755原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。