历史上的今天
返回首页

历史上的今天

今天是:2025年03月29日(星期六)

2019年03月29日 | 嵌入式-stm32学习:按键检测

2019-03-29 来源:eefocus

bsp_key.h


#ifndef __KEY_H

#define __KEY_H


#include "stm32f4xx.h"


//引脚定义

/*******************************************************/

#define KEY1_PIN                  GPIO_Pin_0              //GPIO引脚号   

#define KEY1_GPIO_PORT            GPIOA                   //GPIO端口A   

#define KEY1_GPIO_CLK             RCC_AHB1Periph_GPIOA    //GPIO端口时钟


#define KEY2_PIN                  GPIO_Pin_13                 

#define KEY2_GPIO_PORT            GPIOC                      

#define KEY2_GPIO_CLK             RCC_AHB1Periph_GPIOC

/*******************************************************/


 /** 按键标置宏,

   * 按键按下高电平,KEY_ON=1,KEY_OFF=0,

   * 按键按下低电平,KEY_ON=0,KEY_OFF=1

    */

#define KEY_ON  1

#define KEY_OFF 0


void Key_GPIO_Config(void); //定义KEY-GPIO初始化配置函数

uint8_t Key_Scan(GPIO_TypeDef* GPIOx,u16 GPIO_Pin); //按键按下检测


#endif /* __LED_H */


bsp_key.c


#include "./key/bsp_key.h" 


/**

  * 配置按键用到的IO口

  */

void Key_GPIO_Config(void)

{

    GPIO_InitTypeDef GPIO_InitStructure;


  /*开启按键GPIO口时钟*/

    RCC_AHB1PeriphClockCmd(KEY1_GPIO_CLK|KEY2_GPIO_CLK,ENABLE);


  /*选择按键GPIO引脚*/

    GPIO_InitStructure.GPIO_Pin = KEY1_PIN; 


  /*设置GPIO引脚为输入模式*/

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; 


  /*设置引脚不上拉也不下拉*/

  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;


  /*使用上面配置的结构体GPIO_InitStructure初始化按键*/

    GPIO_Init(KEY1_GPIO_PORT, &GPIO_InitStructure);    


  /*选择按键GPIO引脚*/

    GPIO_InitStructure.GPIO_Pin = KEY2_PIN; 


  /*使用上面配置的结构体GPIO_InitStructure初始化按键*/

    GPIO_Init(KEY2_GPIO_PORT, &GPIO_InitStructure);  

}


/**

  * @brief      检测是否有按键按下     

  * @param  GPIOx:具体的端口(x=A,B...K)

  * @param  GPIO_PIN:具体的端口位(x=0...15)

  * @retval  按键状态

  *     @arg KEY_ON:按键按下

  *     @arg KEY_OFF:按键没按下

  */

uint8_t Key_Scan(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin) //按下返回KEY_ON,没按返回KEY_OFF

{           

    /*检测是否有按键按下*/

    if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON )  

    {    

        /*等待按键释放*/

        while(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON);   

        return  KEY_ON;  

    }

    else

        return KEY_OFF;

}

/*********************************************END OF FILE**********************/


推荐阅读

史海拾趣

BLACK&DECKER公司的发展小趣事

2010年3月15日,BLACK&DECKER迎来了公司历史上的一个重要时刻——与史丹利公司合并组建史丹利百得公司。这一合并不仅使BLACK&DECKER获得了更强大的资源和市场支持,还为其未来的发展提供了更广阔的空间。合并后的史丹利百得公司致力于提供整合的五金工具、存储设备和安防系统解决方案,以满足全球消费者的多样化需求。通过整合双方的优势资源和技术力量,史丹利百得公司有望在电子行业中取得更加辉煌的成就。

综上所述,BLACK&DECKER公司在电子行业中的发展故事充满了创新、进取和成功的元素。从创立初期的艰苦创业到如今的全球领先品牌,BLACK&DECKER凭借其卓越的产品质量、技术创新和市场拓展能力,赢得了消费者的信任和市场的认可。未来,随着科技的不断进步和市场需求的不断变化,BLACK&DECKER将继续保持创新精神,推动电子行业的持续发展。

HCH Co公司的发展小趣事

背景:面对日益激烈的市场竞争,HCH Co公司决定通过智能制造来提升生产效率和产品质量。公司引入先进的自动化生产线和智能物流系统,实现了从原材料采购到成品出库的全程智能化管理。

发展:智能制造的实施,不仅大幅提高了生产效率和产品良率,还降低了人力成本和运营风险。HCH Co公司因此能够在更短的时间内响应市场需求变化,推出更多符合消费者需求的高品质电子产品。同时,公司还通过智能制造的实践经验,为行业内的其他企业提供了可借鉴的转型路径。

