你好,
我正在使用MurataZy Moduel的IoT SDK V5.160.1.19使用DA14580来研究一个项目。
我已经修改了固件,使我的电路板与IOT APK良好。
我使用P1_4和P1_5作为GPIO,以吸收LED电流,例如,为BT指示闪烁LED。
我注意到,即使在不禁用调试器模块,我也能在那些GPIO上使用GPIO_CONFIGUREPIN(...)。
然而,该效果是那些引脚上的静态电压将在〜900mV的水平而不是V_H = 3.3V(可能是由于内部调试器电路)。这反过来会导致LED完全没有关闭。请参阅附加PDF中的第一页。
现在我禁用setbits16(sys_ctrl_reg,debugger_enable,0)在user_wrbl_app_on_init中禁用调试器:
void user_wrbl_app_on_init(void)
{
#if ble_bas_server
app_batt_init();
#万一
#if ble_dis_server.
app_dis_init();
#万一
#if ble_spota_receiver.
app_spotar_init();
#万一
if(getBits16(sys_stat_reg,per_is_down)){
dbg_msg(“init @ 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关闭 - 但仅适用于第一秒钟的操作。之后我再次观察到静止电压为〜900mV而不是3.3V。
请参阅随附的PDF的第二页,显示启动后的行为。
似乎调试器模块在短时间内重新启动。
然而,在Hortfaul_Handler.c中的SetBits16(Sys_CTRL_REG,DEBUGGER_ENABLE,1)代码中只有一次出现在看门狗超时的情况下,仅在定义CFG_DEVELIMMENT_DEBUG时才执行。
这似乎并不是罪魁祸首。
你有想法会导致它吗?
最好的祝福,
约翰内斯
嗨gme_johannes,
我禁用了调试器,但我无法复制您的问题。您已经提交给您的帖子的2秒是设备应该处于活动模式的强制性时间。在2秒的到期后,设备能够进入睡眠模式,但在此之前它无法做到。那么,如果设备醒来,请检查您的应用程序吗?
谢谢,PM_DIALOG.
亲爱的pm_dialog,
感谢您的睡眠模式的提示。
如果设备处于睡眠模式,我忘记初始化由Periph_init()调用的set_pad_functions()中的引脚。
现在它就像一个魅力。
最好的祝福
约翰内斯
嗨gme_johannes,
很高兴您的问题已得到修复。
谢谢,PM_DIALOG.