STM32F4 不能读写U盘
最近在学习stm32f4的usb通信,用的是STM32F4DISCOVERY和Audio_playback_and_record工程。U盘连接如下:工程就按照原样的来,在 USBH_USR_MSC_Application 函数里加入一个测试函数 f_open (&file,"0:/message.txt", FA_CREATE_ALWAYS|FA_WRITE);
调试时并不能在U盘里创建message文件,函数走近f_openl里边就停在INITBUF(dj, sfn, lfn) ,不能往下走了,请教一下是哪里出了问题
我用407测试过,可以读写到文件。楼主,可以仿真f_open,看看返回的结果是什么。 楼主,是否挂载了U盘?最好把整体的代码提出来,U盘使用的时候,要先挂载,不然文件系统识别不了。 安 发表于 2017-3-16 08:44
楼主,是否挂载了U盘?最好把整体的代码提出来,U盘使用的时候,要先挂载,不然文件系统识别不了。 ...
我是找的stm32f4discovery_FW_V1.1.0中的 Audio_playback_and_record 工程,都没有改,不是枚举完了就进入USBH_USR_MSC_Application用户程序了吗,在这里我自己添了几行测试代码,通过打印串口因袭,f_mount函数应该是执行成功了,没有打印mount fialed。然后程序就停在f_open里边了。主要是现成的与discovery板对应的U盘工程找不到,刚好发现以前的库有这个功能,所以就拿来学习了。
int USBH_USR_MSC_Application(void)
{
uint8_t res=0;
switch (USBH_USR_ApplicationState)
{
case USH_USR_FS_INIT:
/* Initialises the File System*/
if (f_mount( 0, &fatfs ) != FR_OK )
{
/* efs initialisation fails*/
printf("mount fialed\n");
return(-1);
}
printf("app start\n");
/* Flash Disk is write protected */
if (USBH_MSC_Param.MSWriteProtect == DISK_WRITE_PROTECTED)
{
while(1)
{
/* Red LED On */
STM_EVAL_LEDOn(LED5);
}
}
/* Go to menu */
f_open(&file, MYNAME, FA_CREATE_ALWAYS | FA_WRITE);
printf("fopen done\n");
USBH_USR_ApplicationState = USH_USR_AUDIO;
break;
case USH_USR_AUDIO:
/* Go to Audio menu */
// COMMAND_AudioExecuteApplication();
/* Set user initialization flag */
USBH_USR_ApplicationState = USH_USR_FS_INIT;
break;
default:
break;
}
return(0);
} 枚举过程完成后,是否能读取到U盘的容量,信息等?
页:
[1]