嵌入式技术论坛
直播中

王莉

7年用户 1269经验值
私信 关注
[问答]

怎么解决PM退出时中断函数执行顺序的问题呢?

1.jpg
我的程序中,PM组件没有启动低功耗定时器,完全由RTC闹钟唤醒,RTC闹钟设置有闹钟中断回调函数,目的是闹钟到时候唤醒系统并且执行闹钟中断回调函数,电源组件中设置有rt_pm_notify_set回调函数。
但是文档中心说电源组件退出睡眠模式(RTC将其唤醒),全局中断为关闭,那么RTC将系统唤醒后系统先去执行电源管理组件中设置的rt_pm_notify_set退出睡眠中断函数,然后才去执行RTC闹钟中断函数,是这个顺序吗? 感觉RTC闹钟唤醒中断函数没有第一时间得到执行。

回帖(2)

杨静

2023-5-17 11:44:28
PM 进入睡眠后是关闭全局中断响应的(不是关闭全局中断使能),中断来了,只会唤醒系统,立即执行PM唤醒的操作,退出睡眠唤醒操作后,再根据中断pending位,去响应中断函数。
1.jpg
举报

王莉

2023-5-17 11:44:43
1.jpg
但是我的程序循环唤醒,每次的调试信息都是先打印唤醒中断里面的内容(是RTC唤醒中断回调函数中往系统工作队列中添加的函数,这个函数的打印信息)
1.jpg
最后才是rt_pm_notify_set中设置的“Outing deep sleep”的内容,按道理应该先打印Outing deep sleep,然后才打印中断中的内容,这儿怎么是反的呢?真奇怪。按道理系统唤醒后一定会回到进入睡眠的地方继续执行完notify
1.jpg
把系统滴答也打印出来
1.jpg
怎么中断中的滴答会慢于notify中的滴答呢
1.jpg
举报

更多回帖

发帖
×
20
完善资料,
赚取积分