STM32单片机基础之GPIO输入

本文介绍了一个基于STM32的简单应用,通过main.c、key.c和key.h文件实现了按键控制LED的功能。当KEY0或KEY1被按下时,对应的LED灯状态会取反。然而,目前实现存在不准的问题,需要进一步优化延迟和中断处理以提高响应准确性。
摘要由CSDN通过智能技术生成

说明:

        这里说明一下,STM32有很多文件,我这里上传的只是部分配置文件,不是所有的文件。

代码:

main.c文件

#include "system.h"
#include "SysTick.h"
#include "led.h"
#include "key.h"


int main()
{
	SysTick_Init(72);
	LED_Init();
	KEY_Init();
	
	while(1)
	{
			if(KEY0==0)
			{
					delay_ms(10);
					if(KEY0==0)
					{
							while(KEY0!=0);
							LED1=!LED1;
					}
			}
			if(KEY1==0)
			{
					delay_ms(10);
					if(KEY1==0)
					{
							while(KEY1!=0);
							LED2=!LED2;
					}
			}
	}
}
key.c文件

#include "key.h"
#include "SysTick.h"

/*******************************************************************************
* 函 数 名         : KEY_Init
* 函数功能		   : 按键初始化
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void KEY_Init(void)
{
	GPIO_InitTypeDef GPIO_InitStructure; 										//定义结构体变量	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOE,ENABLE);	//开启外设时钟
		
	GPIO_InitStructure.GPIO_Pin=KEY0_PIN|KEY1_PIN;	//定义了三个引脚
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;							//上拉输入
	GPIO_Init(KEY_PORT,&GPIO_InitStructure);
}



key.h文件

#ifndef _key_H
#define _key_H


#include "system.h"
 
#define KEY0_PIN   			GPIO_Pin_4    	//定义KEY0管脚
#define KEY1_PIN    		GPIO_Pin_3    	//定义KEY1管脚

#define KEY_PORT 			GPIOE 		//定义端口
#define KEY_UP_PORT 		GPIOA 		//定义端口

//使用位操作定义

#define KEY0 	PEin(4)
#define KEY1 	PEin(3)
 
void KEY_Init(void);

#endif

运行结果:

按键按一下LED取反一下。但是效果不是特别的好,不是特别的准,下次看看怎么改进。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值