嵌入式:基于stm32f103rc 实现SPI+FLASH实现USB大容量设备

环境

硬件:stm32f103rc

嵌入式:基于stm32f103rc 实现SPI+FLASH实现USB大容量设备_第1张图片
这里提一下,一般来说,USB是需要接上拉电阻的,同时D+上需要接一个3.3v的电压,对于正点原子的stm32f407探索者来说,按照本例程的话,生成会无效,无法识别。应为正点原子的407USB电路不一致。

软件:stm32cubemx

步骤

1.生成初始化文件

嵌入式:基于stm32f103rc 实现SPI+FLASH实现USB大容量设备_第2张图片
嵌入式:基于stm32f103rc 实现SPI+FLASH实现USB大容量设备_第3张图片

嵌入式:基于stm32f103rc 实现SPI+FLASH实现USB大容量设备_第4张图片
嵌入式:基于stm32f103rc 实现SPI+FLASH实现USB大容量设备_第5张图片
嵌入式:基于stm32f103rc 实现SPI+FLASH实现USB大容量设备_第6张图片
这里我已经对工程改了,如果你没有改的话,需要进行一下设置
嵌入式:基于stm32f103rc 实现SPI+FLASH实现USB大容量设备_第7张图片
嵌入式:基于stm32f103rc 实现SPI+FLASH实现USB大容量设备_第8张图片
测试:插上USB线,会出现以下,即为正确。
在这里插入图片描述
这里是做完了,会出现一个U盘的枚举,但是你无法对其操作,这里因为读写操作的API没接。
有问题的话,检查以下情况:

1.USB设备的干扰:本人有两个USB口,发现直接USB口,可正常使用,否则有干扰。

2.USB设备的电路:这个实验一开始使用的正点原子407,发现就是不行,后续更换开发板,发现可以,总结就是电路问题,请比较电路连接和硬件区别。

3.堆栈大小:部分的开发板,发现和堆栈的设置有关,可修改。

2.添加FLASH w25系列万能驱动

驱动来源于网上,由于是GitHub上,本人已fork,详细可参看工程。
使用事项:
嵌入式:基于stm32f103rc 实现SPI+FLASH实现USB大容量设备_第9张图片
测试连接性的话,可以通过如下方式:
嵌入式:基于stm32f103rc 实现SPI+FLASH实现USB大容量设备_第10张图片
如果读取是你的FLASH,即为正确。

3.自定义USB文件

最后的一个,修改USB的配置文件。

嵌入式:基于stm32f103rc 实现SPI+FLASH实现USB大容量设备_第11张图片
一共要4个地方,分别为3个函数:
嵌入式:基于stm32f103rc 实现SPI+FLASH实现USB大容量设备_第12张图片
嵌入式:基于stm32f103rc 实现SPI+FLASH实现USB大容量设备_第13张图片
这里可以使用默认的
嵌入式:基于stm32f103rc 实现SPI+FLASH实现USB大容量设备_第14张图片
测试:

1.USB设备读写

嵌入式:基于stm32f103rc 实现SPI+FLASH实现USB大容量设备_第15张图片

2.断电重新连接

嵌入式:基于stm32f103rc 实现SPI+FLASH实现USB大容量设备_第16张图片
驱动文件:
https://gitee.com/linyuehai/stm32-f103-rc/tree/master/w25qxx%E4%B8%87%E8%83%BD%E9%A9%B1%E5%8A%A8
工程文件:
https://gitee.com/linyuehai/stm32-f103-rc/tree/master/
也可以查看项目工程

你可能感兴趣的:(嵌入式)