Axiohm公司的发展小趣事

随着环保意识的日益增强,Axiohm公司积极响应国家绿色发展的号召,将环保理念融入产品设计和生产过程中。公司投入大量资金研发环保材料和生产工艺,成功推出了一系列绿色电子产品。这些产品不仅符合环保标准,还具有良好的性能价格比,受到了消费者的广泛好评。Axiohm因此赢得了业界的赞誉和政府的支持。

AAEON公司的发展小趣事

Axiohm公司最初是一家小型电子元件制造商,面对激烈的市场竞争,公司创始人李先生意识到唯有技术创新才能脱颖而出。他带领团队投入大量研发资源,成功开发出一种具有高性价比的新型半导体材料。这一创新不仅降低了生产成本,还提高了产品的性能稳定性,迅速赢得了市场的青睐。随着销量的不断增长,Axiohm逐渐在电子行业中崭露头角。

Capital Advanced Technologies公司的发展小趣事

品质管理是CAT发展的重要保障。公司建立了严格的质量管理体系,从原材料采购到产品制造、检验、包装等各个环节都进行严格的品质控制。CAT还注重与客户的沟通与协作,及时了解客户需求,为客户提供个性化的解决方案和优质的售后服务。这些举措使得CAT赢得了客户的广泛信赖和长期合作。

固得沃克(GOODWORK)公司的发展小趣事

在追求经济效益的同时,固得沃克也高度重视环境保护和社会责任。公司所有产品均通过了美国UL、SGS欧盟ROHS及REACH环保认证,确保产品符合国际环保标准。这一举措不仅提升了公司的品牌形象,也为公司拓展国际市场提供了有力支持。近年来,固得沃克的产品已广泛应用于汽车电子、新能源、绿色照明等多个领域,并远销海外多个国家和地区。

问答坊 | AI 解惑

[下载]电子设计1000例

美国国家半导体出品的电路设计参考软件,配有国半芯片应用的原理图和简单说明,是设计电路中极好的参考 英文版+汉化(菜单)的,有兴趣的同仁下了瞧一瞧,或许很有用哦 解压后双击文件中的ENCYC.EXE就打开了^_^ …

查看全部问答>

化镍浸金失宠的背景

ENIG兼具可焊接、可觸通、可打線,與可散熱等四種功能於一身,一向是各種密集組裝板類的寵兒,並早已成為其他表面處理所無法取代的地位。曾幾何時,當筆記型電腦之主機板與後起的電話手機板上,其BGA或CSP焊墊既多又小之際,ENIG即逐漸發生焊錫性的 ...…

查看全部问答>

智能家居经销商心理要素分析

前提要素:执着的信念     对于绝大多数经销商而言,目前的国内智能家居市场还处于一个待发展的态势,自身企业的盈利水平尚未处于高位,眼见安防、布线、照明等成熟行业商家经营顺风顺水的同时,自然不可避免的流露出几分羡慕之情,但比 ...…

查看全部问答>

急啊!单片机串口通信程序问题!

急啊!单片机串口通信程序问题! 编译没有通过,还没找出原因,请高手指点一下。 是不是程序结构有问题!请高手指点哈。在此谢谢大家啦! /************************************************************************************************* ...…

查看全部问答>

请教wince5.0系统定制问题

在定制wince5.0时,看了一些资料,有以下一段内容: (1)合并配置文件:所有的.BIB文件合并成CE.BIB。CE.BIB包含映像NK.BIN中的所有文件;所有.REG文件合并成REGINIT.INI;所有.DAT文件合并成INITOBJ.DAT;所有.DB文件合并成INITDB.INI。在修改配 ...…

查看全部问答>

不小心烧写了程序到仿真芯片上了....

买了个51的单片机学习板 不小心把配套的芯片烧了程序 芯片还可以仿真不? 有没程序可以写回去的?…

查看全部问答>

终于可以踏上回家的行程,我兴奋啊!祝福兄弟姐妹们新年快乐!全家幸福!

终于可以踏上回家的行程,我兴奋啊!祝福兄弟姐妹们新年快乐!全家幸福!…

查看全部问答>

关于调用Windows XP Tablet PC中的手写输入问题 请教高手

TabletPC中的手写输入路径为: \\Program Files\\Common Files\\Microsoft Shared\\ink\\TabTip.exe 系统运行是, 有一小图标在任务条上, 只有点小图标才打开手写输入界面, 在vc中, 如何去让激活手写输入? 如: 当程序进入某一界面时自动将手写输 ...…

查看全部问答>

数字电路的FPGA设计与实现基础篇

呵呵  最近做的数字电路的仿真,大家给点意见~~有助于我进一步的学习!…

查看全部问答>