使用STM32CubeMx创建U盘读写程序

发布者:见贤思奇异果最新更新时间:2017-07-13 来源: eefocus关键字:STM32CubeMx  创建U盘  读写程序 手机看文章 扫描二维码
随时随地手机看文章

平台

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盘过程。

具体看代码:定位到此:


  1. /* 

  2.  * user callbak definition 

  3. */   

  4. static void USBH_UserProcess  (USBH_HandleTypeDef *phost, uint8_t id)  

  5. {  

  6.   

  7.   

  8.   /* USER CODE BEGIN 2 */  

  9.   switch(id)  

  10.   {   

  11.   case HOST_USER_SELECT_CONFIGURATION:  

  12.   break;  

  13.       

  14.   case HOST_USER_DISCONNECTION:  

  15.         //printf("user HOST_USER_DISCONNECTION\r\n");  

  16.   Appli_state = APPLICATION_DISCONNECT;  

  17.   break;  

  18.       

  19.   case HOST_USER_CLASS_ACTIVE:  

  20.         //printf("user HOST_USER_CLASS_ACTIVE\r\n");  

  21.         Appli_state = APPLICATION_READY;  

  22.   break;  

  23.   

  24.   

  25.   case HOST_USER_CONNECTION:  

  26.         //printf("user connetction\r\n");  

  27.         Appli_state = APPLICATION_START;  

  28.   break;  

  29.   

  30.   

  31.     case HOST_USER_UNRECOVERED_ERROR:  

  32.         Appli_state = APPLICATION_DISCONNECT;  

  33.     break;  

  34.   

  35.   

  36.   default:  

  37.   break;   

  38.   }  

  39.   /* USER CODE END 2 */  

  40. }  

改代码就是USB枚举的过程,最后阶段就是


  1.   

  2.   

  3.   


  1. Appli_state = APPLICATION_READY;这个阶段,这个阶段就可以对U盘的读写啦!!!  


  1. 读写U盘程序:if((r=f_mount(&FS,"0", 0))!= FR_OK)//mount u盘!  

  2. if(r=f_open(fpr, USB_UPDATE_FILE, FA_READ)) != FR_OK))  

  3. open里面的文件!剩下就很简单了,就是按照应用层来写读写OK了!  

  4. 对于debug UASRT不多说明,网上很多!  



关键字:STM32CubeMx  创建U盘  读写程序 引用地址:使用STM32CubeMx创建U盘读写程序

上一篇:STM32F205双USB开发做device
下一篇:OV7740 之STM32 源代码

推荐阅读最新更新时间:2024-03-16 15:35

