平台
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 */
}
改代码就是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不多说明,网上很多!
关键字:STM32CubeMx 创建U盘 读写程序
引用地址:
使用STM32CubeMx创建U盘读写程序
推荐阅读最新更新时间:2024-03-16 15:35
STM32CubeMx的初始配置顺序是怎么影响DMA功能的
经常有STM32开发者基于STM32CubeMx进行配置并生成基于HAL库的初始化代码,当涉及到DMA功能时,发现DMA功能无效,但从配置操作及代码本身又似乎找不出原因来的情况。此情此景 往往挺令人抓狂的。 比方曾有人反馈,他使用STM32F4系列芯片进行产品开发,通过STM32CubeMx配置并生成初始化代码,使用了UART的DMA传输。但他发现DMA根本不工作。后来他无意中发现,是因为他在用户代码里不经意地调整过UART外设和DMA外设初始化代码的前后顺序,当他重新调整二者的先后顺序后就一切正常了【此时DMA初始化代码在前,UART初始化代码在后】。他想知道这个顺序是怎么影响DMA功能的。 我顺手拿了块STM32F3
[单片机]
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) {
[单片机]
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/
[单片机]
STM32CubeMX系列教程
STM32Cube 是一个全面的软件平台,包括了ST产品的每个系列。平台包括了STM32Cube 硬件抽象层(一个STM32抽象层嵌入式软件,确保在STM32系列最大化的便携性)和一套的中间件组件(RTOS, USB, FatFs, TCP/IP, Graphics, 等等). 直观的STM32微控制器的选择和时钟树配置 微控制器图形化配置外围设备和中间件的功能模式和初始化参数 C代码生成项目覆盖STM32微控制器的初始化符合IAR™,Keil的™和GCC编译器。 对于新的产品设计,我们强烈推荐使用STM32Cube来加速你的开发过程,并为以后的产品平台移植打下良好的基础。 1.新建工程 打开STM32cubeMX软件,点
[单片机]
GPIO流水灯—基于Stm32CubeMX创建工程实现流水灯
一、了解GPIO结构 二、GPIO的工作模式 GPIO有8种工作模式 1.输入浮空 当GPIOx_ CRL 或GPIOx_CRH 寄存器的CNF 位设置为01,并且MODE 位设置为00时,对应引脚被设置为浮空输入模式,该模式也是STM32复位之后默认模式。浮空输入模式是相对与上拉或者下拉输入模式,浮空就是不上拉也不下拉。浮空输入模式下GPIO结构中信号流向见图11-2。 I/O引脚信号接入到施密特触发器的输入端,在每来一个APB2时钟脉冲就把输入端的信号传输到触发器的输出端,施密特触发器的输出端又是与输入数据寄存器(GPIOx_IDR)连通的,所以该数据就保存在输入数据寄存器内,寄存器本身就是一个存储单元(起到缓冲区
[单片机]
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的话,就不要再将其关闭了。
[单片机]