你好,
我正在进行一个基于物联网SDK v5.160.1.19的项目,使用村田ZY moduel和DA14580。
我已经修改了固件,使我的板与物联网APK工作良好。
我使用P1_4和P1_5作为GPIO来吸收LED电流,例如,有闪烁的LED用于BT指示。
我注意到我可以在那些GPIO上使用GPIO_ConfigurePin(…),甚至不需要禁用调试器模块。
然而,其效果是,这些引脚上的静态电压将在~900mV的水平,而不是V_H=3.3V(可能是由于内部调试器电路)。这反过来将导致led不完全关闭。见第一页附在PDF。
现在我禁用调试器与SetBits16(SYS_CTRL_REG, DEBUGGER_ENABLE, 0)在user_wrbl_app_on_init:
空白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秒的操作。之后我再次观察到静态电压是~900mV而不是3.3V。
请参阅第二页的附件PDF,它显示了启动后的行为。
调试器模块似乎在很短的一段时间后就重新打开了。
然而,在SetBits16(SYS_CTRL_REG, DEBUGGER_ENABLE, 1)的代码中只有一次发生,它是在hardfaul_handler.c中,以防止看门狗超时,它只在定义CFG_DEVELOPMENT_DEBUG时执行。
这似乎不是罪魁祸首。
你知道是什么引起的吗?
最好的问候,
约翰内斯
嗨gme_johannes,
我禁用了调试器,但我无法复制您的问题。2秒,你已经提到你的帖子,是强制性的时间,设备应该处于活动模式。2秒过期后,设备可以进入睡眠模式,但在此之前无法进入睡眠模式。所以,你能在设备唤醒时检查你的应用程序吗?
谢谢,PM_Dialog
亲爱的PM_Dialog,
谢谢你关于睡眠模式的提示。
我忘记在set_pad_functions()中初始化引脚,如果设备处于睡眠模式,则由外围init()调用set_pad_functions()。
现在它就像魔法一样有效。
致以最亲切的问候
约翰内斯
嗨gme_johannes,
很高兴你的问题被解决了。
谢谢,PM_Dialog