历史上的今天
返回首页

历史上的今天

今天是:2025年02月12日(星期三)

正在发生

2019年02月12日 | 【stm32f407】轮序方式的按键应用

2019-02-12 来源:eefocus

1.    硬件原理图:


可以看到user button是PA0


2.    程序步骤

1)    使能按键对应IO口时钟。


PA0在AHB1总线上


调用函数:RCC_AHB1PeriphClockCmd ();


2)    初始化IO模式:上拉/下拉输入。


3)    扫描IO口电平


3.    程序原码

key.h


 #ifndef _KEY_H_H_H

#define _KEY_H_H_H

 

#include "stm32f4xx_gpio.h"

#include "stm32f4xx_rcc.h"

 

#define KEY_ON  0

#define KEY_OFF 1

void KEY_Init(void);

uint8_t KEY_Scan(void);

#endif

key.c


 #include "key.h"

 

void delay_ms(u16 time)   

{  

  u16 i=0;  

  while(time--)   

  {  

    i=12000;  

    while(i--);  

  }  

 

void KEY_Init(void)

  GPIO_InitTypeDef GPIO_InitStruct;

  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);

  GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;

  GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;

  GPIO_InitStruct.GPIO_PuPd=GPIO_PuPd_DOWN;  

  GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;

  GPIO_Init(GPIOD,&GPIO_InitStruct);

}

uint8_t KEY_Scan(void)

{

  if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0) == KEY_ON)

  {

    delay_ms(5);

    if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0) == KEY_ON)

    {

      while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0) == KEY_ON);

      return KEY_ON;

    }

    else

    {

      return KEY_OFF;

    }

  }

  return KEY_OFF;

}

main.c



#include "led.h"

#include "key.h"

 

void User_Delay(__IO uint32_t nCount)

{

  while(nCount--)

  {

  }

}

static int count = 0;

int main(void)

{

   LED_Init();

   KEY_Init();

   while(1)

   {

    if(KEY_Scan() == KEY_ON)

    {

      if((count++)%2 == 0)

      {

        LED_Operate(LED_RED,LED_ON);

      }

      else

      {

        LED_Operate(LED_RED,LED_OFF);

      }

    }

   }

   

}



推荐阅读

史海拾趣

Fedco_Batteries公司的发展小趣事

随着公司业务的不断拓展,Fedco_Batteries始终将产品质量放在首位。公司引进了先进的生产设备和检测设备,建立了严格的质量管理体系。每一块电池在出厂前都要经过多道严格的质量检测,确保产品的稳定性和可靠性。这种对品质的坚持,让Fedco_Batteries的电池在市场上赢得了良好的口碑,越来越多的客户选择了他们的产品。

Baumer Electric Ag公司的发展小趣事

随着公司规模的不断扩大和市场竞争的加剧,Baumer Electric Ag开始实施国际化战略。1979年,公司加大了出口力度,积极开拓海外市场。1980年,堡盟在法兰克福成立了堡盟电气有限公司,进一步扩大了在欧洲市场的影响力。此后,公司陆续在全球各地设立子公司和分支机构,形成了覆盖全球的销售和服务网络。

DEWALT公司的发展小趣事

在第二次世界大战期间,DEWALT公司面临了巨大的挑战。由于战争的影响,许多原材料和零部件供应中断,生产受到严重影响。然而,DEWALT公司凭借自身的技术实力和创新能力,成功克服了这些困难。公司还积极为军队提供所需的电动工具产品,为战争胜利做出了贡献。这些经历使DEWALT公司更加坚定了技术创新和品质控制的信念。

Chicago Miniature公司的发展小趣事

1931年,Chicago Miniature Lamp(CML)在美国创立,初始阶段,公司面临着资金短缺、市场竞争激烈等诸多挑战。然而,创始人凭借对光电技术的深刻理解和对市场的敏锐洞察,坚信微型照明有着巨大的发展潜力。他们不断研发新型微型照明产品,逐渐在市场中站稳脚跟。公司初期虽然规模较小,但产品质量可靠,逐渐获得了客户的认可。

启攀微(CHIPHOM)公司的发展小趣事

