历史上的今天
返回首页

历史上的今天

今天是:2025年06月21日(星期六)

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

2019-06-21 来源: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**********************/


推荐阅读

史海拾趣

FTDI公司的发展小趣事

FTDI公司(Future Technology Devices International)在电子行业中的发展充满了多个关键节点和故事,以下是五个相关故事,每个故事均基于事实描述:

1. 创立与早期发展

FTDI公司成立于1992年3月13日,由弗雷德·达特(Fred Dart)创立。起初,公司专注于为个人电脑市场提供服务,其首发产品是针对主板芯片组的解决方案。这些产品被成功应用于IBM的AMBRA和PS/2系列个人电脑上,为当时的计算机技术发展做出了贡献。这一时期的成功为FTDI奠定了坚实的基础,并展示了其在芯片设计领域的初步实力。

2. USB桥接芯片领域的崛起

随着计算机技术的快速发展,FTDI敏锐地捕捉到了USB接口技术的潜力。公司开始专注于USB桥接芯片的研发与生产,并逐渐在这一领域崭露头角。其MM232R和USB-COM232-PLUS1等接口产品因其出色的连接性和兼容性而广受好评。FTDI的USB桥接芯片广泛应用于汽车电子、IOT互联网、工业产品、医疗设备、新能源以及高端消费电子等多个领域,逐步确立了其在全球USB桥接芯片市场的领先地位。

3. 全球化布局与业务拓展

为了进一步扩大市场份额,FTDI积极实施全球化战略。公司在新加坡设立了业务运营总部,并在全球范围内建立了完善的销售和服务网络。这一布局不仅提升了FTDI在全球市场的竞争力,还为其带来了更多的商业机会。同时,FTDI不断拓展产品线,满足不同领域客户的需求,进一步巩固了其在USB桥接芯片领域的市场地位。

4. 并购与合作

在发展过程中,FTDI也通过并购与合作的方式不断壮大自身实力。例如,在2022年,FTDI被电连技术通过发行股份及支付现金的方式收购,成为电连技术的控股子公司。这次并购不仅为FTDI带来了更多的资金和资源支持,还为其未来的发展注入了新的动力。同时,FTDI也与其他行业巨头建立了广泛的合作关系,共同推动电子行业的发展。

5. 技术创新与市场引领

FTDI始终将技术创新作为公司发展的核心驱动力。公司不断投入研发资源,推出具有自主知识产权的新产品和技术解决方案。这些创新成果不仅提升了FTDI的产品竞争力,还为其在全球市场树立了良好的品牌形象。同时,FTDI还积极参与行业标准的制定和推广工作,致力于推动整个电子行业的技术进步和发展。

以上五个故事展示了FTDI公司在电子行业中的发展历程和关键节点。从创立初期的默默无闻到如今的全球领先企业,FTDI凭借其敏锐的市场洞察力、强大的技术实力和不懈的创新精神,在电子行业中书写了属于自己的辉煌篇章。

Deltron公司的发展小趣事

在竞争激烈的电子市场中,品质是Deltron公司的生命线。公司始终坚持以客户为中心,注重产品质量和服务的提升。通过严格的质量控制体系和完善的售后服务,Deltron赢得了客户的信任和好评。同时,公司还积极参与行业标准的制定和修订工作,推动行业向更高水平发展。

达晶微(CREATEK)公司的发展小趣事

随着市场需求的不断变化,达晶微不断加大研发投入,推出了一系列具有创新性的产品。这些产品不仅提高了能效,降低了成本,还满足了客户对高质量、高性能半导体器件的需求。公司凭借技术创新和产品升级,赢得了客户的广泛认可。

FTDI [Future Technology Devices International Ltd.]公司的发展小趣事

近年来,FTDI通过并购等方式不断拓展其业务范围。例如,电连技术通过发行股份及支付现金的方式收购了FTDI的部分股权,使FTDI成为其控股子公司。这一并购不仅为电连技术带来了FTDI在USB桥接芯片领域的领先技术,还促进了双方在产品、客户和销售渠道等方面的协同效应。同时,FTDI也借此机会进一步提升了其在新兴市场如汽车电子、物联网等领域的竞争力。

Hirschmann公司的发展小趣事
TC4013作为定时器的核心,通过接收外部触发信号(如时钟信号的上升沿)来控制定时器的置位和复位。它内部的JK触发器可以根据输入的信号状态(J、K、时钟信号等)来设置或重置其输出状态。
GAPTEC Electronic GmbH & Co. KG公司的发展小趣事

背景:随着全球对环保和可持续发展的重视,Galaxy Microelectronics也开始关注其生产过程中的环保问题。

发展:公司投入巨资建设绿色工厂,采用先进的环保技术和设备,减少生产过程中的能源消耗和废弃物排放。同时,Galaxy Microelectronics还积极推广环保理念,与供应商和客户共同构建绿色供应链。这些举措不仅提升了公司的社会形象,还为其在竞争激烈的市场中赢得了更多客户的青睐。

问答坊 | AI 解惑

升级LS-CHL v1的固件到1.21

LS-CHL有两个版本,外观应该一样 v1 cpu:88F5182 266Mhz ram:128M v2 cpu:88F6281 600MHz ram:64M 它们的固件是不一样的 在buffalo官方下载页面上 LS-CHL的固件有两个 LS-CHL系列,版本号1.07,支持Windows操作系统,仅适用于1.07以前版本机器 ...…

查看全部问答>

为了感谢大家对论坛的支持,想自己做些东西送给网友

因为离春节的时间也不长了,所以不打算做复杂的东西,想做个USB接口的51单片机仿真器。这个工具对单片机初学者比较有用,在调试一些小的程序时可以直接在KEIL里面进行硬件调试,查看定义的变量值。但调试比较大的代码可能会出现一些与实际结果不一致 ...…

查看全部问答>

求救!evc串口收发数据问题

写入串口程序:         int len = 8        ;                         /* 取得输入字符串长度 */       &nbs ...…

查看全部问答>

大家帮忙看下哈!!!

使用单晶硅作为CPU核心材质存在的问题,未来将使用什么取而代之 呢???…

查看全部问答>

DSP ARM

请问大家有DSP  ARM相关的参考资料吗…

查看全部问答>

学习单片机

学习单片机,最好还是先从学汇编语言开始,那样能更好地理解计算机。 然后,再用C语言做开发。那样进度会快很多。…

查看全部问答>

工控机pc104接口通信的问题

大家谁知道用工控机pc104接口与自制的脉冲采样板通信,怎样用程序控制,要用什么协议吗,有没有可用的控件。 …

查看全部问答>

2000元:一个wince5.0下运行的软件,要读取界面数据+修改功能+去掉序列号

2000元:一个wince5.0下运行的软件,要读取界面数据+修改功能+去掉序列号 QQ271937025 13727859861…

查看全部问答>

求检查msp430f5438捕获测频率哪里错了!如果能给分我全给你!

#include #include \"LCD_12864.h\" #include \"CLOCK.h\" unsigned int start,end; unsigned char overflow,flag; unsigned long gao,di; int main( void ) {   // Stop watchdog timer to prevent time out reset  &nbs ...…

查看全部问答>

第13章 精灵进程

13.1   引言 31213.2   精灵进程的特征 31213.3   编程规则 31313.4   出错记录 31413.4.1   SVR4流log驱动程序 31513.4.2   4.3+BSD syslog设施 3161 ...…

查看全部问答>