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 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 使用固件库点亮LED灯(GPIO输出) -> 正文阅读

[嵌入式]使用固件库点亮LED灯(GPIO输出)

原理

LED 灯的阴极都是连接到STM32 的GPIO 引脚,只要我们控制GPIO 引脚的电平输出状态,
即可控制LED 灯的亮灭。若使用的实验板LED 灯的连接方式或引脚不一样,只需根据
工程修改引脚即可,程序的控制原理相同。

硬件设计

软件设计

led.h

#ifndef __LED_H
#define	__LED_H
#include "led.h"
#include "sys.h"

#define LED1 PBout(5)// PB5
#define LED2 PBout(0)// PB0
#define LED3 PBout(1)// PB1	

#define ON  1
#define OFF 0


///* 基本混色,后面高级用法使用PWM可混出全彩颜色,且效果更好 */
//红
#define LED_RED \
{LED1=0; \
LED2=1; \
LED3=1;} \

//绿
#define LED_GREEN \
{LED1=1; \
LED2=0; \
LED3=1;}  

//蓝
#define LED_BLUE \
 LED1=1; \
 LED2=1; \
 LED3=0

//黄(红+绿)					
#define LED_YELLOW	\
					LED1=0;\
					LED2=0; \
					LED3=1
//紫(红+蓝)
#define LED_PURPLE	\
					LED1=0;\
					LED2=1; \
					LED3=0

//青(绿+蓝)
#define LED_CYAN \
					LED1=1;\
					LED2=0 ;\
					LED3=0
					
//白(红+绿+蓝)
#define LED_WHITE	\
					LED1=0;\
					LED2=0; \
					LED3=0
					
//黑(全部关闭)
#define LED_RGBOFF	\
					LED1=1;\
					LED2=1 ;\
					LED3=1



void LED_Init(void);

#endif /* __LED_H */

?led.c

#include "led.h"
#include "stm32f10x.h"


//初始化PB5和PE5为输出口.并使能这两个口的时钟		    
//LED IO初始化
void LED_Init(void)
{		
		
		GPIO_InitTypeDef GPIO_InitStructure;                   //定义一个GPIO_InitTypeDef类型的结构体
		
		RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE);            //开启LED相关的GPIO外设时钟
		
	
		GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_0|GPIO_Pin_1;	  //选择要控制的GPIO引脚
		GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //设置引脚模式为通用推挽输出
		GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 //设置引脚速率为50MHz 	
		GPIO_Init(GPIOB, &GPIO_InitStructure);	                          //调用库函数,初始化GPIO
		

		/* 关闭所有led灯	*/
		GPIO_SetBits(GPIOB, GPIO_Pin_5);
		GPIO_SetBits(GPIOB, GPIO_Pin_0);	 
		GPIO_SetBits(GPIOB, GPIO_Pin_1);
}

main.c

#include "stm32f10x.h"
#include "led.h"

#define SOFT_DELAY Delay(0x0FFFFF);

void Delay(__IO u32 nCount); 


int main(void)
{	
	/* LED 端口初始化 */
	LED_Init();	 

	while (1)
	{
		LED1=0;
		LED1=0;			  // 亮
		SOFT_DELAY;
		LED1=1;		   // 灭

		LED2=1;			 // 亮
		SOFT_DELAY;
		LED2=1;		   // 灭

		LED3=0;			 // 亮
		SOFT_DELAY;
		LED3=1;		   // 灭	 

		/*轮流显示 红绿蓝黄紫青白 颜色*/
		LED_RED;
		SOFT_DELAY;
		
		
		LED_GREEN;
		SOFT_DELAY;
		
		LED_BLUE;
		SOFT_DELAY;
		
		LED_YELLOW;
		SOFT_DELAY;
		
		
		LED_GREEN;
		SOFT_DELAY;
		
		LED_BLUE;
		SOFT_DELAY;
		
		LED_YELLOW;
		SOFT_DELAY;
		
		LED_PURPLE;
		SOFT_DELAY;
				
		LED_CYAN;
		SOFT_DELAY;
		
		LED_WHITE;
		SOFT_DELAY;
		
		LED_RGBOFF;
		SOFT_DELAY;		
	}
}

void Delay(__IO uint32_t nCount)	 //简单的延时函数
{
	for(; nCount != 0; nCount--);
}

输出型:

就是我们主动去调用的控制函数,比如说控制LED灯去亮和灭,控制蜂鸣器响和不响,控制LCD显示,控制继电器吸合和断开。

输入型:

输入型函数一般是用在不同.c文件/不同层(硬件层、应用层)之间传递信号和数据的,比如说按键检测、串口数据。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-10-12 23:37:07  更:2021-10-12 23:37:15 
 
开发: 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 5:55:46-

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