平台
windows 7
CPU:STM32F205
软件:keil 5
下载STM32CubeMx:http://pan.baidu.com/s/1bpsvV6R
安装好后,建立usbMassClass工程,注意选择芯片。
选择自己要的功能如下图:
外部是时钟的选择:
FSUSB的选择
debug口选择UASRT1
选择USB IPcore
注意这里选择了USBDisk文件系统以及MassStorage Host。
总体芯片的配置:
细节的配置了:
时钟配置
USART、USB、USB IPCore配置
这里可以修改的,点击对应的模块,在弹出的即可配置。
生成代码:
点击菜单栏的【project】 ->【Setting】,设置工程环境,弹出如下菜单:
【project】 ->【Generate Code】即可生成代码!此代码就集成了枚举U盘过程。
具体看代码:定位到此:
/*
* user callbak definition
*/
static void USBH_UserProcess (USBH_HandleTypeDef *phost, uint8_t id)
{
/* USER CODE BEGIN 2 */
switch(id)
{
case HOST_USER_SELECT_CONFIGURATION:
break;
case HOST_USER_DISCONNECTION:
//printf("user HOST_USER_DISCONNECTION\r\n");
Appli_state = APPLICATION_DISCONNECT;
break;
case HOST_USER_CLASS_ACTIVE:
//printf("user HOST_USER_CLASS_ACTIVE\r\n");
Appli_state = APPLICATION_READY;
break;
case HOST_USER_CONNECTION:
//printf("user connetction\r\n");
Appli_state = APPLICATION_START;
break;
case HOST_USER_UNRECOVERED_ERROR:
Appli_state = APPLICATION_DISCONNECT;
break;
default:
break;
}
/* USER CODE END 2 */
}
Appli_state = APPLICATION_READY;这个阶段,这个阶段就可以对U盘的读写啦!!!
读写U盘程序:if((r=f_mount(&FS,"0", 0))!= FR_OK)//mount u盘!
if(r=f_open(fpr, USB_UPDATE_FILE, FA_READ)) != FR_OK))
open里面的文件!剩下就很简单了,就是按照应用层来写读写OK了!
对于debug UASRT不多说明,网上很多!