中断判断进不去

[复制链接]
2828|6
 楼主| 树缠藤 发表于 2015-3-4 08:43 | 显示全部楼层 |阅读模式
pi, GPIO, IO, gp, TI
STM32L05C8T6处理器开发,用外部PA0中断,下降沿触发,断点调试,当PA0下降沿后能够进入中断服务程序,但是进入以后调用的库函数HAL_GPIO_EXTI_IRQHandler中再次判断中断的时候__HAL_GPIO_EXTI_GET_IT进不去, if(__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != RESET)
  {
    __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);
    HAL_GPIO_EXTI_Callback(GPIO_Pin);
  }执行不了,请问什么原因?
popeye021 发表于 2015-3-4 09:31 | 显示全部楼层
外部的信号是个什么样的波形?你的断点设置在哪里了?
if(__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != RESET) 后面的语句是引脚为高电平时才执行。
 楼主| 树缠藤 发表于 2015-3-4 13:33 | 显示全部楼层
popeye021 发表于 2015-3-4 09:31
外部的信号是个什么样的波形?你的断点设置在哪里了?
if(__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != RESET) 后 ...

外部信号就是类似按键,平时高电平,按下低电平产生一个下降沿,能够检测到下降沿进入中断处理程序,(__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != RESET)貌似不是指外部引脚的信号电平,应该是中断寄存器的标志位吧
popeye021 发表于 2015-3-4 14:10 | 显示全部楼层
树缠藤 发表于 2015-3-4 13:33
外部信号就是类似按键,平时高电平,按下低电平产生一个下降沿,能够检测到下降沿进入中断处理程序,(__H ...

如果确认HAL_GPIO_EXTI_GET_IT函数是获得中断标志位,那你把if语句改为if(__HAL_GPIO_EXTI_GET_IT(GPIO_Pin))试试。我在用STM8的时候遇到过一个类似的bug,换一种形式就正常了。
还有,确认读取的是正确的标志位,或者直接用寄存器操作读取试试。
mmuuss586 发表于 2015-3-4 21:34 | 显示全部楼层
换上升沿中断,验证下就知道了;
小浣熊 发表于 2015-3-5 20:36 | 显示全部楼层
可以试试
songchenping 发表于 2015-3-6 09:08 | 显示全部楼层
有些接口是不支持断点调试的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

33

主题

63

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部