• 方案介紹
    • 【1】F407建工程所需依賴文件
    • 【2】新建工程
    • 【3】分析KEY按鍵硬件原理圖
    • 【4】編寫KEY按鍵驅(qū)動代碼
    • 【5】編譯代碼 配置下載
  • 附件下載
  • 相關推薦
申請入駐 產(chǎn)業(yè)圖譜

STM32F407 GPIO口輸入配置配置步驟

03/28 08:38
766
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

更多詳細資料請聯(lián)系.docx

共1個文件

介紹STM32F407新建寄存器工程流程,介紹輸入模式的配置方式,以按鍵為例完成按鍵輸入檢測。

【1】F407建工程所需依賴文件

img

img

img

img

img

img

【2】新建工程

img

img

img

img

img

img

img

img

img

img

img

【3】分析KEY按鍵硬件原理圖

img

img

img

【4】編寫KEY按鍵驅(qū)動代碼

查看數(shù)據(jù)手冊:

img

img

key.c文件代碼如下:

#include "key.h"
/*
函數(shù)功能:按鍵初始化配置
硬件連接:
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;    //配置下拉
}


/*
函數(shù)功能:掃描按鍵
函數(shù)參數(shù):掃描的模式。1表示連續(xù)檢測、0只能檢測單個按鍵
返 回 值:按下的按鍵值1、2、3、4
          返回0表示按鍵沒有按下
*/
u8 ScanKeyVal(u8 mode)
{
		static u8 stat=0; //保存按鍵按下的狀態(tài)
		if(mode)stat=0;   //手動清除按鍵按下標志
		if((KEY_UP||KEY0==0||KEY1==0||KEY2==0)&&stat==0)
		{
				stat=1;      //標記按鍵已經(jīng)按下了
				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);
			 }
		}
}

【5】編譯代碼 配置下載

img

img

img

  • 更多詳細資料請聯(lián)系.docx
    下載
意法半導體

意法半導體

意法半導體(ST)集團于1987年6月成立,是由意大利的SGS微電子公司和法國Thomson半導體公司合并而成。1998年5月,SGS-THOMSON Microelectronics將公司名稱改為意法半導體有限公司。意法半導體是世界最大的半導體公司之一,公司銷售收入在半導體工業(yè)五大高速增長市場之間分布均衡(五大市場占2007年銷售收入的百分比):通信(35%),消費(17%),計算機(16%),汽車(16%),工業(yè)(16%)。 據(jù)最新的工業(yè)統(tǒng)計數(shù)據(jù),意法半導體是全球第五大半導體廠商,在很多市場居世界領先水平。例如,意法半導體是世界第一大專用模擬芯片和電源轉(zhuǎn)換芯片制造商,世界第一大工業(yè)半導體和機頂盒芯片供應商,而且在分立器件、手機相機模塊和車用集成電路領域居世界前列.

意法半導體(ST)集團于1987年6月成立,是由意大利的SGS微電子公司和法國Thomson半導體公司合并而成。1998年5月,SGS-THOMSON Microelectronics將公司名稱改為意法半導體有限公司。意法半導體是世界最大的半導體公司之一,公司銷售收入在半導體工業(yè)五大高速增長市場之間分布均衡(五大市場占2007年銷售收入的百分比):通信(35%),消費(17%),計算機(16%),汽車(16%),工業(yè)(16%)。 據(jù)最新的工業(yè)統(tǒng)計數(shù)據(jù),意法半導體是全球第五大半導體廠商,在很多市場居世界領先水平。例如,意法半導體是世界第一大專用模擬芯片和電源轉(zhuǎn)換芯片制造商,世界第一大工業(yè)半導體和機頂盒芯片供應商,而且在分立器件、手機相機模塊和車用集成電路領域居世界前列.收起

查看更多

相關推薦