使用SWDIO/SWCLK作为GPIO的问题

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

你好,

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

你知道是什么引起的吗?

最好的问候,
约翰内斯

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

嗨gme_johannes,

我禁用了调试器,但我无法复制您的问题。2秒,你已经提到你的帖子,是强制性的时间,设备应该处于活动模式。2秒过期后,设备可以进入睡眠模式,但在此之前无法进入睡眠模式。所以,你能在设备唤醒时检查你的应用程序吗?

谢谢,PM_Dialog

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

亲爱的PM_Dialog,
谢谢你关于睡眠模式的提示。
我忘记在set_pad_functions()中初始化引脚,如果设备处于睡眠模式,则由外围init()调用set_pad_functions()。
现在它就像魔法一样有效。

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

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

嗨gme_johannes,

很高兴你的问题被解决了。

谢谢,PM_Dialog