This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/CC3100:CC3100Boost / MSP430FR5994 Launchpad -在 sl_Start ()处进入循环

Guru**** 2540720 points
Other Parts Discussed in Thread: MSP430FR5994, MSP430F5529, CC3100BOOST

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/749354/ccs-cc3100-cc3100boost-msp430fr5994-launchpad---getting-stuck-in-loop-at-sl_start

器件型号:CC3100
主题中讨论的其他器件:MSP430FR5994MSP430F5529

工具/软件:Code Composer Studio

(这是我第一次使用微控制器、也是在这里发布、所以请告诉我是否需要提供其他信息或者是否需要在其他地方发布)

大家好、我正在尝试将 CC3100Boost 与 MSP430F45R994 Launchpad 配合使用以用于学校项目。 首先、我从 CC3100SK_1.3.0中的 PROVISIONING_WPS 示例项目开始、并在我已经拥有的 MSP430f5529 Launchpad 上运行。 现在、我将尝试将该项目连接到 MSP430FR5994板。

我复制了 fr5969示例中的电路板、SPI、UART 等文件、并更改了文件中的引脚以匹配 fr5994中的引脚。  我可以运行程序并将数据输出到命令行界面、但我一直卡在 sl_Start()函数中、特别是在_SlReturnVal_t ret = sl_SyncObjWait (pSyncObj、timeoutVal)中;

当我在5529lp 上运行项目时,我注意到代码将在 while (Timeout>0)循环中运行一次,然后在第二次循环中中断。 在5994lp 上、我一直卡在这里。

我注意到,在_SlNonOsMainLoopTask()函数中,5529lp 程序将第一次通过循环执行 spawn 函数,但5994lp 永远不会进入 if 语句并执行它。 我是否错过了移植过程中的一个步骤或忘记包含特定库?

我附加了一个 zip 文件、其中包括我的项目和我修改过的平台文件。

 

_SlNonOsRetVal_t _SlNonOsSemGet (_SlNonOsSemObj_t* pSyncObj、_SlNonOsSemObj_t WaitValue、_SlNonOsSemObj_t SetValue、_SlNonOsSemObj_t Timeout)
{
#if (!define (sl_Tiny)))&(定义的(sl_GetTimestamp)
SlTimeoutParams_t TimeoutInfo={0};
#endif

//如果配置了超时0,只需检测该值并返回*/
if ((Timeout=0)&&(WaitValue ==*(volatile _u8 *) pSyncObj))
({
*pSyncObj = SetValue;
return Nonos_RET_OK;
}

#if (!defined (sl_Tiny)))&&(defined (sl_GetTimestamp)))
if ((超时!= Nonos_wait_forever)&&(超时!= Nonos_no_wait))
{
_SlDrvStartMeasureTimeout (&TimeoutInfo、Timeout);
}
#endif

#ifdef _SlSyncWaitLoopCallback
_SlNonOsTime_t timeOutRequest =超时;
#endif
while (超时>0)
{
if (WaitValue ==*(volatile _u8 *) pSyncObj)
{
*pSyncObj = SetValue;
中断;
}
#if (!defined (sl_GetTimestamp))||(defined (sl_Tiny_EXT))
if (超时!= Nonos_wait_forever)
{
超时--;
}
其他
if ((超时!= Nonos_wait_forever)&&(超时!= Nonos_no_wait))
{
如果(_SlDrvIsTimeoutExpired (&TimeoutInfo))
{
返回(_SlNonOsRetVal_t) Nonos_RET_ERR;
}

}
#endif

/*如果我们处于 cmd 上下文并等待其 cmd 响应
*请勿处理已生成的异步事件、因为已进行全局锁定*/
if (false =g_pc->IsCmdRespited)
{
(void)_SlNonOsMainLoopTask();
}
#ifdef _SlSyncWaitLoopCallback
if ((__non_os_sync_obj_signal_value == WaitValue)&&(timeOutRequest!= Nonos_no_wait))
{
if (WaitValue ==*(volatile _u8 *) pSyncObj)
{
*pSyncObj = SetValue;
中断;
}
_slSyncWaitLoopCallback();
}
#endif
}

如果(0 =超时)
{
返回 Nonos_RET_ERR
;}
其他
{
返回 Nonos_RET_OK;
}
} 

 e2e.ti.com/.../3644.test3.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    由于您一直处于 sl_start()状态,并且没有获得 sprawn 任务,这意味着您尚未到达 _SlDrvRxIrqHandler() IRQ 处理程序。

    您始终可以尝试放置一个断点、并验证是否到达此处。

    您需要验证的是、连接到主机 IRQ 线路和 NHIB 线路的 GPIO 是否正常。 如果由于某种原因器件由于 NHIB GPIO 不良而未正确加电、或者 由于主机 IRQ 不良而未触发主机-您将无法获得 _SlDrvRxIrqHandler() IRQ 处理程序。

    您还可以使用逻辑分析仪探测这两条线。

    此致、

    Shlomi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Shlomi、

    我将断点放置在中、您说得对、我不会像在5529lp 项目中那样点击 IRQ 处理程序。 现在我必须将这个项目放在后台运行、但是当我有机会时、我将仔细检查 NHIB 和 IRQ 线路。

    谢谢、
    Isaac

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Isaac、

    感谢您的更新。 如果需要14天以上、线程将关闭。 如果是这种情况、我建议关闭这个并打开一个引用这个的新线程。

    此致、
    Shlomi