亲爱的先生,
从我的测试中,我在定时器处理程序中设置一个定时器并设置GPIO P09输出高。我发现GPIO在睡眠期间保持高位,但在唤醒时它会变为低电平。那么如何保持GPIO总是高?
谢谢。
最好的祝福,
布伦特郑
嗨Brent_zheng,
在睡眠前的销的状态,保留但不是PIN的配置或功能。当设备唤醒即将调用PeripH_Init()函数时,以便在每个唤醒中重新配置引脚,引脚返回其默认应用程序状态。因此,如果任何GPIO在睡眠前高,它会在睡眠期间保持高,并且将通过PERIPH_INIT()函数唤醒重新配置。哪个是默认的PIN状态?
谢谢,PM_DIALOG.
你好
由于电源管理器驱动的闩锁,因此保留了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外围设备初始化,而后者应接收任何由适配器管理的外围设备。
最好的祝福
谢谢你这样的详细回复。我稍后会检查一下。
最好的refreachs,
嗨Brent_zheng,
在睡眠前的销的状态,保留但不是PIN的配置或功能。当设备唤醒即将调用PeripH_Init()函数时,以便在每个唤醒中重新配置引脚,引脚返回其默认应用程序状态。因此,如果任何GPIO在睡眠前高,它会在睡眠期间保持高,并且将通过PERIPH_INIT()函数唤醒重新配置。哪个是默认的PIN状态?
谢谢,PM_DIALOG.
你好
由于电源管理器驱动的闩锁,因此保留了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外围设备初始化,而后者应接收任何由适配器管理的外围设备。
最好的祝福
亲爱的先生,
谢谢你这样的详细回复。我稍后会检查一下。
最好的refreachs,
布伦特郑