|
发表于 2020-12-17 13:31:39
|
显示全部楼层
你这工程建立的有问题吧,如果选择CMSIS_V2,自然会调用cmsis_os2里面的文件,cmsis_os文件中有个条件判断:
#if (osCMSIS < 0x20000U),默认建立的工程应该是这样的:
int ff_cre_syncobj ( /* 1:Function succeeded, 0:Could not create the sync object */
BYTE vol, /* Corresponding volume (logical drive number) */
_SYNC_t *sobj /* Pointer to return the created sync object */
)
{
int ret;
#if _USE_MUTEX
#if (osCMSIS < 0x20000U)
osMutexDef(MTX);
*sobj = osMutexCreate(osMutex(MTX));
#else
*sobj = osMutexNew(NULL);
#endif
#else
#if (osCMSIS < 0x20000U)
osSemaphoreDef(SEM);
*sobj = osSemaphoreCreate(osSemaphore(SEM), 1);
#else
*sobj = osSemaphoreNew(1, 1, NULL);
#endif
#endif
ret = (*sobj != NULL);
return ret;
}
,这样就不会出现你的未定义文件;不过你要是想用configUSE_PORT_OPTIMISED_TASK_SELECTION,是要改下文件,不然会报错误,因为是任务优先级问题 |
|