|

楼主 |
发表于 2016-3-29 09:07:49
|
显示全部楼层
回 eric2013 的帖子
eric2013:
应该是互斥信号量的使用错误。修改下。
互斥信号量是这样创建的。
.......  首选对你一直以来的帮助表示感谢!但现在还是需要你的帮助,还请指教。现在情况具体如下:
按照你的指导创建信号量如下:
OS_EVENT *FILE_MUTEX; /* óÃóú»¥3a */
int ff_cre_syncobj ( /* 1:Function succeeded, 0:Could not create due to any error */
BYTE vol, /* Corresponding logical drive being processed */
_SYNC_t* sobj /* Pointer to return the created sync object */
)
{
INT8U err;
int ret;
FILE_MUTEX = OSMutexCreate(0, &err); /* uC/OS-II */
*sobj = *FILE_MUTEX; 这句 不知道要不要,加上以后编译报错。
ret = (err == OS_NO_ERR);
return ret;
}
1)如果加上*sobj = *FILE_MUTEX; 编译报警如下:
Build target 'project'
compiling syscall.c...
user\\FatFS\\src\\option\\syscall.c(40): error: #7: unrecognized token
user\\FatFS\\src\\option\\syscall.c(40): error: #29: expected an expression
user\\FatFS\\src\\option\\syscall.c(40): error: #7: unrecognized token
Target not created
2)如果不加*sobj = *FILE_MUTEX; 编译能通过,系统也能多任务运行,但在打开文件目录时f_opendir(&DirInf, "/");时返时错误码是15
FR_TIMEOUT, /* (15) Could not get a grant to access the volume within defined period */
3)互斥信号量不是用于协调共同对一个共享资源的单独访问,但现在我只有一个任务在访问SD卡,而且还是最高优先级的任务,其它任务都没有访问SD卡。 |
|