文档章节

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

 卤煮小鱼
发布于 2016/04/14 22:30
字数 204
阅读 156
收藏 1


(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
0
STM32学习笔记(7)——USART串口的使用

1、 串口的基本概念 在STM32的参考手册中,串口被描述成通用同步异步收发器(USART),它提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。USART利用...

葫芦娃的后桌
08/09
0
0
stm32的IO模式说明

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

peng_258
2017/10/24
0
0
端口的复用——基于STM32F767IGT6

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

u014663232
04/17
0
0
STM32GPIO外部中断总结

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

dp29sym41zygndvf
2017/12/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Swift-系统默认UICollectionViewController的基本用法

不用xib创建时,需要重写 override init(collectionViewLayout layout: UICollectionViewLayout){} 在调用时需传 UICollectionViewLayout值,不然就会报错 let layout = UICollectionViewFlow......

west_zll
18分钟前
1
0
Spring Boot 最核心的 3 个注解详解

最近面试一些 Java 开发者,他们其中有些在公司实际用过 Spring Boot, 有些是自己兴趣爱好在业余自己学习过。然而,当我问他们 Spring Boot 最核心的 3 个注解是什么,令我失望的是鲜有人能答...

Java技术栈
19分钟前
4
0
Sqoop 增量导入导出及Job操作示例

增量导入 递增列的增量导入append # 第一次导入[root@node222 ~]# /usr/local/sqoop-1.4.7/bin/sqoop import --connect jdbc:mysql://192.168.0.200:3306/sakila?useSSL=false --table ac......

PeakFang-BOK
25分钟前
2
0
Thread中断的理解

★中断的理解:1)中断可以理解为线程的一个标识位属性;2)表示一个运行中的线程是否被其他线程进行了中断操作 中断好比其他线程向该线程打了个招呼,其他线程通过调用该线程的interrupt()...

karma123
32分钟前
2
0
App store 侵权投诉

App Store Content Dispute 侵权投诉 https://www.apple.com/legal/internet-services/itunes/appstorenotices/#?lang=zh...

壹峰
56分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部