STM32F407入门开发: GPIO口输入配置

描述

第一章 F407建工程所需依赖文件

配置配置配置配置配置配置

第二章 新建工程

配置配置配置配置配置配置配置配置配置配置配置

第三章 分析 KEY 按键硬件原理图

配置配置配置

第四章 编写 KEY 按键驱动代码

查看数据手册:

配置配置

key.c文件代码如下:


#include "key.h"
/*
函数功能:按键初始化配置
硬件连接:
KEY0 --->PE4  按下为低电平
KEY1 --->PE3  按下为低电平
KEY2 --->PE2  按下为低电平
KEY_UP-->PA0  按下为高电平
*/
void KEY_Init(void)
{
	/*1. 开时钟*/
	RCC->AHB1ENR|=1<<0;//使能PORTA时钟
	RCC->AHB1ENR|=1<<4;//使能PORTE时钟

	/*2. 配置GPIO口模式*/
	GPIOE->MODER&=~(0x3<<2*2); //清除模式
	GPIOE->MODER|=0x0<<2*2;    //配置输入模式

	GPIOE->MODER&=~(0x3<<3*2); //清除模式
	GPIOE->MODER|=0x0<<3*2;    //配置输入模式

	GPIOE->MODER&=~(0x3<<4*2); //清除模式
	GPIOE->MODER|=0x0<<4*2;    //配置输入模式

	GPIOA->MODER&=~(0x3<<0*2); //清除模式
	GPIOA->MODER|=0x0<<0*2;    //配置输入模式
		
	/*3. 配置GPIO口上下拉模式*/
	GPIOE->PUPDR&=~(0x3<<2*2); //清除之前配置
	GPIOE->PUPDR|=0x1<<2*2;    //配置上拉

	GPIOE->PUPDR&=~(0x3<<3*2); //清除之前配置
	GPIOE->PUPDR|=0x1<<3*2;    //配置上拉

	GPIOE->PUPDR&=~(0x3<<4*2); //清除之前配置
	GPIOE->PUPDR|=0x1<<4*2;    //配置上拉

	GPIOA->PUPDR&=~(0x3<<0*2); //清除之前配置
	GPIOA->PUPDR|=0x2<<0*2;    //配置下拉
}


/*
函数功能:扫描按键
函数参数:扫描的模式。1表示连续检测、0只能检测单个按键
返 回 值:按下的按键值1、2、3、4
	  返回0表示按键没有按下
*/
u8 ScanKeyVal(u8 mode)
{
	static u8 stat=0; //保存按键按下的状态
	if(mode)stat=0;   //手动清除按键按下标志
	if((KEY_UP||KEY0==0||KEY1==0||KEY2==0)&&stat==0)
	{
		stat=1;      //标记按键已经按下了
		DelayMs(20); //延时消抖
		if(KEY_UP) return 4;
		if(KEY0==0)return 1;
		if(KEY1==0)return 2;
		if(KEY2==0)return 3;
	}
	else
	{
		 if(KEY_UP==0&&KEY0&&KEY1&&KEY2)stat=0; //清除按键按下标志
	}
	return 0;
}
复制代码

key.h代码如下

#ifndef _KEY_H
#define _KEY_H
#include "stm32f4xx.h"
#include "delay.h"
void KEY_Init(void);
u8 ScanKeyVal(u8 mode);
#define KEY0  (!!(GPIOE->IDR&1<<4))
#define KEY1  (!!(GPIOE->IDR&1<<3))
#define KEY2  (!!(GPIOE->IDR&1<<2))
#define KEY_UP (!!(GPIOA->IDR&1<<0))
#endif
复制代码

Main.c代码如下


#include "stm32f4xx.h" // Device header
#include "led.h"
#include "delay.h"
#include "key.h"

int main(void)
{
	u8 key,i;
	LED_Init();
	KEY_Init();
	while(1)
	{
		 key=ScanKeyVal(0);
		 if(key)
		 {
			i=!i;
			LED0(i);
			LED1(i);
			BEEP(i);
		 }
	}
}
复制代码

第五章 编译代码 配置下载

配置配置配置

审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

PE4 按下为低电平 KEY1 --->PE3 按下为低电平 KEY2 --->PE2 按下为低电平 KEY_UP-->PA0 按下">
×
20
完善资料,
赚取积分