使用STM32CubeMx创建U盘读写程序

平台

windows 7

CPU:STM32F205

软件:keil 5

下载STM32CubeMx:http://pan.baidu.com/s/1bpsvV6R

安装好后,建立usbMassClass工程,注意选择芯片。

选择自己要的功能如下图:

外部是时钟的选择:

使用STM32CubeMx创建U盘读写程序_第1张图片

FSUSB的选择

使用STM32CubeMx创建U盘读写程序_第2张图片


debug口选择UASRT1



选择USB IPcore

使用STM32CubeMx创建U盘读写程序_第3张图片

注意这里选择了USBDisk文件系统以及MassStorage Host。


总体芯片的配置:

使用STM32CubeMx创建U盘读写程序_第4张图片

细节的配置了:

时钟配置


使用STM32CubeMx创建U盘读写程序_第5张图片

USART、USB、USB IPCore配置

使用STM32CubeMx创建U盘读写程序_第6张图片

这里可以修改的,点击对应的模块,在弹出的即可配置。

生成代码:

点击菜单栏的【project】 ->【Setting】,设置工程环境,弹出如下菜单:
使用STM32CubeMx创建U盘读写程序_第7张图片

【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 */
}


改代码就是USB枚举的过程,最后阶段就是
 
   
 
   
 
   
 
  
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不多说明,网上很多!


你可能感兴趣的:(STM32,嵌入式,keil,C)