硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1795|回复: 1
收起左侧

使用RL-USB V6.13模拟多U盘

[复制链接]

10

主题

11

回帖

41

积分

新手上路

积分
41
发表于 2020-9-18 17:52:56 | 显示全部楼层 |阅读模式
使用RL-USB V6.13模拟多U盘,电脑能够映射出多个U盘,但是都是同一个盘映射出来的,按手册说需要调用USBD_User_MSC_LUN_n.c里面的函数,也定义了__DOXYGEN__,但是始终都只会调用USBD_User_MSC_0.c单个磁盘里面的函数,不知道怎么回事。
1.png
2.png
回复

使用道具 举报

10

主题

11

回帖

41

积分

新手上路

积分
41
 楼主| 发表于 2020-9-18 18:23:25 | 显示全部楼层
折腾一下午,终于是解决了,不是运行的USBD_User_MSC_LUN_n.c里面USBD_MSCn_Initialize类的函数,还是执行的USBD_User_MSC_0.c里面的函数,弱定义了在usbd_config.h里面,把USBD_User_MSC_LUN_n.c实现的多磁盘这些函数改名成下面这些就行了
__WEAK  uint8_t   USBD_MSC0_GetMaxLUN                     (void)                                                        { return 0U; }

__WEAK  bool      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)); }
__WEAK  bool      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));           }
__WEAK  bool      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));           }
__WEAK  bool      USBD_MSC0_LUN_StartStop                 (uint8_t lun, bool start)                                     { (void)lun; return (USBD_MSC0_StartStop        (start));                   }
__WEAK  uint32_t  USBD_MSC0_LUN_CheckMedia                (uint8_t lun)   
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-7-6 17:13 , Processed in 0.372990 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表