|
笔者使用硬石例程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函数。 上述的原因是什么? |
Your UAT Feedback is needed within today.
STM32_USB_Device_Library
用STM32F4 Cube MX生成的USB Device C代码的BUG
STM32F446 USB和串口1 冲突
STM32f407ZG使用STM32CubeMX创建USB应用失败
请教stm32F105 USB开发资料去哪里下载
STM32F103VE-USB-VCOM发不出数据
STM32cubemx 配置出的 USB HID 电脑无法识别
[STM32L496] 求助USBCDC通信,PC端总是需要插拔USB线问题
STM32F USB DFU下载无法识别USB设备
微信公众号
手机版