点亮STM32最小系统板LED灯

对于如何点亮板载LED灯只需要掌握如何初始化GPIO引脚,并改变GPIO引脚的电平即可实现点亮或者熄灭LED。

cpp 复制代码
Led_INFO led_info = {0};

led_info 是一个结构体变量,类型为 Led_INFO,用于存储LED的状态信息。这里初始化为 {0},表示所有成员变量初始值为0。

cpp 复制代码
void Led_Init(void)
{

	GPIO_InitTypeDef gpio_initstruct;
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);		//打开GPIOB的时钟
	
	gpio_initstruct.GPIO_Mode = GPIO_Mode_Out_PP;				//设置为输出
	gpio_initstruct.GPIO_Pin = GPIO_Pin_13;						//将初始化的Pin脚
	gpio_initstruct.GPIO_Speed = GPIO_Speed_50MHz;				//可承载的最大频率
	
	GPIO_Init(GPIOC, &gpio_initstruct);							//初始化GPIO
	
	Led_Set(LED_OFF);											//初始化完成后,关闭蜂鸣器

}

函数功能:初始化LED的GPIO引脚。

具体步骤:

1定义一个 GPIO_InitTypeDef 结构体变量 gpio_initstruct,用于配置GPIO引脚的模式、引脚号、 速度等。

2使用 RCC_APB2PeriphClockCmd 函数使能GPIOC的时钟,因为LED连接在GPIOC的第13号引 脚上。

3配置 gpio_initstruct 结构体:

GPIO_Mode 设置为 GPIO_Mode_Out_PP,表示将引脚配置为推挽输出模式。

GPIO_Pin 设置为 GPIO_Pin_13,表示初始化GPIOC的第13号引脚。

GPIO_Speed 设置为 GPIO_Speed_50MHz,表示引脚的最大输出速度为50MHz。

4调用 GPIO_Init 函数,根据 gpio_initstruct 的配置初始化GPIOC的第13号引脚。

5调用 Led_Set(LED_OFF),将LED初始状态设置为关闭。

cpp 复制代码
void Led_Set(_Bool status)
{
	
	GPIO_WriteBit(GPIOC, GPIO_Pin_13, status == LED_ON ? Bit_RESET : Bit_SET);		//如果status等于Led_ON,则返回Bit_SET,否则返回Bit_RESET
	
	led_info.Led_Status = status;

}

函数功能:根据传入的参数控制LED的开关状态。

参数:status:一个布尔值,表示LED的状态。LED_ON 表示打开LED,LED_OFF 表示关闭LED。

具体步骤:

1使用 GPIO_WriteBit 函数设置GPIOC的第13号引脚的状态:

2如果 status 等于 LED_ON,则将引脚设置为 Bit_RESET(低电平),打开LED。

3如果 status 不等于 LED_ON,则将引脚设置为 Bit_SET(高电平),关闭LED。

4更新 led_info.Led_Status 为当前的 status,以便记录LED的状态。

cpp 复制代码
#include "stm32f10x.h"

//硬件驱动
#include "led.h"


Led_INFO led_info = {0};


/*
************************************************************
*	函数名称:	Led_Init
*
*	函数功能:	蜂鸣器初始化
*
*	入口参数:	无
*
*	返回参数:	无
*
*	说明:		
************************************************************
*/
void Led_Init(void)
{

	GPIO_InitTypeDef gpio_initstruct;
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);		//打开GPIOB的时钟
	
	gpio_initstruct.GPIO_Mode = GPIO_Mode_Out_PP;				//设置为输出
	gpio_initstruct.GPIO_Pin = GPIO_Pin_13;						//将初始化的Pin脚
	gpio_initstruct.GPIO_Speed = GPIO_Speed_50MHz;				//可承载的最大频率
	
	GPIO_Init(GPIOC, &gpio_initstruct);							//初始化GPIO
	
	Led_Set(LED_OFF);											//初始化完成后,关闭蜂鸣器

}

/*
************************************************************
*	函数名称:	Led_Set
*
*	函数功能:	蜂鸣器控制
*
*	入口参数:	status:开关蜂鸣器
*
*	返回参数:	无
*
*	说明:		开-Led_ON		关-Led_OFF
************************************************************
*/
void Led_Set(_Bool status)
{
	
	GPIO_WriteBit(GPIOC, GPIO_Pin_13, status == LED_ON ? Bit_RESET : Bit_SET);		//如果status等于Led_ON,则返回Bit_SET,否则返回Bit_RESET
	
	led_info.Led_Status = status;

}
cpp 复制代码
#ifndef _LED_H_
#define _LED_H_

typedef struct
{

	_Bool Led_Status;

} Led_INFO;

#define LED_ON		1

#define LED_OFF	0

extern Led_INFO led_info;


void Led_Init(void);

void Led_Set(_Bool status);


#endif
相关推荐
来自晴朗的明天25 分钟前
13、NMOS 电源防反接电路
单片机·嵌入式硬件·硬件工程
17(无规则自律)1 小时前
深入浅出 Linux 内核模块,写一个内核版的 Hello World
linux·arm开发·嵌入式硬件
芯岭技术1 小时前
PY32MD310单片机:高性能、低功耗的32位电机控制微控制器
单片机·嵌入式硬件
wotaifuzao2 小时前
STM32 + FreeRTOS 的订阅通知组件架构
stm32·嵌入式硬件·架构·freertos·事件驱动·嵌入式架构
小龙报3 小时前
【51单片机】深度解析 51 串口 UART:原理、配置、收发实现与工程化应用全总结
c语言·开发语言·c++·stm32·单片机·嵌入式硬件·51单片机
Lester_110110 小时前
STM32 高级定时器PWM互补输出模式--如果没有死区,突然关闭PWM有产生瞬间导通的可能吗
stm32·单片机·嵌入式硬件·嵌入式软件
小李独爱秋11 小时前
“bootmgr is compressed”错误:根源、笔记本与台式机差异化解决方案深度指南
运维·stm32·单片机·嵌入式硬件·文件系统·电脑故障
梁洪飞13 小时前
内核的schedule和SMP多核处理器启动协议
linux·arm开发·嵌入式硬件·arm
进击的小头14 小时前
实战案例:51单片机低功耗场景下的简易滤波实现
c语言·单片机·算法·51单片机
宵时待雨17 小时前
STM32笔记归纳8:时钟
笔记·stm32·单片机·嵌入式硬件