您的位置:首页 > 其它

STM32库函数EXTI_GetFlagStatus和EXTI_GetITStatus区别是什么?

2017-09-07 10:41 274 查看
一个是获取状态的,一个是获取中断的。

EXTI_GetFlagStatus只是纯粹读取中断标志位的状态,但是不一定会响应中断(EXT_IMR寄存器对该中断进行屏蔽);而EXTI_GetITStatus除了读取中断标志位,还查看EXT_IMR寄存器是否对该中断进行屏蔽,在中断挂起&没有屏蔽的情况下就会响应中断。仔细看看代码就知道区别了

FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line)

{

  FlagStatus bitstatus = RESET;

 

  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;

 

  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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: