0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32F407入門開發(fā): GPIO口輸入配置

DS小龍哥-嵌入式技術(shù) ? 來源:DS小龍哥-嵌入式技術(shù) ? 作者:DS小龍哥-嵌入式技 ? 2022-05-28 13:52 ? 次閱讀

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

image.pngimage.pngimage.pngimage.pngimage.pngimage.png

第二章 新建工程

image.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.png

第三章分析 KEY 按鍵硬件原理圖

image.pngimage.pngimage.png

第四章 編寫 KEY 按鍵驅(qū)動代碼

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

image.pngimage.png

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;
}
復(fù)制代碼

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
復(fù)制代碼

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);
		 }
	}
}
復(fù)制代碼

第五章 編譯代碼 配置下載

image.pngimage.pngimage.png

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1188

    瀏覽量

    51832
  • 配置
    +關(guān)注

    關(guān)注

    1

    文章

    187

    瀏覽量

    18340
  • STM32F407
    +關(guān)注

    關(guān)注

    15

    文章

    187

    瀏覽量

    29330
收藏 人收藏

    評論

    相關(guān)推薦

    STM32F407 GPIO輸入配置配置步驟

    介紹STM32F407新建寄存器工程流程,介紹輸入模式的配置方式,以按鍵為例完成按鍵輸入檢測。
    的頭像 發(fā)表于 07-06 14:28 ?2064次閱讀
    <b class='flag-5'>STM32F407</b> <b class='flag-5'>GPIO</b><b class='flag-5'>口</b><b class='flag-5'>輸入</b><b class='flag-5'>配置</b><b class='flag-5'>配置</b>步驟

    STM32F407 串口配置步驟

    介紹STM32F407配置步驟,完成串口的數(shù)據(jù)發(fā)送與接收、實現(xiàn)中斷接收,支持printf重定向。
    的頭像 發(fā)表于 07-06 14:29 ?2868次閱讀
    <b class='flag-5'>STM32F407</b> 串口<b class='flag-5'>配置</b>步驟

    STM32F407 位帶配置步驟

    介紹STM32F407位帶操作方法,設(shè)置寄存器的偏移量,實現(xiàn)按GPIO指定位進行讀寫操作,方便編程。
    的頭像 發(fā)表于 07-06 14:30 ?1161次閱讀
    <b class='flag-5'>STM32F407</b> 位帶<b class='flag-5'>配置</b>步驟

    stm32f407通信的代碼

    stm32f407通信的代碼 原理圖還有封裝 很清楚自己畫的
    發(fā)表于 03-21 17:22 ?0次下載

    STM32F407 UCOS III實驗

    STM32F407 UCOS III實驗,介紹基于STM32F407的UCOSIII實例,參考下
    發(fā)表于 09-22 14:08 ?81次下載

    STM32F407 開發(fā)板原理圖

    STM32F407 開發(fā)板原理圖
    發(fā)表于 09-22 16:12 ?393次下載
    <b class='flag-5'>STM32F407</b> <b class='flag-5'>開發(fā)</b>板原理圖

    STM32CubeMX 配置STM32F407 實現(xiàn)HAL庫延時微妙方案

    STM32CubeMX 配置STM32F407 實現(xiàn)HAL庫延時微妙方案
    發(fā)表于 11-24 20:51 ?20次下載
    <b class='flag-5'>STM32</b>CubeMX <b class='flag-5'>配置</b><b class='flag-5'>STM32F407</b> 實現(xiàn)HAL庫延時微妙方案

    [STM32]STM32F407系列教程之二,gpio輸入輸出實驗

    [STM32]STM32F407系列教程之二,gpio輸入輸出實驗
    發(fā)表于 11-29 14:06 ?19次下載
    [<b class='flag-5'>STM32</b>]<b class='flag-5'>STM32F407</b>系列教程之二,<b class='flag-5'>gpio</b><b class='flag-5'>輸入</b>輸出實驗

    STM32F407標準庫學(xué)習(xí)筆記-GPIO

    STM32F407標準庫學(xué)習(xí)筆記-GPIO頭文件 gpio.h枚舉-列舉同一寄存器的不同選項typedef enum{ GPIO_Low_Speed = 0x00, /*!
    發(fā)表于 11-29 15:51 ?46次下載
    <b class='flag-5'>STM32F407</b>標準庫學(xué)習(xí)筆記-<b class='flag-5'>GPIO</b>

    STM32F407的串口UART 基礎(chǔ)配置STM32CubeMX

    STM32F407的串口UART 基礎(chǔ)配置STM32CubeMX
    發(fā)表于 11-29 16:06 ?54次下載
    <b class='flag-5'>STM32F407</b>的串口UART 基礎(chǔ)<b class='flag-5'>配置</b><b class='flag-5'>STM32</b>CubeMX

    STM32F407開發(fā)板用戶手冊】第1章?? 初學(xué)STM32F407的準備工作

    STM32F407開發(fā)板用戶手冊】第1章?? 初學(xué)STM32F407的準備工作
    發(fā)表于 12-04 13:36 ?75次下載
    【<b class='flag-5'>STM32F407</b><b class='flag-5'>開發(fā)</b>板用戶手冊】第1章?? 初學(xué)<b class='flag-5'>STM32F407</b>的準備工作

    STM32F407開發(fā)板用戶手冊】第21章 STM32F407的NVIC中斷分組和配置(重要)

    STM32F407開發(fā)板用戶手冊】第21章 STM32F407的NVIC中斷分組和配置(重要)
    發(fā)表于 12-04 13:51 ?21次下載
    【<b class='flag-5'>STM32F407</b><b class='flag-5'>開發(fā)</b>板用戶手冊】第21章 <b class='flag-5'>STM32F407</b>的NVIC中斷分組和<b class='flag-5'>配置</b>(重要)

    STM32F407開發(fā)板用戶手冊】第19章 STM32F407GPIO應(yīng)用之按鍵FIFO

    STM32F407開發(fā)板用戶手冊】第19章 STM32F407GPIO應(yīng)用之按鍵FIFO
    發(fā)表于 12-05 15:21 ?39次下載
    【<b class='flag-5'>STM32F407</b><b class='flag-5'>開發(fā)</b>板用戶手冊】第19章 <b class='flag-5'>STM32F407</b>的<b class='flag-5'>GPIO</b>應(yīng)用之按鍵FIFO

    STM32F407入門開發(fā): 位帶操作

    STM32F407的位帶操作可以實現(xiàn)類似51單片機中寄存器的操作方法,操作GPIO代碼簡潔方便。 關(guān)于位段的操作在Cortex-M3M4權(quán)威指南里有詳細描述:
    的頭像 發(fā)表于 05-28 13:50 ?3567次閱讀
    <b class='flag-5'>STM32F407</b><b class='flag-5'>入門開發(fā)</b>: 位帶操作

    STM32F407入門開發(fā): 串口配置

    STM32F407 的串口資源非常豐富,功能也很強勁。 STM32F407 最多可提供 6 路串口,有分數(shù)波特率發(fā)生器、支持同步單線通信和半雙工單線通訊、支持 LIN、 支持調(diào)制解調(diào)器操作、 智能卡
    的頭像 發(fā)表于 05-28 13:51 ?1.1w次閱讀
    <b class='flag-5'>STM32F407</b><b class='flag-5'>入門開發(fā)</b>: 串口<b class='flag-5'>配置</b>