硬件看门狗的繁忙循环

4个帖子/ 0新
最后一篇
oren.
离线
最后一次露面:1年7个月前
专家
加入:2014-06-28 22:03
硬件看门狗的繁忙循环

你好,
我们在模块中存在问题 - 当插入电池时,〜5%的模块无法启动广告,并且需要重置 - 即卸下电池并重新插入。

我们被建议在Arch_Main.c中的main_func(void)的开头添加以下行:
setbits16(bandgap_reg,ldo_ret_trim,0x08);

这不起作用,所以我们还建议我们预先添加〜100ms睡眠。
我知道如何在我的应用程序运行时使用app_easy_timer,但我认为它不应该在main_func(void)中使用 - 数据不初始化....

如何做100毫秒“忙碌的循环”睡眠?
我可以做些像:
for(int x = 0; x // 没做什么
}

如果我想要时间是〜100ms的时间应该是什么限制?

问候,
oren.

关键词:
设备:
mt_dialog.
离线
最后一次露面:2个月1周前
职员
加入:2015-06-08 11:34
嗨oren,

嗨oren,

我需要一些澄清,你需要在哪一点添加100毫秒延迟?在任何类型的BLE操作开始之前(在Main_Func()在主要的时)?同样使用你提到的for循环意味着设备将醒着,这种延迟需要m0唤醒,并且还有一个默认设置延迟睡眠约两秒钟,以便xtal32定居因此,如果您需要花一些时间在那一点上,至少可以选择至少使用默认设置睡眠。关于For循环中的值您可以使用一些切换GPIO或使用ARCH_SET_PXACT_GPIO()和电源分析器来测量它,我使用GPIO切换和逻辑分析仪测量320000的100ms。

谢谢mt_dialog.

oren.
离线
最后一次露面:1年7个月前
专家
加入:2014-06-28 22:03
好的,

好的,
我想我发现了类似的功能,可以在adc.c中做我需要的东西:


void adc_usdelay(uint32_t nof_us)
{
而(nof_us--){
__nop();
__nop();
__nop();
__nop();
__nop();
__nop();
__nop();
__nop();
__nop();
__nop();
__nop();
}
}

是的,我需要在system_init之前的main_func中进行睡眠(甚至在while循环之前)。

谢谢,
oren.

mt_dialog.
离线
最后一次露面:2个月1周前
职员
加入:2015-06-08 11:34
嗨oren,

嗨oren,

是的,这也是如此,只是为了清楚,当你这样做的时候,设备不会睡觉,你不会在设备进入主循环时睡觉前睡觉,并且在2秒钟内完成了XTAL32之前。

谢谢mt_dialog.