STM8S103 独立按键检测

硬件环境采用STM8SF103,电压为3.3V。

电路需要注意的是STM8SF103这系列的IO作为输入口时只能是上拉输入和悬浮输入,虽然是弱上拉,在VCC为3.3V电压时,仍然能够被拉升至3.0V左右。

所以按键检测电路IO口一端需要接地,而不是外接上拉。悬浮方式下IO仍然会有0.89V左右电压,读取对应的IO寄存器IDR,仍然处于逻辑高电平状态。

软件代码相对很简单,只需要将IO口设置成上拉输入即可。采用轮询代码如下:

//初始化只需要设置IO口模式即可。
    GPIO_Init(KEY2_PORT,KEY2_PIN,GPIO_MODE_IN_PU_NO_IT); //上拉输入,不产生中断

//按键检测部分

/*
#define KEY1               0
#define KEY1_PORT (GPIOD)
#define KEY1_PIN (GPIO_PIN_4)
#define KEY2 1
#define KEY2_PORT (GPIOC)
#define KEY2_PIN (GPIO_PIN_1)
*/
u8 CheckKey(u8 key)
{  
	if(key==KEY1)
	{
		if(KEY1_PORT->IDR&KEY1_PIN) //检测到有按键了,IO口电压会被拉低
		{
			delay_5ms();
			if(KEY1_PORT->IDR&KEY1_PIN) //仍然存在低电平
			{
				while(!(KEY1_PORT->IDR&KEY1_PIN)); //等待放开
				return KEY1;             
			}                    
		}         
		return 0;     
	}else if(key==KEY2)  
	{
		if(!(KEY2_PORT->IDR&KEY2_PIN)) //检测到有按键了
		{
			delay_5ms();
			if(!(KEY2_PORT->IDR&KEY2_PIN)) //仍然存在低电平
			{
				while(KEY2_PORT->IDR&KEY2_PIN); //等待放开 
                return KEY2;
			}
		}
		return 0;
	}
	return 0;
} 


总结:

硬件电路将按键IO口的一端接地。

软件配置不能使用悬浮输入方式,这种方式电压可能会不稳定。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值