使用RL-USB V6.13模拟多U盘
使用RL-USB V6.13模拟多U盘,电脑能够映射出多个U盘,但是都是同一个盘映射出来的,按手册说需要调用USBD_User_MSC_LUN_n.c里面的函数,也定义了__DOXYGEN__,但是始终都只会调用USBD_User_MSC_0.c单个磁盘里面的函数,不知道怎么回事。折腾一下午,终于是解决了,不是运行的USBD_User_MSC_LUN_n.c里面USBD_MSCn_Initialize类的函数,还是执行的USBD_User_MSC_0.c里面的函数,弱定义了在usbd_config.h里面,把USBD_User_MSC_LUN_n.c实现的多磁盘这些函数改名成下面这些就行了
__WEAKuint8_t USBD_MSC0_GetMaxLUN (void) { return 0U; }
__WEAKbool USBD_MSC0_LUN_GetMediaCapacity (uint8_t lun, uint32_t *block_count, uint32_t *block_size) { (void)lun; return (USBD_MSC0_GetMediaCapacity (block_count, block_size)); }
__WEAKbool USBD_MSC0_LUN_Read (uint8_t lun, uint32_t lba, uint32_t cnt, uint8_t *buf) { (void)lun; return (USBD_MSC0_Read (lba, cnt, buf)); }
__WEAKbool USBD_MSC0_LUN_Write (uint8_t lun, uint32_t lba, uint32_t cnt, const uint8_t *buf) { (void)lun; return (USBD_MSC0_Write (lba, cnt, buf)); }
__WEAKbool USBD_MSC0_LUN_StartStop (uint8_t lun, bool start) { (void)lun; return (USBD_MSC0_StartStop (start)); }
__WEAKuint32_tUSBD_MSC0_LUN_CheckMedia (uint8_t lun)
页:
[1]