STM32CubeMx的初始配置顺序是怎么影响DMA功能的
‍经常有STM32开发者基于STM32CubeMx进行配置并生成基于HAL库的初始化代码,当涉及到DMA功能时,发现DMA功能无效,但从配置操作及代码本身又似乎找不出原因来的情况。此情此景 往往挺令人抓狂的。 比方曾有人反馈,他使用STM32F4系列芯片进行产品开发,通过STM32CubeMx配置并生成初始化代码,使用了UART的DMA传输。但他发现DMA根本不工作。后来他无意中发现,是因为他在用户代码里不经意地调整过UART外设和DMA外设初始化代码的前后顺序,当他重新调整二者的先后顺序后就一切正常了【此时DMA初始化代码在前,UART初始化代码在后】。他想知道这个顺序是怎么影响DMA功能的。 我顺手拿了块STM32F3
[单片机]
<font color='red'>STM32CubeMx</font>的初始配置顺序是怎么影响DMA功能的
STM32CubeMx外部中断基本使用方法
第一步:现在 STM32 CubeMx 中配置所需要IO口外部中断模式: 单击对应IO口左键-- GPIO_EX TI 第二步:配置中断触发模式 GPIO-- GPIO_mode GPIO-- GPIO 上拉/下拉 这里以外部中断模式/下降边缘触发 检测 ,默认上拉( Pull-up) 为例 第三部:配置中断优先级: NVIC(嵌套向量中断控制器) -- EXTI line interrupts 根据自身需要配置中断优先级 到这里STM32CubeMx 就配置完成了,之下来分析STM32CubeMx 生成的源码 先看一下GPIO的初始化函数; static void MX_GPIO_Init(void) {
[单片机]
<font color='red'>STM32CubeMx</font>外部中断基本使用方法
stm32cubeMX生成工程文件
配置管脚结束后,点击projects-settings,在新版本的软件中可能不是这样,但无论如何都是寻找生成代码的设置部分。 打开如下,按照需要设置。 如何点击projects-generate code。在新版本的软件中可能不是这样,但无论如何都是寻找generate code(生成代码)的按键入口。 生成代码后打开工程,用户代码必须写在user xxx begin到user xxx end之间,否则重新生成代码后就会被覆盖。 修改这里可以更改HAL_Delay的单位,但stm32f103最快可以到10us。参考链接: https://blog.csdn.net/qq_45467083/article/details/
[单片机]
<font color='red'>stm32cubeMX</font>生成工程文件
STM32CubeMX系列教程
STM32Cube 是一个全面的软件平台,包括了ST产品的每个系列。平台包括了STM32Cube 硬件抽象层(一个STM32抽象层嵌入式软件,确保在STM32系列最大化的便携性)和一套的中间件组件(RTOS, USB, FatFs, TCP/IP, Graphics, 等等). 直观的STM32微控制器的选择和时钟树配置 微控制器图形化配置外围设备和中间件的功能模式和初始化参数 C代码生成项目覆盖STM32微控制器的初始化符合IAR™,Keil的™和GCC编译器。 对于新的产品设计,我们强烈推荐使用STM32Cube来加速你的开发过程,并为以后的产品平台移植打下良好的基础。 1.新建工程 打开STM32cubeMX软件,点
[单片机]
<font color='red'>STM32CubeMX</font>系列教程
GPIO流水灯—基于Stm32CubeMX创建工程实现流水灯
一、了解GPIO结构 二、GPIO的工作模式 GPIO有8种工作模式 1.输入浮空 当GPIOx_ CRL 或GPIOx_CRH 寄存器的CNF 位设置为01,并且MODE 位设置为00时,对应引脚被设置为浮空输入模式,该模式也是STM32复位之后默认模式。浮空输入模式是相对与上拉或者下拉输入模式,浮空就是不上拉也不下拉。浮空输入模式下GPIO结构中信号流向见图11-2。 I/O引脚信号接入到施密特触发器的输入端,在每来一个APB2时钟脉冲就把输入端的信号传输到触发器的输出端,施密特触发器的输出端又是与输入数据寄存器(GPIOx_IDR)连通的,所以该数据就保存在输入数据寄存器内,寄存器本身就是一个存储单元(起到缓冲区
[单片机]
GPIO流水灯—基于<font color='red'>Stm32CubeMX</font><font color='red'>创建</font>工程实现流水灯
24C32~24C512的51单片机读写程序
AT89S52 晶振频率为11.0592MHz 指令周期:1.0852us 功能说明:24C32-512程序,能读写:24C32、24C64、24C128、24C256、24C512 读出的数据 送 P1 口显示 #include reg52.h #include intrins.h #define uchar unsigned char #define uint unsigned int sbit sda=P3^7;//;模拟I2C 数据 sbit scl=P3^6;//;模拟I2C 时钟 void delay1(uint z)//延时为 1ms { uchar x,x1; for(;z 0;z--) { for
[单片机]
DS1302的时分秒读写程序—STC系列12T单片机
#include reg51.h #include intrins.h #define uchar unsigned char #define uint unsigned int sbit ACC0=ACC^0; sbit ACC7=ACC^7; sbit P25=P2^5; sbit P26=P2^6; sbit P27=P2^7; sbit P36=P3^6; sbit T_CLK = P1^7; sbit T_IO = P2^3; sbit T_RST = P1^3; uchar code tableduan ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0
[单片机]
stm32cubemx生成的代码总是进入滴答定时器中断
最近stm32cubemx生成的代码总是进入滴答定时器中断,调了好长时间才发现,原来有好几个地方都在设置滴答定时器,最后我把 uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb) { // return SysTick_Config(TicksNumb); } 里面的给屏蔽了,就好使了,但是不知道会不会有副作用,这个还要在后期确认下。 但是如果加入freertos的话,上述方法是不行的,因为在任务调度的时候,还是会打开的。那么为什么要打开呢,因为,freertos不仅要用tim1,还要用systick,是为了双重保障。所以如果加入freertos的话,就不要再将其关闭了。
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved