利用STM32CubeMX软件生成USB_HOST读写U盘

一、测试平台:
MCU:STM32F429IGT6
工具:STM32CubeMX软件
编译软件:MDK

二、配置步骤
(1).打开STM32CubeMX软件,创建新的工程文件,点击ACCESS TO MCU SELECTOR选项。
在这里插入图片描述
(2).选择芯片型号,在这里选择STM32F429IGT6型号。
在这里插入图片描述
(3).配置时钟,点击System Core项下的RCC栏,由于电路板上有外部晶振,这里配置外部晶振,High Speed Clock(HSE),Low Speed Clock(LSE)都设置为Crystal/Ceramic Resonator。
在这里插入图片描述
(4),配置时钟数(Clock Configuration),由于电路板上的晶振分别为25MHZ,32.768KHZ,在这里我们输入25MHZ,HCLK栏输入180之后按回车键,让软件自动配置完成。
在这里插入图片描述
(5).配置串口1,用于调试使用,Mode栏选择Asynchronous,管脚选择PA9,PA10,电路板上串口1对应PA9,PA10,勾选USART1 global interrupt中断。
在这里插入图片描述
(6).填写工程文件信息,按如下图示设置即可
在这里插入图片描述
在这里插入图片描述
(7).生成代码,用于测试串口1生成的工程项目是否可用,点击GENERATE CODE。
(8).测试代码,在工程文件中添加代码int fputc(int ch,FILE *f),勾选Use MicroLIB选项,用printf函数测试串口1的功能。
在这里插入图片描述
在这里插入图片描述
(9).配置USB_OTG,由于电路板上的USB引出来的管脚是PB14,PB15,所以在这里需要配置USB_OTG_HS,由于电路板上没有外接Phy,所以这里配置为内部的FS Phy,Internal FS Phy选项下Host Only。
在这里插入图片描述
(10).配置USB_HOST,由于我们是用做U盘的读写,所以在这里配置为Class For HS IP项下选择Mass Storage Host Class。
在这里插入图片描述
(11).配置FATFS,勾选USB Disk,由于我们需要用到中文,所以CODE PAGE选择Simplified Chinese (DBCS),配置为长文件名,USE_LFN选择Enabled with static working buffer on…
在这里插入图片描述
(12).配置完USB之后,返回Clock Configuration界面下更新时钟,可看到48MHZ的时钟现在生效了,用来操作U盘的,再次生成代码GENERATE CODE。
在这里插入图片描述
(13).打开工程文件,替换USBH_UsrLog(…)宏定义为
#define USBH_UsrLog(…) do {
printf(“USBH_UsrLog: “) ;
printf(VA_ARGS);
printf(”\n”);
} while (0)
在这里插入图片描述
(14).编译完成之后,下载到电路板上,插入U盘,串口1输出以下信息,说明生成的USB Host成功。

在这里插入图片描述
(15),若需要生成带有FreeRtos的工程,则配置FreeRtos。
在这里插入图片描述
(16).USB_Host需要重新设置一下,CMSIS_RTOS中的 USBH_USE_OS Enable,USBH_PROCESS_STACK_SIZE 512,默认堆栈大小为128,经实验当U盘插入之后,程序会进入HardFault_Handler,修改为512正常。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qizhi321123/article/details/126363052