使用SWDIO/SWCLK作为GPIO的问题

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.wsdof.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
4个职位/ 0个新职位
最后发表
gme_johannes
离线
最后看到:2周1天前
加入:2017-12-22 10:09
使用SWDIO/SWCLK作为GPIO的问题

你好,

我正在进行一个基于物联网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的情况下执行。
这似乎不是罪魁祸首。

你知道是什么引起的吗?

最好的问候,
约翰内斯

设备:
PM_Dialog
离线
最后看到:2小时11分钟前
工作人员
加入:2018-02-08 11:03
嗨gme_johannes,

嗨gme_johannes,

我禁用了调试器,但我不能复制你的问题。你已经在你的帖子中提到的2秒,是设备必须处于激活模式的强制时间。超过2秒后,设备可以进入睡眠模式,但在此之前不能进入睡眠模式。所以,你能在设备醒来时检查一下你的应用程序吗?

谢谢,PM_Dialog

gme_johannes
离线
最后看到:2周1天前
加入:2017-12-22 10:09
亲爱的PM_Dialog,

亲爱的PM_Dialog,
谢谢你对睡眠模式的提示。
我忘记了在set_pad_functions()中初始化引脚,如果设备处于睡眠模式,这是由peripher_init()调用的。
现在它像符咒一样起作用了。

致以最亲切的问候
约翰内斯

PM_Dialog
离线
最后看到:2小时11分钟前
工作人员
加入:2018-02-08 11:03
嗨gme_johannes,

嗨gme_johannes,

很高兴你的问题已经解决了。

谢谢,PM_Dialog