嗨MT_dialog,
谢谢你的帮助!
这个话题是对上一个话题的进一步提问:
https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bl..。
通过在peripher_init()中为所使用的引脚重新配置GPIO函数,应用您提供的方法。
现在,当MPU处于休眠状态时,可以保持引脚状态。
在我们的项目中,我们希望保留所有外设和gpio的设置,而不是在MCU每次唤醒时的peripher_init()中。
这样,我们相信可以节省相当多的电池电量,因为我们的项目是一个可穿戴设备,电池是一个关键问题。
所以你能提供给我们一个有这个功能的SDK吗?
设备:
嗨userYR,
正如我在你之前的帖子中提到的,事实上,你失去外围设备的状态不是因为设备处于睡眠状态,而是因为设备正在醒来,设备在睡眠模式下保持其引脚的状态,但是当你醒来的时候,你将不得不重新配置你的引脚(使用特定的功能应用你的引脚),所以外围init()函数将被执行,如果你不“记住”应用程序已经改变的引脚的状态,那么引脚将被配置为默认状态。应该“记住”引脚的状态,并在唤醒时使用peripher_init()函数应用适当的状态。还通过重新配置你的针在醒来前的状态,这是不会消耗任何额外的权力,没有额外的醒来为了配置外围设备,该设备将服务BLE醒来,只会运行periph_init()代码,没有额外的功耗。
由于MT_dialog
嗨MT_dialog,
是的,我知道如果没有在periph_init()中进行重新配置,那么当MCU唤醒时,引脚应该默认处于初始状态。
但我不明白的是,这个初始化是谁做的?当然,如果MCU硬件做到了这一点,那就无能为力了。
你说“失去国家…因为设备正在苏醒”?
嗨userYR,
很抱歉,我不太明白这个问题,如果你在你的设备中使用任何GPIO's,你应该在periph_init()函数中配置这些引脚,当设备睡觉hw能够保留针的状态(的寄存器不保留所以当睡觉和醒来寄存器将到他们的默认值,根据销在那一刻的状态(睡前)销将门闩状态睡觉之前)。当设备应该唤醒时,系统电源管理器将再次调用外围init(),以便重新初始化pad后面的所有数字电路,以便在应用程序使用的值中设置GPIO寄存器,因此,在初始化时,你还应该应用配置和寄存器在设备进入睡眠之前的状态。
由于MT_dialog
嗨MT_dialog,
“GPIO寄存器没有被保留”澄清了一切!
非常感谢!