在扩展睡眠模式下,GPIO输出变低

6个员额/ 0个新员额
最后发表
中国
离线
最后看到:6年4个月前
加入:2014-12-04 09:56
在扩展睡眠模式下,GPIO输出变低

我在DA14580EVKET-B中测试DA14580,并设置GPIO端口0,pin4为输出,值为1。

如果#undef CFG_EXT_SLEEP,输出总是高。
如果#define CFG_EXT_SLEEP,则输出变低

当系统进入扩展睡眠时,如何保持输出?

JE_Dialog
离线
最后看到:3个月2个星期前
工作人员
加入:2013-12-05 14:02
你好,中国,

你好,中国,

你能把这个问题说清楚吗?你是说当你进入扩展睡眠模式时,GPIO端口0的I/O状态没有保持它的状态?

所有的gpio都有保留状态,所以会在延长睡眠期间保持状态。(作为输入,每个GPIO可以在扩展睡眠中用作唤醒计数器的输入。)

BR JE_Dialog

中国
离线
最后看到:6年4个月前
加入:2014-12-04 09:56
我找到set_pad_functions

我发现set_pad_functions()将在每次系统唤醒时调用,在这个函数中我设置了I/O输出LOW。但是一些I/O在工作时设置为HIGH。所以当系统醒来时,它是低的。

MHv_Dialog
离线
最后看到:1个月2个星期前
工作人员
加入:15 2013-12-06

每次从睡眠中醒来时,都会调用peripher_setup .c中的peripher_init函数。这个函数调用setpad函数,它总是无条件地设置电平-正如你所说的。

您应该删除该语句

GPIO_ConfigurePin(GPIO_PORT_1, GPIO_PIN_1, INPUT_PULLUP, PID_GPIO, false);

从set_pad_functions()函数。

在app_set_dev_config_complete_func()函数中,使用GPIO_ConfigurePin设置默认值或启动值:

GPIO_ConfigurePin(GPIO_PORT_1, GPIO_PIN_1, INPUT_PULLUP, PID_GPIO, false);//设置引脚低

然后在你的应用程序中,不是用GPIO_设置大头针SetInactive()或GPIO_SetActive(),使用GPIO_ConfigurePin()函数-使用false设置引脚低,使用true保持高。这将确保引脚被正确配置,并在休眠模式中保持闩锁。

扫描电镜
离线
最后看到:5年3个星期前
加入:2014-12-03 09:11
嗨MHv_dialog,

嗨MHv_dialog,
我按照你上一句的描述配置了GPIO管脚。当我取消定义CFG_EXT_SLEEP标志时,它工作正常,但如果定义了CFG_EXT_SLEEP,我从睡眠中醒来,引脚是低的。是否需要将端口保留分开?

BR扫描电镜

扫描电镜
离线
最后看到:5年3个星期前
加入:2014-12-03 09:11
嗨MHv_Dialog,

嗨MHv_Dialog,

你有什么消息要告诉我吗?

BR扫描电镜