你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm8sf103f3p6按键中断消抖以及触发

[复制链接]
xllmyh 提问时间:2019-6-27 16:29 /
INTERRUPT_HANDLER(EXTI_PORTC_IRQHandler, 5)
{
  if(GPIO_ReadInputPin(GPIOC , GPIO_PIN_7) == RESET)   //判断是否是PC->,被按下,即KEY2,也可以说这个判断是PD端口区分是哪个引脚被按下的主要标志
  {
}
void ALLKeyInit()
{
  //KEY1_Init
  //GPD->PIN2 设置为输入模式 带上拉电阻输入 全球通外部中断
  GPIO_Init(GPIOD , GPIO_PIN_2 , GPIO_MODE_IN_PU_IT);
  EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOA , EXTI_SENSITIVITY_FALL_ONLY); //PA端口为下降沿触发中断

  //KEY2_Init
  //GPC->PIN7 设置为输入模式 带上拉电阻输入 禁止外部中断
  GPIO_Init(GPIOC , GPIO_PIN_7 , GPIO_MODE_IN_PU_IT);
  EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOD , EXTI_SENSITIVITY_FALL_ONLY); //PD端口为下降沿触发中断
  
  //KEY3_Init
  //GPC->PIN6设置为输入模式 带上拉电阻输入 禁止外部中断
  GPIO_Init(GPIOC , GPIO_PIN_6 , GPIO_MODE_IN_PU_IT);
  EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOC , EXTI_SENSITIVITY_FALL_ONLY); //PC端口为下降沿触发中断
}
收藏 评论6 发布时间:2019-6-27 16:29

举报

6个回答
七哥 回答时间:2019-6-28 09:44:22
图省事的话,设计时按键IO加RC电路加硬件去抖;
程序消抖的话,建议用在定时器多次连续检测IO状态的方式,不要写成软件循环死等。
用IO中断检测的话,在中断服务函数中多次循环检测IO状态,但循环延时不要太长。
xllmyh 回答时间:2019-6-27 16:30:21
按键有时候不灵
maxtch 回答时间:2019-6-27 20:29:52
按钮消抖 Arduino 他们有例程,用 MAX809 硬件消抖也是可行的。
xllmyh 回答时间:2019-7-1 14:05:26
toofree 发表于 2019-6-28 09:44
图省事的话,设计时按键IO加RC电路加硬件去抖;
程序消抖的话,建议用在定时器多次连续检测IO状态的方式, ...

怎么做到长按一个按键触发
七哥 回答时间:2019-7-2 02:08:45
xllmyh 发表于 2019-7-1 14:05
怎么做到长按一个按键触发

那就得循环多次检测,比如一个检测周期是10ms,连续检测到相同的状态5次以上为消抖;相同状态大于50次,为长按键。
butterflyspring 回答时间:2019-7-4 12:39:31
一般按键响应时间和使用体验时间可以从50ms到几百毫秒。可以采用扫描方式。利用积分的原理,扫描到连续几次即为识别到就可以达到消抖的效果了

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版