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

2021年6月20日 3点热度 0条评论 来源: JawSoW

一个是获取状态的,一个是获取中断的。

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;
}

    原文作者:JawSoW
    原文地址: https://blog.csdn.net/Cheatscat/article/details/77878341
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。