文档章节

stm32笔记:GPIO的的配置和操作(2)引脚输入之查询按键

 卤煮小鱼
发布于 2016/04/14 22:30
字数 204
阅读 119
收藏 1
点赞 1
评论 0


(1)将PB9管脚配置成输入模式

配置初始化代码


void KEY_GPIO_Config(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
  //GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  //输入模式时是不需要对输出速率进行配置的,及时配置也会被编译器忽略
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉输入
  GPIO_Init(GPIOB, &GPIO_InitStructure);
}
简单粗暴的使用方法



if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_9) == 0)  //检测USR键是否按下
    {
       Delay_ms(10);//延时 
      if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_9)==0)
       {
        while(GPIO_ReadInputBit(GPIOB,GPIO_Pin_9)==0);   GPIO_SetBits(GPIOC, GPIO_Pin_6);
       } }
else
    {
    
    }

温柔的做法


#define KEY_ON  0
#define KEY_OFF 1

u8 Key_Scan(GPIO_TypeDef* GPIOx,u16 GPIO_Pin)
{
  if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin)==KEY_ON)
  {
       Delay_ms(10);//延时 
      if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin)==KEY_ON)
       {
        while(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin)==KEY_ON);//等待释放
        return KEY_ON;
       }
       else
       {
        return KEY_OFF;
       }
    }
   else return KEY_OFF;
}











© 著作权归作者所有

共有 人打赏支持
粉丝 0
博文 15
码字总数 7973
作品 0
松江
使用STM32GPIO读取按键实现按键操作(STM32_08)

一、开发板按键设置 在"STM32-PZ6806L"开发板上除了复位按键外,还设计了4个按键,分别标为"UP"、"DOWN"、"LEFT"和"RIGHT",其电路如下: 根据电路连接得知KUP按键一端与GPIOA0连接,另一端通...

fanxp66 ⋅ 05/11 ⋅ 0

stm32的IO模式说明

一、推挽输出:可以输出高、低电平,连接数字器件;推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止。高低电平由IC的电源决定。 推挽电路是两个...

peng_258 ⋅ 2017/10/24 ⋅ 0

STM32GPIO外部中断总结

1 STM32中断分组 STM32 的每一个GPIO都能配置成一个外部中断触发源,这点也是 STM32 的强大之处。STM32 通过根据引脚的序号不同将众多中断触发源分成不同的组,比如:PA0,PB0,PC0,PD0,P...

dp29sym41zygndvf ⋅ 2017/12/17 ⋅ 0

端口的复用——基于STM32F767IGT6

基本概念: 在STM32中有很多内置外设,这些内置外设的操作也是通过140根GPIO引脚的,如果一个GPIO引脚复用为内置外设的功能,那么此时就叫做GPIO的功能复用: 例:串口1的发送和接收引脚可选...

u014663232 ⋅ 04/17 ⋅ 0

STM32学习笔记-点亮第一个led

首先感谢河北科技大学航模协会-能给我这样的学习机会-感谢那些带我们教我们的学长学姐们. 点亮第一个led灯之前要先大概了解一下单片机的工作方式并且有一定的编程基础,能看懂程序 单片机上有...

qq_18984151 ⋅ 03/18 ⋅ 0

STM32中GPIO的八种工作模式

