STM32库函数EXTI_GetFlagStatus()和EXTI_GetITStatus()区别是什么?
2014-06-17 12:45
274 查看
http://blog.sina.com.cn/s/blog_71c0df0d010189qn.html
http://zhidao.baidu.com/link?url=oTfU99dJFlAWd5yc6H2KHlZ7Dwt2IooH9-FCTO33_O_UU9qSj0lzQu8gWJt31X7rJ0EbEXvy9hM-EmQYV1e1Nq
一个是获取状态的,一个是获取中断的。
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) //只是纯粹读取中断标志位的状态,但是不一定会响应中断(EXT_IMR寄存器对该中断进行屏蔽)
{
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)) //除了读取中断标志位,还查看EXT_IMR寄存器是否对该中断进行屏蔽,在中断挂起&没有屏蔽的情况下就会响应中断
{
bitstatus = SET;
}
else
{
bitstatus = RESET;
}
return bitstatus;
}
http://zhidao.baidu.com/link?url=oTfU99dJFlAWd5yc6H2KHlZ7Dwt2IooH9-FCTO33_O_UU9qSj0lzQu8gWJt31X7rJ0EbEXvy9hM-EmQYV1e1Nq
一个是获取状态的,一个是获取中断的。
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) //只是纯粹读取中断标志位的状态,但是不一定会响应中断(EXT_IMR寄存器对该中断进行屏蔽)
{
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)) //除了读取中断标志位,还查看EXT_IMR寄存器是否对该中断进行屏蔽,在中断挂起&没有屏蔽的情况下就会响应中断
{
bitstatus = SET;
}
else
{
bitstatus = RESET;
}
return bitstatus;
}
IT主要就是与中断相关的,检查USART中断产生与否,当USART发送完成后会有USART_IT_TC中断,因此可以用来判断,而USART_GetFlagStatus是USART标志位设置与否,其中就有发送完成标志位USART_Flag_TC所以也可用来判断。而最终都是操作SR寄存器。
USART_GetFlagStatus仅仅是把SR相应的标志位置位,但是USART_GetITStatus还会去操作相应的CR1,CR2,CR3,完了再去进行SR的置位。
相关文章推荐
- STM32库函数EXTI_GetFlagStatus和EXTI_GetITStatus区别是什么?
- STM32库函数EXTI_GetFlagStatus和EXTI_GetITStatus的区别
- 表单中POST方法与GET方法有什么区别
- HTTP协议中请求方法Get和Post的区别是什么?
- HttpServletRequest.getRequestURI()和HttpServletRequest.getRequestURL()区别是什么?
- cin cin.get cin.getline有什么区别?(转载加部分原创)
- servlet是什么? getRequestDispatcher()与sendRedirect()区别
- 【转自51js】 提交页面post 和 get方法有什么区别
- document.getElementById("")和document.getElementsByName()和document.getElementsByTagName()有什么区别
- request.getRemoteAddr()和request.getRemoteHost()的区别是什么?
- GET请求和POST请求有什么区别!
- GET和POST有什么区别?及为什么网上的多数答案都是错的。
- 表单的提交方式POST和GET有什么区别
- getHibernateTemplate(),这两个方法究竟有什么区别呢?
- getSession(true)和getSession(),有什么区别
- public Property let,get和直接用public什么区别?
- HTTP协议中POST、GET、HEAD的区别是什么?分别在什么情况下使用?(
- document.getElementById()和document.getElementsByName()有什么区别
- XMLHttpRequest.open();第一个参数post,get有什么不同,什么时候选什么,还有其他的,都有什么区别?
- 表单中POST方法与GET方法有什么区别