您的位置 首页 FPGA

STM8单片机按键检测电路设计

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

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

硬件环境选用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);//上拉输入,不发生中止

//按键检测部分

/*

#defineKEY10

#defineKEY1_PORT(GPIOD)

#defineKEY1_PIN(GPIO_PIN_4)

#defineKEY21

#defineKEY2_PORT(GPIOC)

#defineKEY2_PIN(GPIO_PIN_1)

*/

u8CheckKey(u8key)

{

if(key==KEY1)

{

if(KEY1_PORT-》IDR&KEY1_PIN)//检测到有按键了,IO口电压会被拉低

{

delay_5ms();

if(KEY1_PORT-》IDR&KEY1_PIN)//依然存在低电平

{

while(!(KEY1_PORT-》IDR&KEY1_PIN));//等候铺开

returnKEY1;

}

}

return0;

}elseif(key==KEY2)

{

if(!(KEY2_PORT-》IDR&KEY2_PIN))//检测到有按键了

{

delay_5ms();

if(!(KEY2_PORT-》IDR&KEY2_PIN))//依然存在低电平

{

while(KEY2_PORT-》IDR&KEY2_PIN);//等候铺开

returnKEY2;

}

}

return0;

}

return0;

}

总结:

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

软件装备不能运用悬浮输入方法,这种方法电压可能会不稳定。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/fpga/346235.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部