野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9562|回复: 3

请教各位大神,以下这两个关于中断的函数,有什么区别?

[复制链接]
发表于 2016-4-3 10:38:39 | 显示全部楼层 |阅读模式
请教各位大神,以下这两个关于中断的函数,有什么区别?它们不都是获取中断的标志位吗?为什么要定义两个函数?
FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line)
{
  FlagStatus bitstatus = RESET;
  /* Check the parameters */
  assert_param(IS_GET_EXTI_LINE(EXTI_Line));

  if ((EXTI->PR & EXTI_Line) != (uint32_t)RESET)
  {
    bitstatus = SET;
  }
  else
  {
    bitstatus = RESET;
  }
  return bitstatus;
}


ITStatus EXTI_GetITStatus(uint32_t EXTI_Line)
{
  ITStatus bitstatus = RESET;
  uint32_t enablestatus = 0;
  /* Check the parameters */
  assert_param(IS_GET_EXTI_LINE(EXTI_Line));

  enablestatus =  EXTI->IMR & EXTI_Line;
  if (((EXTI->PR & EXTI_Line) != (uint32_t)RESET) && (enablestatus != (uint32_t)RESET))
  {
    bitstatus = SET;
  }
  else
  {
    bitstatus = RESET;
  }
  return bitstatus;
}

(2)如果PA6和PB6引脚都发生电平跳跃,EXTI6中断被触发了,我想知道是PA6还是PB6触发的中断,怎么看啊?
(3)如果PA6引脚触发EXTI6中断,在执行中断子程序过程中如果PE6按键被按下了会如何?


回复

使用道具 举报

发表于 2016-4-5 08:42:20 | 显示全部楼层
在中断里再检查引脚的电平状态来区分
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-4-5 11:06:52 | 显示全部楼层
flyleaf 发表于 2016-4-5 08:42
在中断里再检查引脚的电平状态来区分

这个我明白,但是假如PA6和PB6都被按下了呢,检测这两个引脚那肯定电平是一样的
回复 支持 反对

使用道具 举报

发表于 2016-4-5 11:41:35 | 显示全部楼层
lincong07 发表于 2016-4-5 11:06
这个我明白,但是假如PA6和PB6都被按下了呢,检测这两个引脚那肯定电平是一样的

都按下了那就两个引脚电平都是低电平啊,那么程序的判断结果就是两个引脚都被按下,没有问题
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-27 09:47 , Processed in 0.025663 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表