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

STM8L为什么会一直低电平触发?

[复制链接]
AngryCat 提问时间:2018-3-12 18:20 /
这是初始化的代码
  GPIO_Init(TEST_KEY_PORT, TEST_KEY_PIN, GPIO_Mode_In_PU_IT);  //PB3 初始化按键,上拉输入,带中断
  EXTI_DeInit (); //恢复中断的所有设置
  EXTI_SetPinSensitivity (EXTI_Pin_3, EXTI_Trigger_Falling);//外部中断3,下降沿触发,向量号11
  EXTI_ClearITPendingBit (EXTI_IT_Pin3);//清除中断标志
  ITC_SetSoftwarePriority(EXTI3_IRQn, ITC_PriorityLevel_1);//设置中断优先级



中断函数

INTERRUPT_HANDLER(EXTI3_IRQHandler,11)
{
  __IO u16 i,j;
  EXTI_ClearITPendingBit (EXTI_IT_Pin3);//清除中断标志
  Debug("EXTI3_IRQHandler\n");

  for(i=0;i<50;i++)
    for(j=0;j<8000;j++);
}


按下PB3不放会一直触发中断,串口一直输出  "EXTI3_IRQHandler\n"

收藏 评论5 发布时间:2018-3-12 18:20

举报

5个回答
wenyangzeng 回答时间:2018-3-12 21:10:51
中断函数中执行了一个长延时,会与其他中断冲突的。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

toofree 回答时间:2018-3-12 21:44:11
本帖最后由 toofree 于 2018-3-12 21:46 编辑

你在中断处理中置一个标志变量。
然后在主程序中循环中,查询标志,执行打印和延时操作,试试看。同时在主程序中也查询管脚的状态,看有没有变成1过,如果有变成1,那就是抖了。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

wudianjun2001 回答时间:2018-3-13 08:39:39
楼上说的对,中断里不要处理时间太长,都放到主循环里处理

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

す疯Ⅱ恒す 回答时间:2018-3-13 09:10:46
初始化IO的前先关总中断,初始化完了之后再开总中断。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

AngryCat 回答时间:2018-3-13 09:31:40
す疯Ⅱ恒す 发表于 2018-3-13 09:10
初始化IO的前先关总中断,初始化完了之后再开总中断。

你说对了,是要先关中断初始化。跟延时没什么关系。谢谢

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2 结帖奖励

查看全部评分

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版