我能不能在睡觉的时候不关掉periph,这样timer0就可以工作了

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在迁移到新的论坛平台,它将提供更好的功能,并包含在主要的对话网站中。所有员额和帐户都已迁移。我们现在只接受新论坛上的流量-请发布任何新的线程在//www.xmece.com/support.我们将在未来几天修复bug /优化搜索和标签。
8个帖子/ 0个新
最后发表
brent_zheng
离线
最后看到:1个月1周前
加入:2017-08-25 07:50
我能不能在睡觉的时候不关掉periph,这样timer0就可以工作了

嗨,对话框
在我的项目中,我需要测量GPIO中断HIGH到LOW和LOW到HIGH之间的时间,时间有时很短,如0.1ms。所以我不能用tick。为了节省功耗,我希望设备保持在休眠状态,timer0在后台工作,并将GPIO设置为唤醒。一旦GPIO中断触发,我将读取timer0计数并记录。
现在的问题是timer0默认情况下在下一个睡眠期间关闭。我可以将系统设置为休眠状态,但保持定时器处于开机状态吗?
谢谢。

最好的问候,
布伦特郑

设备:
STS_Dialog(未验证)
嗨brent_zheng,

嗨brent_zheng,

当设备与所有外设一起进入休眠状态时,计时器(0和2)将关闭,在扩展休眠模式下启用计时器的唯一选项是内核计时器(app_easy_timer())。在这种情况下,你必须记住,在计时器结束后,中断调用和BLE唤醒每次你做这个过程。

谢谢你!

STS_Dialog。

brent_zheng
离线
最后看到:1个月1周前
加入:2017-08-25 07:50
亲爱的STS_Dialog,

亲爱的STS_Dialog,

感谢您的快速回复。
内核计时器不能满足我的要求,因为我需要得到的时间周期少于一个滴答。我能在下次睡觉时开着所有的外设吗?
谢谢。

STS_Dialog(未验证)
你可以保留所有的

您可以让所有的外设都处于开启状态,但是在本例中,您已经将计时器(0或2)设置为由LP时钟更新。您可以建议DA14585的数据表(在数据表部分的文档选项卡中)。在您的场景中,静态内联void arch_turn_peripherals_off()函数将根据您的实现计划工作。

谢谢你!

STS_Dialog。

brent_zheng
离线
最后看到:1个月1周前
加入:2017-08-25 07:50
亲爱的STS_Dialog,

亲爱的STS_Dialog,

但是当我试图在睡眠期间启用所有外围设备时,我遇到了问题。我试图改变下面的arch_turn_peripherals_off函数:
// SetBits16(PMU_CTRL_REG, perid_sleep, 1);//关闭外设电源域
SetBits16(PMU_CTRL_REG, perit_sleep, 0);
即使没有开启定时器(0或2),设备也会在BLE通告期间重复复位。
如果我在arch_goto_sleep中不调用arch_turn_peripherals_off,系统可以正常运行。但似乎系统没有进入下一个睡眠,因为SCB->SCR |= 1<<2;仅在arch_turn_peripherals_off中设置。

所以你能告诉我如何修改SDK代码,使应用程序外设在下次睡眠时打开吗?
谢谢。

STS_Dialog(未验证)
嗨brent_zheng,

嗨brent_zheng,

最好不要修改核心SDK代码,因为这可能会产生额外的问题,需要进行大量的测试。

谢谢,

STS_Dialog

brent_zheng
离线
最后看到:1个月1周前
加入:2017-08-25 07:50
亲爱的STS_Dialog,

亲爱的STS_Dialog,

如果我可以使用timer0延长睡眠模式,这对电池寿命很有帮助。所以你能帮我检查一下吗?
谢谢。

最好的问候,
布伦特郑

STS_Dialog(未验证)
你好,

你好,

我们现在无法支持计时器0的用例。

请查看以下链接:

https://support.dialog-semiconductor.com/smarttag-ref-design-sleep-mode-..。

谢谢,

STS_Dialog。