STM32中断问题:if(EXTI_GetITStatus(EXTI_Line5)==SET)这句话如何理解?

我的中断方式是下降沿触发,上面的那句话是检查中断触发与否,为什么=SET就能检查出来了呢?如果我把这句话改为if(EXTI_GetITStatus(EXTI_Line5)... 我的中断方式是下降沿触发,上面的那句话是检查中断触发与否,为什么=SET就能检查出来了呢?如果我把这句话改为if(EXTI_GetITStatus(EXTI_Line5)==RESET)时,又该如何理解呢? 展开
 我来答
shaoyoujing
2014-05-07 · 超过14用户采纳过TA的回答
知道答主
回答量:52
采纳率:0%
帮助的人:38.2万
展开全部
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; //1
if (((EXTI->PR & EXTI_Line) != (uint32_t)RESET) && (enablestatus != (uint32_t)RESET)) //2
{
bitstatus = SET;
}
else
{
bitstatus = RESET;
}
return bitstatus;
}
由这个函数本身可以看出,//1处屏蔽EXTI_Line5之外的外部中断;//2处看EXTI->PR挂起寄存器中EXTI_Line5对应的位是否置1(不等于RESET说明置1),置1说明发生了选择的触发请求,然后函数返回SET,你一判断SET了,说明中断发生了。相反==RESET说明中断没有发生。
匿名用户
2015-07-19
展开全部
中断线是否被挂起(不为0)。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式