[技术问答] 如何在省电模式中,唤醒后但不进中断处理?

[复制链接]
2009|10
 楼主| primojones 发表于 2024-5-28 17:08 | 显示全部楼层 |阅读模式
在进入省电模式之前,用户可以藉由呼叫下列函数

__disable_irq();

禁用 IRQ 处理,使得系统在唤醒之后,会接续执行进入省电模式的下一笔指令,而不会进入中断处理程序。

除此之外,用戶还需要注意以下几点 :

用户需要 __WFI 函數後面加上函數
      __ISB();
      清除管线预先抓取的指令,使得接续的指令能被正确的抓取并且执行。
写 ”1” 到 NVIC_ICPR 将对应的 IRQ 处理挂起清除。
将中断旗帜清除。

liu96jp 发表于 2024-6-5 13:01 | 显示全部楼层
那你唤醒的目的是什么
lix1yr 发表于 2024-6-5 14:06 | 显示全部楼层
唤醒之后关闭中断源?
g0d5xs 发表于 2024-6-5 15:10 | 显示全部楼层
禁用唤醒源中断,在进入省电模式之前,禁用所有可能的唤醒源中断。这样,即使发生唤醒事件,也不会触发中断处理程序
zhizia4f 发表于 2024-6-5 16:15 | 显示全部楼层
使用轮询方式检测唤醒事件,在唤醒后,使用轮询方式检测唤醒事件,而不是通过中断来处理。可以通过查询相关寄存器或标志位的状态来判断是否发生了唤醒事件,并根据需要执行相应的操作
w2nme1ai7 发表于 2024-6-5 17:23 | 显示全部楼层
使用低功耗定时器(Low Power Timer),一些芯片提供了低功耗定时器,可以在省电模式下运行,定时唤醒芯片。通过配置低功耗定时器,可以在指定的时间间隔后唤醒芯片,而不需要中断处理
su1yirg 发表于 2024-6-5 19:00 | 显示全部楼层
需要注意的是,具体的实现方法和可行性取决于芯片型号和所使用的开发环境
q1ngt12 发表于 2024-6-6 07:14 | 显示全部楼层
在使用时,建议参考芯片的技术文档、开发工具的文档或厂商提供的相关资料,以了解具体的省电模式和唤醒机制,并选择合适的方法来实现不进入中断处理的唤醒操作
tax2r6c 发表于 2024-6-6 08:34 | 显示全部楼层
一般都是直接关闭中断就不进入到中断处理了
lamanius 发表于 2024-6-6 10:21 | 显示全部楼层
你为啥要不进中断呢?那不用中断多好
ex7s4 发表于 2024-6-6 12:00 | 显示全部楼层
关闭中断,有这个函数的,你可以试试
您需要登录后才可以回帖 登录 | 注册

本版积分规则

41

主题

1559

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部