每次做项目,针对硬件工程师给出的电路图,都需要选择不同的GPIO模式,没有深究,总是记不住。以下为记录的资料,方便之后查阅。 对于GPIO的配置种类有8种: (1)GPIOModeAIN 模拟输入 (2...

qq_34660409 ⋅ 05/05 ⋅ 0

使用STM32固件库函数操作控制LED灯

直接使用寄存器地址来进行STM32开发要对每一个寄存器的地址通过查找芯片手册,对每一个寄存器的各个位的含义也要查清楚,然后决定对那个地址的哪些位进行怎样的设置。这种编程效率低,程序的...

fanxp66 ⋅ 05/06 ⋅ 0

mdk5+cubeMx入门简介(点亮一个LED灯)

准备工作 安装mdk5以及cubeMx软件 cubeMx下载地址: https://www.stmcu.com.cn/Designresource/loaddesignresource/catcode/firmwaresoftware/procat/STM32?filterprocat=STM32&filterprotok......

weixin_41101375 ⋅ 04/12 ⋅ 0

STM32系统学习——EXTI(外部中断)

一、 EXTI 简介 EXTI(External interrupt/event controller)—外部中断/事件控制器,管理了控制器的 20个中断/事件线。每个中断/事件线都对应有一个边沿检测器,可以实现输入信号的上升沿检...

zxh1592000 ⋅ 05/11 ⋅ 0

STM32 GPIO口基本结构和工作方式

上拉是一个电阻接到电压,其实就是增强IO的驱动能力,下拉是一个电阻接到地,保证IO口是低电平。 以上所有内容为笔记整理,其中有部分内容来自网络文章,若有侵权,请告知,作者会删除。

huhaoxuan2010 ⋅ 05/25 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

RabbitMQ学习以及与Spring的集成(三)

本文介绍RabbitMQ与Spring的简单集成以及消息的发送和接收。 在RabbitMQ的Spring配置文件中,首先需要增加命名空间。 xmlns:rabbit="http://www.springframework.org/schema/rabbit" 其次是模...

onedotdot ⋅ 18分钟前 ⋅ 0

JAVA实现仿微信红包分配规则

最近过年发红包拜年成为一种新的潮流,作为程序猿对算法的好奇远远要大于对红包的好奇,这里介绍一种自己想到的一种随机红包分配策略,还请大家多多指教。 算法介绍 一、红包金额限制 对于微...

楠木楠 ⋅ 30分钟前 ⋅ 0

Python 数电表格格式化 xlutils xlwt xlrd的使用

需要安装 xlutils xlwt xlrd 格式化前 格式化后 代码 先copy读取的表格,然后按照一定的规则修改,将昵称中的学号提取出来替换昵称即可 from xlrd import open_workbookfrom xlutils.copy ...

阿豪boy ⋅ 今天 ⋅ 0

面试题:使用rand5()生成rand7()

前言 读研究生这3 年,思维与本科相比变化挺大的,这几年除了看论文、设计方案,更重要的是学会注重先思考、再实现,感觉更加成熟吧,不再像个小P孩,人年轻时总会心高气傲。有1 道面试题:给...

初雪之音 ⋅ 今天 ⋅ 0

Docker Toolbox Looks like something went wrong

Docker Toolbox 重新安装后提示错误:Looks like something went wrong in step ´Checking if machine default exists´ 控制面板-->程序与应用-->启用或关闭windows功能:找到Hyper-V,如果处......

随你疯 ⋅ 今天 ⋅ 0

Guacamole 远程桌面

本文将Apache的guacamole服务的部署和应用,http://guacamole.apache.org/doc/gug/ 该链接下有全部相关知识的英文文档,如果水平ok,可以去这里仔细查看。 一、简介 Apache Guacamole 是无客...

千里明月 ⋅ 今天 ⋅ 0

nagios 安装

Nagios简介:监控网络并排除网络故障的工具:nagios,Ntop,OpenVAS,OCS,OSSIM等开源监控工具。 可以实现对网络上的服务器进行全面的监控,包括服务(apache、mysql、ntp、ftp、disk、qmail和h...

寰宇01 ⋅ 今天 ⋅ 0

AngularDart注意事项

默认情况下创建Dart项目应出现以下列表: 有时会因为不知明的原因导致列表项缺失: 此时可以通过以下步骤解决: 1.创建项目涉及到的包:stagehand 2.执行pub global activate stagehand或pub...

scooplol ⋅ 今天 ⋅ 0

Java Web如何操作Cookie的添加修改和删除

创建Cookie对象 Cookie cookie = new Cookie("id", "1"); 修改Cookie值 cookie.setValue("2"); 设置Cookie有效期和删除Cookie cookie.setMaxAge(24*60*60); // Cookie有效时间 co......

二营长意大利炮 ⋅ 今天 ⋅ 0

【每天一个JQuery特效】淡入淡出显示或隐藏窗口

我是JQuery新手爱好者,有时间就练练代码,防止手生,争取每天一个JQuery练习,在这个博客记录下学习的笔记。 本特效主要采用fadeIn()和fadeOut()方法显示淡入淡出的显示效果显示或隐藏元...

Rhymo-Wu ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部