你好,
我正在进行一个基于物联网SDK v5.160.1.19的项目,使用的是带有DA14580的Murata ZY moduel。
我已经修改了固件,使我的板与物联网APK很好地工作。
我使用P1_4和P1_5作为GPIO来吸收LED电流,例如有闪烁的LED用于BT指示。
我注意到我可以在那些GPIO上使用GPIO_ConfigurePin(…),甚至不需要禁用调试器模块。
然而,结果是这些引脚上的静态电压将在~900mV的水平,而不是V_H=3.3V(可能是由于内部调试电路)。这反过来又会导致led不能完全关闭。见附在PDF的第一页。
现在我在user_wrbl_app_on_init中用SetBits16(SYS_CTRL_REG, DEBUGGER_ENABLE, 0)禁用调试器:
空白user_wrbl_app_on_init(空白)
{
#如果BLE_BAS_SERVER
app_batt_init ();
# endif
#如果BLE_DIS_SERVER
app_dis_init ();
# endif
#如果BLE_SPOTA_RECEIVER
app_spotar_init ();
# endif
如果(GetBits16 (SYS_STAT_REG PER_IS_DOWN)) {
DBG_MSG(“INIT PER@APP_INIT \ r \ n”);
periph_init ();
}
user_periph_sensors_initialize ();
user_periph_sensors_suspend ();
wrbl_env。adv_mode = ADV_MODE_FAST;
//初始化所有包含的配置文件的服务访问写权限
prf_init_srv_perm ();
arch_set_sleep_mode (app_default_sleep_mode);
//禁用调试模块使用P1_4和P1_5作为GPIO
SetBits16 (SYS_CTRL_REG DEBUGGER_ENABLE 0);
}
结果是预期的,led关闭-但只在第一个~2秒的操作。之后我又观察到静止电压由3.3V变为~900mV。
请参阅附件PDF的第二页,显示了启动后的行为。
似乎调试器模块在一段时间后就会重新启动。
然而,在hardfaul_handler.c中的SetBits16(SYS_CTRL_REG, DEBUGGER_ENABLE, 1)代码中只有一次发生,以防止看门狗超时,这只在定义了CFG_DEVELOPMENT_DEBUG的情况下执行。
这似乎不是罪魁祸首。
你知道是什么引起的吗?
最好的问候,
约翰内斯
嗨gme_johannes,
我禁用了调试器,但我不能复制你的问题。你已经在你的帖子中提到的2秒,是设备必须处于激活模式的强制时间。超过2秒后,设备可以进入睡眠模式,但在此之前不能进入睡眠模式。所以,你能在设备醒来时检查一下你的应用程序吗?
谢谢,PM_Dialog
亲爱的PM_Dialog,
谢谢你对睡眠模式的提示。
我忘记了在set_pad_functions()中初始化引脚,如果设备处于睡眠模式,这是由peripher_init()调用的。
现在它像符咒一样起作用了。
致以最亲切的问候
约翰内斯
嗨gme_johannes,
很高兴你的问题已经解决了。
谢谢,PM_Dialog