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

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个回答
toofree 回答时间: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状态的方式, ...

怎么做到长按一个按键触发
toofree 回答时间: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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版