求解:中断标志清除与中断挂起标志清除的疑问
[复制链接]
6088|5
电梯直达
楼主
楼主|
zhaolipingyy
发表于 2011-7-20 02:24
|
只看该作者
|倒序浏览
|阅读模式
GB, pen, 函数, RTC, tc
在STM32库里面对于中断标志位的清除有以下两种函数:
PPP_ClearFlag
PPP_RTC_ClearITPendingBit
他们有什么区别?所清除的是什么标志位?什么时候会用到?
我的理解如下,不知对否:
1、中断事件会导致中断,但由于各种原因,中断不能执行,被挂起,所以有PendingBit。
如果中断被响应,则硬件自动清除PendingBit,PPP_RTC_ClearITPendingBit函数无用。
如果人为的不想响应这个中断,也可以在这个中断响应前使用函数PPP_RTC_ClearITPendingBit清除这个标志位
2、若中断可以被响应,则PendingBit硬件复位,Flag硬件置位,中断函数结束后,要使用函数PPP_ClearFlag函数清除FLAG。
请各位大虾评判!
回复
收藏0
举报
相关帖子
• 中颖SH32F9B00串口通信的中断服务函数是怎样的?
• 分层设计如何提高代码的可维护性?
• CubeIDE中的memcpy函数问题
• 苹果2025秋季发布会价格汇总!哪个更值得入手?
• 用G071GBT6调PWM输出控制LED亮度却总觉得不均匀
• 跑L152RET6的RTC闹钟功能时出现偶尔唤醒不准
• at32f421移植freertos过程中遇到的问题
• 详解STM32的完整启动流程
• 在函数中定义函数?数组?
沙发
楼主|
zhaolipingyy
发表于 2011-7-20 15:33
|
只看该作者
顶一下,香主帮忙解释一下啊
回复
收藏0
举报
板凳
楼主|
zhaolipingyy
发表于 2011-7-20 17:46
|
只看该作者
又仔细看了一下,发现这些函数内部功能是完全一样的,使用结果也一样。
难道仅是为了符合统一的编程风格,所有的模块都有这两个函数???
回复
收藏0
举报
地板
qqq159599
发表于 2013-9-28 20:28
|
只看该作者
哎 遇到同样的问题
操作同样的寄存器啊
回复
收藏0
举报
5楼
鱼小黑
发表于 2017-7-17 16:15
|
只看该作者
qqq159599 发表于 2013-9-28 20:28
哎 遇到同样的问题
操作同样的寄存器啊
实质上,他们检查、清除的都是SR寄存器的标志,只是在检查中断标志的时候,中断标志检查函数PPP_GetITStatus 还会检查对应事件的中断屏蔽位是否开启,如果事件中断被屏蔽(即事件发生时不触发中断),那么在事件A发生的时候,用PPP_GetFlag()函数检查事件A发生的返回结果,用PPP_GetITStatus()函数检查的结果是事件A有没有触发中断!
简而言之就是 ”事件A返回的结果” 和 “事件A返回有没有触发中断” ?
所以,清除标志位时,同样的道理,PPP_ClearFlag,PPP_RTC_ClearITPendingBit两个函数都是对PPP_SR寄存器进行清除的,在使用的时候,尽量在中断中使用 PPP_RTC_ClearITPendingBit函数,非中断时采用PPP_ClearFlag函数。
回复
收藏0
举报
6楼
天灵灵地灵灵
发表于 2017-7-17 22:52
|
只看该作者
没研究过这个,顶。
回复
收藏0
举报