如何在延长睡眠期间保持GPIO状态

学到更多常见问题解答教程

4个帖子/ 0新
最后一篇
布伦特朱胜
离线
最后一次露面:6个月1周前
加入:2017-08-25 07:50
如何在延长睡眠期间保持GPIO状态

亲爱的先生,

从我的测试中,我在定时器处理程序中设置一个定时器并设置GPIO P09输出高。我发现GPIO在睡眠期间保持高位,但在唤醒时它会变为低电平。那么如何保持GPIO总是高?

谢谢。

最好的祝福,

布伦特郑

设备:
PM_DIALOG.
离线
最后一次露面:6天15小时前
员工
加入:2018-02-08 11:03
嗨Brent_zheng,

嗨Brent_zheng,

在睡眠前的销的状态,保留但不是PIN的配置或功能。当设备唤醒即将调用PeripH_Init()函数时,以便在每个唤醒中重新配置引脚,引脚返回其默认应用程序状态。因此,如果任何GPIO在睡眠前高,它会在睡眠期间保持高,并且将通过PERIPH_INIT()函数唤醒重新配置。哪个是默认的PIN状态?

谢谢,PM_DIALOG.

bobspam@free.fr.
离线
最后一次露面:1个月3周前
加入:2018-06-20 08:07
你好

你好

由于电源管理器驱动的闩锁,因此保留了GPIO电源。遇到睡眠状况时,电源管理器会提升闩锁,以便在睡眠期间不会丢失GPIO。唤醒电源管理器确实启动PeripH_Init函数。

GPIO电气状态正在保留在焊盘级别,GPIO控制器不会保留,因此必须在Periph_init中恢复GPIO的状态。通过查看sys_power_manager.c的源代码,您将找到多个钩子

//允许添加应用程序代码的用户可定义的宏。
configpro_sleep_processing(sleep_period);

可以在睡觉前调用,因此允许您在睡觉前备份GPIO状态。通过在Periph_Init中重新编程这些状态,您将能够保持稳定的状态。

prvsetuphardware和periph_init之间的差异与睡眠模式有关。第一个在启动时调用,而后者在每个唤醒时调用后者,因此您应该在这两个之间拆分您的外围设备。第一个应在后者接收AlussonOn外围设备初始化,而后者应接收任何由适配器管理的外围设备。

最好的祝福

布伦特朱胜
离线
最后一次露面:6个月1周前
加入:2017-08-25 07:50
亲爱的先生,

亲爱的先生,

谢谢你这样的详细回复。我稍后会检查一下。

最好的refreachs,

布伦特郑