嗨mt_dialog,
感谢您的帮助!
此主题是关于上一个主题的进一步疑问:
https://support.dialog-semicondiondiondum/forums/post/dialog-smartbond-bl ...
应用了您提供的方法,通过重新配置Periph_init()中使用的引脚的GPIO函数。
现在可以在MPU睡觉时维护PIN状态。
在我们的项目中,我们希望在制作时保留外围设备和GPIO的所有设置,而不是每次MCU唤醒时都在PERIPH_INIT()中。
通过这种方式,随着我们的项目涉及可穿戴设备,我们可以保存相当大的电池电量,电池是一个关键问题。
那么你能否向我们提供这个功能的SDK?
设备:
嗨Useryr,
正如您之前的帖子中提到的那样,您的失去外围设备的状态并不是因为设备正在睡觉,而是因为设备正在醒来,设备在睡眠模式下保留其引脚的状态,但醒来时UP,您必须重新配置您的引脚(使用特定功能应用引脚),因此执行Periph_Init()函数,如果您不会“记住”该应用程序已更改的PIN的状态,则在其默认值中将配置PIN状态。您应该“记住”引脚的状态并在唤醒Periph_init()函数时应用正确的状态。另外,通过在醒来之前重新配置您的引脚不会消耗任何额外的电源,无法唤醒以配置外围设备,该设备将唤醒以服务于BLE,并将运行Periph_init()代码,没有额外的功耗。
谢谢mt_dialog.
嗨mt_dialog,
是的,我明白,如果一个人在Periph_init()中没有完成重新配置,则应默认引脚应默认为初始状态。
但我不明白的是“谁做了这个初始化?”如果MCU硬件这样做,那么它可以完成任何事情。
您是否隐含地意味着这种情况,通过说“失去状态......因为设备正在醒来”?
嗨Useryr,
对不起,如果您使用的设备中使用任何GPIO在您的设备中使用任何GPIO,则应在休眠状态时将这些引脚配置为休眠状态,并且HW能够保留引脚的状态(GPIO寄存器不会保留,因此当睡眠和唤醒寄存器时,寄存器将转到其默认值,并且根据此瞬间(睡眠前的PIN状态),PIN将在睡眠前的状态下锁存。在唤醒时,系统电源管理器将在设备唤醒时再次调用periph_init(),以便在焊盘后面重新初始化所有数字电路,以便在应用程序使用的值中设置GPIO寄存器,因此在初始化后,您还应该应用配置和寄存器在设备睡眠前的状态。
谢谢mt_dialog.
嗨mt_dialog,
“GPIO寄存器未保留”澄清一切!
非常感谢你!