作为一家具有社会责任感的企业,启攀微电子(CHIPHOM)始终关注环境保护和社会公益事业。公司积极响应国家节能减排的号召,采用环保材料和节能技术生产产品。同时,公司还积极参与社会公益活动,捐款捐物支持灾区重建、资助贫困学生等。通过践行社会责任,启攀微电子(CHIPHOM)不仅提升了企业的社会形象,也为社会进步做出了积极贡献。

以上5个故事仅代表启攀微电子(CHIPHOM)在电子行业中发展起来的一些可能情景和方面,实际情况可能有所不同。如需更多准确信息,请查阅相关官方资料或联系公司相关人员。

峰岹(Fortior Tech )公司的发展小趣事

作为一家具有社会责任感的企业,启攀微电子(CHIPHOM)始终关注环境保护和社会公益事业。公司积极响应国家节能减排的号召,采用环保材料和节能技术生产产品。同时,公司还积极参与社会公益活动,捐款捐物支持灾区重建、资助贫困学生等。通过践行社会责任,启攀微电子(CHIPHOM)不仅提升了企业的社会形象,也为社会进步做出了积极贡献。

以上5个故事仅代表启攀微电子(CHIPHOM)在电子行业中发展起来的一些可能情景和方面,实际情况可能有所不同。如需更多准确信息,请查阅相关官方资料或联系公司相关人员。

问答坊 | AI 解惑

用光盘制作无线路由器天线

看看老外(我看那手像是老外:))是怎样制作无线路由器天线。 刻录光盘盒用完了就没什么用了,我们可以利用它来制作一个10dB无线AP定向天线。看图学习制作 http://www.dz3w.com 图片比较多,可以到http://www.dz3w.com/diycn/musicradio/501 ...…

查看全部问答>

電解電容爆裂!

請教各位 電解電容爆裂,除了受高壓導致,還有其他什麽因素會導致? 另外電解電容得頂部有“人”或”+“的凹槽樣,是有什麽作用的? 謝謝…

查看全部问答>

如果你是版主,对于和本版块无关的帖子,你会怎么处理?

希望大家都能参与,因为这只是一个关于论坛管理的一个小调查。…

查看全部问答>

WIFE不能记住登录过的网络和密码

我现在的WIFE登录后,重新开机发现不能记住上次我成功登录的网络,密码也不会记,用户使用起来很麻烦。 我也看到别人的机器上能够保存,我找了一下,好象是在PUBLIC下面的NETUI里面实现的,不知道哪位仁兄做过,赐教一下 或是微软有更新过这里, ...…

查看全部问答>

[在线讨论]wince下能否支持JavaScript?

如题,var myTextField=document.getElementById(\"myText\"); 这个没法实现。要是能实现该如何做? 看了yudong54的回帖(http://topic.eeworld.net/u/20091116/14/1b2cc357-3aea-4329-b527-ab7828142f8f.html?26416)说要打08年的补丁和09年一月 ...…

查看全部问答>

VxWorks下的打印机并口问题

大家好. 我碰到了一个vxworks中打印机方面的问题.我的目标机是pc486, TornadoV2.02, 24针老式打印机EPSON LQ-1600K,用telnet 进行连接调试.BUILD中包含了并口组件.现在我想要让打印机打出一些测试文字,然后我写了一小段代码 ******************** ...…

查看全部问答>

承接电子设计(单片机)项目

承接电子设计(单片机)项目 (一)、PCB LAYOUT(2层 or 4层) 老牛承接专业抄板、画板,质优价廉,可每天查看画板进度,有问题及时沟通。 可加我QQ看画过的样板,因为老牛是个人接活,所以价钱肯定比抄板公司低,希望各位同行有活之余多多照顾。 ...…

查看全部问答>

飞思卡尔底盘与安全微控制器

ftf上一个突出的主题就是汽车电子,而汽车安全自然是一个重要的问题,飞思卡尔提供了完整的解决方案…

查看全部问答>

几个工程师讨论没解决???STM8S

reg=get_datas_bit(7654321,6); 该函数在main下掉用,返回的reg=6; 但从子函数中经过1个if,2个switch后掉用后返回的reg=0; 函数如下: u8 get_datas_bit(u32 datain,u8 sp) {        u8 i,value;     &nb ...…

查看全部问答>