你好,
我们在模块中存在问题 - 当插入电池时,〜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.
关键词:
设备:
嗨oren,
我需要一些澄清,你需要在哪一点添加100毫秒延迟?在任何类型的BLE操作开始之前(在Main_Func()在主要的时)?同样使用你提到的for循环意味着设备将醒着,这种延迟需要m0唤醒,并且还有一个默认设置延迟睡眠约两秒钟,以便xtal32定居因此,如果您需要花一些时间在那一点上,至少可以选择至少使用默认设置睡眠。关于For循环中的值您可以使用一些切换GPIO或使用ARCH_SET_PXACT_GPIO()和电源分析器来测量它,我使用GPIO切换和逻辑分析仪测量320000的100ms。
谢谢mt_dialog.
好的,
我想我发现了类似的功能,可以在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.
嗨oren,
是的,这也是如此,只是为了清楚,当你这样做的时候,设备不会睡觉,你不会在设备进入主循环时睡觉前睡觉,并且在2秒钟内完成了XTAL32之前。
谢谢mt_dialog.