OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 12166|回复: 7

请问在中断函数中,当判断外部中断是否产生时,EXTI_GetFlagStatus和EXTI_GetITStatus,这两个函数都可以吗?还有他们有什么区别

[复制链接]

18

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
145
金钱
145
注册时间
2014-4-15
在线时间
0 小时
发表于 2014-4-16 10:09:54 | 显示全部楼层 |阅读模式
请问在中断函数中,当判断外部中断是否产生时,EXTI_GetFlagStatus和EXTI_GetITStatus,这两个函数都可以吗?还有他们有什么区别。我的理解是当他们都为SET时,说明中断就触发了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-4-16 14:57:47 | 显示全部楼层
跟踪进去这两个函数,看看分别是获取哪个寄存器的值?
然后去《STM32参考手册》找到寄存器的对应位描述,看描述。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

18

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
145
金钱
145
注册时间
2014-4-15
在线时间
0 小时
 楼主| 发表于 2014-4-16 15:10:02 | 显示全部楼层


一个是检查标志位设置与否,另一个是检查触发请求发生与否,我分别用这两个函数做了实验发现都能实现判断中断是否触发。至于原子哥说的找到这个函数设置的是哪个寄存器,我找不到啊,那库函数没有说。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-4-16 15:26:13 | 显示全部楼层
跟踪进去代码里面:
[mw_shl_code=c,true]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->R & EXTI_Line) != (uint32_t)RESET) && (enablestatus != (uint32_t)RESET)) { bitstatus = SET; } else { bitstatus = RESET; } return bitstatus; } [/mw_shl_code]
[mw_shl_code=c,true]FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line) { FlagStatus bitstatus = RESET; /* Check the parameters */ assert_param(IS_GET_EXTI_LINE(EXTI_Line)); if ((EXTI->R & EXTI_Line) != (uint32_t)RESET) { bitstatus = SET; } else { bitstatus = RESET; } return bitstatus; }[/mw_shl_code]

现在知道区别了吧?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

18

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
145
金钱
145
注册时间
2014-4-15
在线时间
0 小时
 楼主| 发表于 2014-4-17 08:27:44 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
ITStatus EXTI_GetITStatus(uint32_t EXTI_Line)
回复 支持 反对

使用道具 举报

18

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
145
金钱
145
注册时间
2014-4-15
在线时间
0 小时
 楼主| 发表于 2014-4-17 08:30:38 | 显示全部楼层
回复【5楼】a598009273:
---------------------------------
ITStatus EXTI_GetITStatus(uint32_t EXTI_Line)
这个函数比FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line)函数多了一个enablestatus =  EXTI->IMR & EXTI_Line事件中断判断触发,原子哥,什么事件中断啊,我对这个概念不是很清楚,你能举个例子吗
回复 支持 反对

使用道具 举报

18

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
145
金钱
145
注册时间
2014-4-15
在线时间
0 小时
 楼主| 发表于 2014-4-17 08:30:56 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
ITStatus EXTI_GetITStatus(uint32_t EXTI_Line) 
这个函数比FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line)函数多了一个enablestatus =  EXTI->IMR & EXTI_Line事件中断判断触发,原子哥,什么事件中断啊,我对这个概念不是很清楚,你能举个例子吗
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-4-17 22:14:26 | 显示全部楼层
回复【7楼】a598009273:
---------------------------------
看寄存器描述。
另外,事件和中断的区别,论坛有精华帖,搜索学习下。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-10 03:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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