IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> ESP32+TFTLCD实现WiFi天气语音播报(二) -> 正文阅读

[嵌入式]ESP32+TFTLCD实现WiFi天气语音播报(二)

ESP32实现点亮led灯


前言

点亮一个LED灯虽然简单,但代表的意义不一样,都说程序员入门第一个项目是“hello world”,但在嵌入式方面程序员的第一个项目是点亮led灯,接下来就一起点亮第一盏led灯。


一、如何点亮

1、通用输入/输出(GPIO)

在点亮led之前先来了解一下通用输入/输出(GPIO)
GPIO 驱动可以用作多个用途,包括管脚设置,单位设置/重置,锁定机制,从端口管脚读入或者向端口管脚写入数据。

GPIO的工作模式:
输入:
浮空输入:在空闲状态下,输入高/低电平,GPIO_Mode_IN_FLOATING 浮空输入
上拉输入:在空闲状态下,输入高电平,GPIO_Mode_IPU 上拉输入
下拉输入:在空闲状态下,输入低电平,GPIO_Mode_IPD 下拉输入
模拟输入:输入的是模拟量 ADC,GPIO_Mode_AIN 模拟输入
输出:
推挽输出:高低电平都可输出,GPIO_Mode_Out_PP 推挽输出
开漏输出:只能输出低电平 (要得到高电平状态需要外接上拉电阻),GPIO_Mode_Out_OD 开漏输出
复用推挽:GPIO_Mode_AF_PP 复用推挽输出
复用开漏:GPIO_Mode_AF_OD 复用开漏输出
在这里给大家几个对学习stm32系列有实用的资料
链接:https://pan.baidu.com/s/1MTTv7eE0YStBRTwcGKBJwg
提取码:lwm2

2、LED工作原理

先来了解led的原理图
在这里插入图片描述
可以看出只要给输出一个低电平就可以将led点亮,高电平熄灭。
而通用输入/输出(GPIO)控制电平输入输出,换言之让控制led的GPIO口输出高电平,led灯就可以点亮。
查看开发板原理图,确定需要控制的LED灯位于哪个引脚
在这里插入图片描述
可以看到四个LED灯的引脚依次为PE2~PE5,在确定引脚的工作方式,这里是推免输出

二、开始实现

1、点亮LED灯

1.1定义函数

在.c文件里面定义函数写函数的主题,在.h文件里面声明函数。

代码如下:

#include "led.h"

//led初始化
void Led_Config(void)
{
	//1.开时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);
	
	//2.配置端口
	GPIO_InitTypeDef GPIO_InitStructure;//定义结构体变量 
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;//引脚 
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//速度 
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出模式 
	GPIO_Init(GPIOE, &GPIO_InitStructure);//初始化GPIO
}


//led应用函数
void LED1(int flag)
{
	if(flag==1)
	{
		//开  低电平
		GPIO_ResetBits(GPIOE, GPIO_Pin_2);
	}
	else if(flag==0)
	{
		//关  高电平
		GPIO_SetBits(GPIOE, GPIO_Pin_2);
	}
}

//led应用函数
void LED2(int flag)
{
	if(flag==1)
	{
		//开  低电平
		GPIO_ResetBits(GPIOE, GPIO_Pin_3);
	}
	else if(flag==0)
	{
		//关  高电平
		GPIO_SetBits(GPIOE, GPIO_Pin_3);
	}
}

//led应用函数
void LED3(int flag)
{
	if(flag==1)
	{
		//开  低电平
		GPIO_ResetBits(GPIOE, GPIO_Pin_4);
	}
	else if(flag==0)
	{
		//关  高电平
		GPIO_SetBits(GPIOE, GPIO_Pin_4);
	}
}

//led应用函数
void LED4(int flag)
{
	if(flag==1)
	{
		//开  低电平
		GPIO_ResetBits(GPIOE, GPIO_Pin_5);
	}
	else if(flag==0)
	{
		//关  高电平
		GPIO_SetBits(GPIOE, GPIO_Pin_5);
	}
}

在这里用了比较简单的选择语句来控制led的亮灭,当定义的的变量flag=1,打开引脚,GPIO输出低电平,led灯亮;反之,当定义的的变量flag=0,关闭引脚,GPIO输出高电平,led灯灭。


1.2函数声明

代码如下(示例):

#ifndef __LED_H
#define __LED_H

#include "stm32f10x.h"

void Led_Config(void);
void LED1(int flag);
void LED2(int flag);
void LED3(int flag);
void LED4(int flag);
#endif

注:.h文件定义时#endif要前后空一行(没有报错的话就不用空)


1.3主函数

#include "main.h"
#include "delay.h"
#include "led.h"

int main(void)
{
	JTAG_SWD_Config();
	SysTick_Init(72000);//系统定时器初始化 1ms
	Led_Config();//led初始化
	
	LED1(1);
//	LED1(0);
	LED2(1);
	LED3(1);
	LED4(1);
	
	while(1)
	{	 
			
	}
}

void JTAG_SWD_Config(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
	GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);     //禁用JTAG		
}




2、实现流水灯

代码如下:

 //流水灯
        LED1(1);
		Delay_nms(300);
		
		LED1(0); 
		LED2(1);
		Delay_nms(300);
		
		LED2(0);
		LED3(1);
		Delay_nms(300);
		
		LED3(0);
		LED4(1);
		Delay_nms(300);
		
		LED4(0);

在点亮四盏灯的基础上可以很容易实现流水灯,只要在每盏灯点亮之后加上延时,点亮下一盏灯之前把上一盏灯熄灭就能实现流水灯效果。


总结

这篇文章介绍了怎样点亮LED灯并实现流水灯效果,我第一次点亮也是参考【STM32中文参考手册】和【STM32固件库使用手册的中文翻译版】,这些资料在前面的链接里都有,有需要可以自行下载。至于怎么实现跑马灯,呼吸灯这里就不再赘述了,大家可以自己摸索,自己摸索出来的最开心。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-11-14 21:52:49  更:2021-11-14 21:53:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:56:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码