
笔者使用硬石例程78(F4系列)基于FAT的USB HOST工程代码,在阅读代码时发现一个问题如下: 在文件ff_gen_drv.h中定义了结构体Diskio_drvTypeDef和Disk_drvTypeDef: typedef struct { DSTATUS (*disk_initialize) (BYTE); /*!< Initialize Disk Drive */ DSTATUS (*disk_status) (BYTE); /*!< Get Disk Status */ DRESULT (*disk_read) (BYTE,BYTE*, DWORD, UINT); /*!< ReadSector(s) */ #if _USE_WRITE == 1 DRESULT (*disk_write) (BYTE,const BYTE*, DWORD, UINT); /*!< Write Sector(s) when _USE_WRITE = 0 */ #endif /* _USE_WRITE == 1 */ #if _USE_IOCTL == 1 DRESULT (*disk_ioctl) (BYTE,BYTE, void*); /*!< I/O control operation when _USE_IOCTL= 1 */ #endif /* _USE_IOCTL == 1 */ }Diskio_drvTypeDef; /** *@brief Global Disk IO Drivers structuredefinition */ typedef struct { uint8_t is_initialized[_VOLUMES]; Diskio_drvTypeDef *drv[_VOLUMES]; uint8_t lun[_VOLUMES]; __IO uint8_t nbr; }Disk_drvTypeDef; 在文件usbh_diskio.c中初始化了结构体Diskio_drvTypeDef: const Diskio_drvTypeDef USBH_Driver = { USBH_initialize, USBH_status, USBH_read, #if _USE_WRITE == 1 USBH_write, #endif /* _USE_WRITE == 1 */ #if _USE_IOCTL == 1 USBH_ioctl, #endif /* _USE_IOCTL == 1 */ }; 现在的问题是,在主程序中使用了f_read函数,而f_read函数调用了disk_read函数,而在disk_read函数中有如下语句: res =disk.drv[pdrv]->disk_read(disk.lun[pdrv], buff, sector, count); 但是经过程序仿真跟踪发现,上句真正执行的函数是usbh_diskio.c中USBH_read函数。 上述的原因是什么? |
ART-PI H750-USB-MSC 设备描述符异常
stm32h743 usbh msc 读写 u盘 新购买的 u盘只能识别到但不能进行读写 ?
stm32哪个系列芯片支持2个USB,主设备,且usb可以支持标准的uvc协议,哪里可以下载usb开发库
新手小白,SMT32 TP Tool Windows无法安装驱动怎么处理
如何用c#使用ST25R3911DISCOComm.dll来读取和写入NDEF区的数据,需要相关例程,感谢各位大佬拯救一下我啊!????
USBx配置有哪些小的需要注意的细节?
H743ZIT6 USB虚拟串口 CDC电脑无法识别(获取描述符失败)
STM32F407的高速USB,采用的是虚拟串口方式,VCP驱动有linux系统的吗
STM32H533的USB使用问题
stlink 串口驱动安装前面有叹号软件里无法找到