【库函数实现按键检测】


前言

提示:这里可以添加本文要记录的大概内容:

看了原子的课程,觉得用了位操作实现上拉下拉输入在小程序量的代码里不一定有库函数好用,所以我又写了库函数版本的按键检测。


提示:以下是本篇文章正文内容,下面案例可供参考

一、GPIO输出输入方式理解

看了这么多讲各种IO口方式类别的,觉得初学者只需要会用推挽输出和上拉下拉输入即可。

推挽输出(GPIO_Mode_Out_PP)
一般IO输出:0 1都可

上拉输入(GPIO_Mode_IPU) 可接低电平按键
下拉输入(GPIO_Mode_IPD) 接高电平按键

二、使用步骤

代码如下(示例):

## 1.推挽输出
	GPIO_InitTypeDef GPIO_str;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//enable PA PB
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
	GPIO_str.GPIO_Mode = GPIO_Mode_Out_PP;              //推挽输出
	GPIO_str.GPIO_Pin = GPIO_Pin_0;
	GPIO_str.GPIO_Speed = GPIO_Speed_50MHz;
	//init
	GPIO_Init(GPIOA,&GPIO_str);

## 2.读入数据(上拉下拉)
代码如下(示例):
```c
	GPIO_InitTypeDef GPIO_str1,2;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOA , ENABLE);//使能PORTB时钟
	
	GPIO_str1.GPIO_Mode = GPIO_Mode_IPU; //--->pull up input   上拉输入
	GPIO_str1.GPIO_Pin = GPIO_Pin_4; //key2

	GPIO_str2.GPIO_Mode =GPIO_Mode_IPD; //--->pull up input   上拉输入
	GPIO_str2.GPIO_Pin = GPIO_Pin_4; //key2
	
	GPIO_Init(GPIOB, &GPIO_str1);
 	GPIO_Init(GPIOA, &GPIO_str2);

三、主题:用库函数写按键检测

flat = key_catch(0);  //模式选择
		if(flat)
		{
			switch(flat)
			{
				case KEY0_PRES:
				GPIO_ResetBits(GPIOA,GPIO_Pin_0);break;
			  case KEY1_PRES:
				GPIO_ResetBits(GPIOB,GPIO_Pin_0);break;
				case KEY_ALL:
				{GPIO_ResetBits(GPIOB,GPIO_Pin_0);
				GPIO_ResetBits(GPIOA,GPIO_Pin_0);}
				break;
			}
			
		} 
		delay_ms(500);
		GPIO_SetBits(GPIOA,GPIO_Pin_0);
	    GPIO_SetBits(GPIOB,GPIO_Pin_0);
		delay_ms(500);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值