史提夫,
我看了一下这个项目,并添加了您提供的修改的(;)循环。如果您还记得我前面提供的示例,您将需要调用过程服务器直到广告开始。基本上,在CythBuryHalf.It.c文件中的修复是不完整的,没有堆栈库中的另一个修复——我们只使用修复的一半。完整修复将很快作为PDL 3.0.4(一个或两个星期)的一部分。
这就是我的(循环)循环的样子(我相信标志名称是不言自明的),并且我的广告在每一次超时后都开始良好。
(;)
{
如果(过程)iStaskon)ISStaveAdvut完备)
{
Cyle Burr进程();
过程错误;
}
如果(!)CythySypMyCM0ISLoWPOWER()
{
CythySypMsEndoLoPultMeod();
}
CythEnEnLyBulsBelsStisteTyBelStest= CyBulyStaskGutBelestStand();
如果(BelsSt==CythBulyBelsStisteAc能能能生)BelsSt==CythBulyBelsStAtEyEx Eoo稳)
{
CythEnthySypMsStutsSutht APIREST=CythySypMyS入睡(CythySypMmithWaITY-FuxId中断);
如果(APIREST)!CysySypMm成功
{
CygGPIOSET(dBu00xPoT,dBy00nnUm);/ /不工作
}
其他的
{
CygGPIO-CLR(dBu00PoT,dBu00nnUm);/ /工作
}
}
其他的
{
CythEnthySypMsStutsSutht APIREST=CysySypMyDeSt入睡(CythySypMmithWaiTi For中断);
如果(APIREST)!CysySypMm成功
{
CygGPIOSET(dBu11PoT,dBu11nNm);/ /不工作
}
其他的
{
CygGPIO-CLR(dBu11PoT,dBu11nNm);/ /工作
}
}
}
所以请添加那个代码,看看它是否修复了这个问题。
当做,
Meenakshi Sundaram R
以上来自于百度翻译
以下为原文
Steve,
I took a look at the project and added the modified for(;;) loop you provided. If you remember the example I provided earlier, you will need to call ProcessEvents till Advertisement starts. Basically the fix in the cy_ble_hal_int.c file is incomplete without another fix in the stack library - we are using only one half of the fix. The complete fix will be soon out as part of PDL 3.0.4 (in a week or two).
This is how my for(;;) loop looks like (I believe the flag names are self explanatory ) and my advertisement starts fine after every timeout.
for(;;)
{
if(processEvents || (!isStackOn) || (!isStartAdvComplete))
{
Cy_BLE_ProcessEvents();
processEvents = false;
}
if(!Cy_SysPm_Cm0IsLowPower())
{
Cy_SysPm_EnterLowPowerMode();
}
cy_en_ble_bless_state_t bleSsState = Cy_BLE_StackGetBleSsState();
if(bleSsState == CY_BLE_BLESS_STATE_ACTIVE || bleSsState == CY_BLE_BLESS_STATE_ECO_STABLE)
{
cy_en_syspm_status_t apiResult = Cy_SysPm_Sleep(CY_SYSPM_WAIT_FOR_INTERRUPT);
if(apiResult != CY_SYSPM_SUCCESS)
{
Cy_GPIO_Set(DB_0_PORT,DB_0_NUM); // Doesn't work
}
else
{
Cy_GPIO_Clr(DB_0_PORT,DB_0_NUM); // Work
}
}
else
{
cy_en_syspm_status_t apiResult = Cy_SysPm_DeepSleep(CY_SYSPM_WAIT_FOR_INTERRUPT);
if(apiResult != CY_SYSPM_SUCCESS)
{
Cy_GPIO_Set(DB_1_PORT,DB_1_NUM); // Doesn't work
}
else
{
Cy_GPIO_Clr(DB_1_PORT,DB_1_NUM); // Work
}
}
}
So please add that code and see if that fixes the issue.
Regards,
Meenakshi Sundaram R
史提夫,
我看了一下这个项目,并添加了您提供的修改的(;)循环。如果您还记得我前面提供的示例,您将需要调用过程服务器直到广告开始。基本上,在CythBuryHalf.It.c文件中的修复是不完整的,没有堆栈库中的另一个修复——我们只使用修复的一半。完整修复将很快作为PDL 3.0.4(一个或两个星期)的一部分。
这就是我的(循环)循环的样子(我相信标志名称是不言自明的),并且我的广告在每一次超时后都开始良好。
(;)
{
如果(过程)iStaskon)ISStaveAdvut完备)
{
Cyle Burr进程();
过程错误;
}
如果(!)CythySypMyCM0ISLoWPOWER()
{
CythySypMsEndoLoPultMeod();
}
CythEnEnLyBulsBelsStisteTyBelStest= CyBulyStaskGutBelestStand();
如果(BelsSt==CythBulyBelsStisteAc能能能生)BelsSt==CythBulyBelsStAtEyEx Eoo稳)
{
CythEnthySypMsStutsSutht APIREST=CythySypMyS入睡(CythySypMmithWaITY-FuxId中断);
如果(APIREST)!CysySypMm成功
{
CygGPIOSET(dBu00xPoT,dBy00nnUm);/ /不工作
}
其他的
{
CygGPIO-CLR(dBu00PoT,dBu00nnUm);/ /工作
}
}
其他的
{
CythEnthySypMsStutsSutht APIREST=CysySypMyDeSt入睡(CythySypMmithWaiTi For中断);
如果(APIREST)!CysySypMm成功
{
CygGPIOSET(dBu11PoT,dBu11nNm);/ /不工作
}
其他的
{
CygGPIO-CLR(dBu11PoT,dBu11nNm);/ /工作
}
}
}
所以请添加那个代码,看看它是否修复了这个问题。
当做,
Meenakshi Sundaram R
以上来自于百度翻译
以下为原文
Steve,
I took a look at the project and added the modified for(;;) loop you provided. If you remember the example I provided earlier, you will need to call ProcessEvents till Advertisement starts. Basically the fix in the cy_ble_hal_int.c file is incomplete without another fix in the stack library - we are using only one half of the fix. The complete fix will be soon out as part of PDL 3.0.4 (in a week or two).
This is how my for(;;) loop looks like (I believe the flag names are self explanatory ) and my advertisement starts fine after every timeout.
for(;;)
{
if(processEvents || (!isStackOn) || (!isStartAdvComplete))
{
Cy_BLE_ProcessEvents();
processEvents = false;
}
if(!Cy_SysPm_Cm0IsLowPower())
{
Cy_SysPm_EnterLowPowerMode();
}
cy_en_ble_bless_state_t bleSsState = Cy_BLE_StackGetBleSsState();
if(bleSsState == CY_BLE_BLESS_STATE_ACTIVE || bleSsState == CY_BLE_BLESS_STATE_ECO_STABLE)
{
cy_en_syspm_status_t apiResult = Cy_SysPm_Sleep(CY_SYSPM_WAIT_FOR_INTERRUPT);
if(apiResult != CY_SYSPM_SUCCESS)
{
Cy_GPIO_Set(DB_0_PORT,DB_0_NUM); // Doesn't work
}
else
{
Cy_GPIO_Clr(DB_0_PORT,DB_0_NUM); // Work
}
}
else
{
cy_en_syspm_status_t apiResult = Cy_SysPm_DeepSleep(CY_SYSPM_WAIT_FOR_INTERRUPT);
if(apiResult != CY_SYSPM_SUCCESS)
{
Cy_GPIO_Set(DB_1_PORT,DB_1_NUM); // Doesn't work
}
else
{
Cy_GPIO_Clr(DB_1_PORT,DB_1_NUM); // Work
}
}
}
So please add that code and see if that fixes the issue.
Regards,
Meenakshi Sundaram R
举报