蓝桥杯嵌入式STM32 LED模块化封装

560 阅读1分钟

@TOC


前言

之前的文章已经给大家介绍了LED灯的操作的了,现在我给大家讲解LED模块化的封装,学会了LED模块化封装将给我们带来极大的便利。

一、创建led.c和led.h文件

首先创建user文件夹,这里存放我们自己的程序代码。 在这里插入图片描述 在user文件夹中创建led.c和led.h文件: 在这里插入图片描述 将led.c文件添加进入工程中: 在这里插入图片描述 配置好user文件夹的路径 在这里插入图片描述 做好这些步骤后我们就开始编写我们的代码了。

二、编写led.c和led.h文件

led.h 首先我们需要先写上 #ifndef LED_H #define LED_H #endif 这个的作用是防止头文件的重复包含。

#ifndef __LED_H__
#define __LED_H__

#include "main.h"

/*
	num:第几个LED灯
	status:状态,1开灯,0关灯
*/
void Led_Set_Status(u8 num, u8 status);

#endif

led.c 核心函数就是这个HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8 << (num - 1), status ? GPIO_PIN_RESET: GPIO_PIN_SET);函数。

因为我们点亮的LED端口是PIN_8到PIN_15。 所以我们这里使用 <<操作符将GPIO_PIN_8 进行左移操作。 status标记LED灯的状态,当status为1时LED状态为GPIO_PIN_RESET点亮LED灯。 当status为0时LED状态为GPIO_PIN_SET关闭LED灯。

void Led_Set_Status(u8 num, u8 status)
{
	HAL_GPIO_WritePin(GPIOC,0xff00,GPIO_PIN_SET);//关闭全部LED
	
	HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);//打开锁存器
	HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);//关闭锁存器
	
	HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8 << (num - 1), status ? GPIO_PIN_RESET: GPIO_PIN_SET);
	
	HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);//打开锁存器
	HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);//关闭锁存器	
}

三、代码测试

首先包含我们编写好的头文件: 然后调用已经编写好的函数:

#include "led.h"

Led_Set_Status(4, 1);//控制第4个LED灯亮

Led_Set_Status(8, 1);//控制第8个LED灯亮

测试后代码没有BUG完美运行。

总结

本篇文章带大家封装了LED的操作函数,有了这个函数大家操作LED就非常方便啦。