你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

执行__WFI()导致系统滴答中断无法唤醒设备

[复制链接]
卿枫凌 提问时间:2018-12-15 14:57 /
1、在操作FreeRTOS时,本想着是在空闲钩子中执行__WFI()以降低设备功耗,等系统滴答中断自动唤醒设备继续执行,运行中发现执行__WFI()之后设备无法唤醒,分析应该是__WFI()将CPU内核时钟全部关闭了,导致滴答中断无法触发,不知道是不是这样的原因
2、如果__WFI()无法使用滴答中断唤醒,那能否用普通定时器唤醒,怎么样能够让普通定时器去替代系统滴答呢

希望有高人指点一二
收藏 评论2 发布时间:2018-12-15 14:57

举报

2个回答
STM1024 回答时间:2018-12-15 17:35:00
看手册:
Wait for Interrupt WFI:
WFI (Wait For Interrupt) makes the processor suspend execution (Clock is stopped) until one of the following events take place:
An IRQ interrupt
An FIQ interrupt
A Debug Entry request made to the processor.

我的理解是,这个时候时钟是被关闭了,你需要依靠其他的中断来唤醒,而不能用SysTick的中断。
建议测试一下,即打印Systick当前Counter以后,进入WFI,然后在后面再跟一个打印Counter的函数,采用EXTI方式唤醒,看看这两个值是否变化不大(怀疑进入WFI需要几个时钟周期)?
卿枫凌 回答时间:2018-12-16 11:17:42
stm1024 发表于 2018-12-15 17:35
看手册:
Wait for Interrupt WFI:
WFI (Wait For Interrupt) makes the processor suspend execution (Cl ...

去看手册貌似明白了,执行__WFI之后,说是外部中断可以唤醒,我之前理解外部中断这个名字有偏差,看手册是出了前16个中断源之外,其他的所有内核之外的全部看为外部中断

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版