我正在使用一个代码库,它使用Chan的FatFS库,可能是使用CubeMX代码生成器开发的.我可以看到下面给出的代码.它在STM32 user manual UM1721中也有描述
struct 的定义如下:
typedef struct
{
uint8_t is_initialized[_VOLUMES];
Diskio_drvTypeDef *drv[_VOLUMES];
__IO uint8_t nbr;
}Disk_drvTypeDef;
disk
是一个全局变量,定义为:
Disk_drvTypeDef disk = {0};
函数的定义如下:
uint8_t FATFS_LinkDriver(Diskio_drvTypeDef *drv, char *path)
{
uint8_t ret = 1;
uint8_t DiskNum = 0;
if(disk.nbr <= _VOLUMES)
{
disk.is_initialized[disk.nbr] = 0;
disk.drv[disk.nbr] = drv;
DiskNum = disk.nbr++;
path[0] = DiskNum + '0';
path[1] = ':';
path[2] = '/';
path[3] = 0;
ret = 0;
}
return ret;
}
我的问题是,当disk.nbr == _VOLUMES
,我调用FATFS_LinkDriver
函数时,会发生什么.它不会试着把drv
放在disk.drv[_VOLUMES]
中吗?但disk.drv
的尺寸是_VOLUMES
.那么,最大指数不应该比这个数字小1吗?我是不是遗漏了什么?