qqtfh 发表于 2015-1-29 10:45:02

求指点,USB虚拟读卡器的问题

本帖最后由 qqtfh 于 2015-1-29 10:57 编辑

RTT自带有USB组件,无奈资源有限,找不到大容量存储方面的参考例程。只好去移植ST USB lib了。附件已经实现了SPI SD Card的移植,并验证是可用了。但是ST USB lib移植不成功
第二次进入
void USB_LP_CAN1_RX0_IRQHandler(void)
{
        rt_interrupt_enter();
USB_Istr();
        rt_interrupt_leave();
}
中断的时候,便不退出了。
求指点。



qqtfh 发表于 2015-1-30 10:25:00

发现问题了
usb_conf.h中
#define IMR_MSK (CNTR_CTRM| CNTR_WKUPM | CNTR_SUSPM | CNTR_ERRM| CNTR_SOFM \
               | CNTR_ESOFM | CNTR_RESETM )
对USB中断的定义
替换成
#define IMR_MSK (CNTR_CTRM| CNTR_RESETM)
参考<<STM32中文参考手册-V1.0>>412页USB控制寄存器(USB_CNTR).
目前已经出现盘符,还有一些问题。

qqtfh 发表于 2015-1-30 13:40:40

{:sad:}是问题太肤浅了么,大家都不屑于回答。

qqtfh 发表于 2015-1-31 16:49:40





已经可以正常读取和写入了。
但是仍然有很多疑惑的地方。
运行msdDev->parent.read(&msdDev->parent,Memory_Offset/Mass_Block_Size,Readbuff,Transfer_Length/Mass_Block_Size);的时候
result = rt_mutex_take(&(device->bus->lock), RT_WAITING_FOREVER);

finsh会提示,不允许在ISR中进行rt_mutex_take。
于是似,我把rt_spi_configure和MSD_take_owner中的rt_mutex_take与rt_mutex_release都注释掉,才可以正常识别。
有没其它办法代替rt_mutex?
页: [1]
查看完整版本: 求指点,USB虚拟读卡器的问题