使用SWDIO / SWCLK作为GPIO的问题

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
4个帖子/ 0新
最后一篇
gme_johannes
离线
最后一次露面:1个月2周前
加入:2017-12-22 10:09
使用SWDIO / SWCLK作为GPIO的问题

你好,

我正在使用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时才执行。
这似乎并不是罪魁祸首。

你有想法会导致它吗?

此致,
约翰内斯

附件:
设备:
PM_DIALOG.
离线
最后一次露面:16小时11分钟前
职员
加入:2018-02-08 11:03
嗨gme_johannes,

嗨gme_johannes,

我禁用了调试器,但我无法复制您的问题。您已经提交给您的帖子的2秒是设备应该处于活动模式的强制性时间。在2秒的到期后,设备能够进入睡眠模式,但在此之前它无法做到。那么,如果设备醒来,请检查您的应用程序吗?

谢谢,PM_DIALOG.

gme_johannes
离线
最后一次露面:1个月2周前
加入:2017-12-22 10:09
亲爱的pm_dialog,

亲爱的pm_dialog,
感谢您的睡眠模式的提示。
如果设备处于睡眠模式,我忘记初始化由Periph_init()调用的set_pad_functions()中的引脚。
现在它就像一个魅力。

此致
约翰内斯

PM_DIALOG.
离线
最后一次露面:16小时11分钟前
职员
加入:2018-02-08 11:03
嗨gme_johannes,

嗨gme_johannes,

很高兴您的问题已得到修复。

谢谢,PM_DIALOG.