主题中讨论的其他器件:MSP430FR5994、 MSP430F5529、
工具/软件: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;
}
}