当前位置: 首页 > wzjs >正文

做游戏的av迅雷下载网站百度搜索排名优化

做游戏的av迅雷下载网站,百度搜索排名优化,做善事的网站,贵州网站建设公司前言 简简单单,将手中的单品集模拟成U盘,中间经历过很多坑,也算是摸索透了,记录一下开发,防止发生相同的问题。 正文 1.选择芯片 2.正常配置调试和外部时钟(sys->serial wirte, rcc->hse->crys…

前言

简简单单,将手中的单品集模拟成U盘,中间经历过很多坑,也算是摸索透了,记录一下开发,防止发生相同的问题。

正文

1.选择芯片

2.正常配置调试和外部时钟(sys->serial wirte,  rcc->hse->crystal)

3.打开usb

4.选择USB模式,packet = 1024,

5.配置时钟(打开USB会报错,关掉重新手动配置就好了)

6.生成工程

7.添加代码,只需要修改这一个文件就可以了,

8.参数含义

//这三个参数需要根据flash分配,整个flash除了程序外就是U盘大小

程序在0x08000000地址,但是存储不能从这个地址开始,需要后移0x5000(根据程序大小配置,不不能出现半个block的情况,整数就行了)

9.设置识别的参数,我重新定义了2个参数,也可以修改原来的大小。FLASH_PAGE_SIZE直接用就行

10.读取方法,这个让电脑可以读取U盘的相关信息,这个时候可以识别到U盘。用memcpy的方法,将目标内容复制到buf内

11.写入方法,网上都是直接使用memcpy复制的方法直接反向复制,但是我这会出现问题,在最后格式化U盘的时候会出现无法格式化U盘(怀疑是flash锁造成的);我这里使用对内部flash的读写的方法

12.直接编译,下载到STM内,如果识别不到则重新插入电脑。

13.格式化U盘,然后就可以正常使用

代码

直接全部复制过来,不想自己手动敲(累),就上面那几个地方,其他没变。

/* USER CODE BEGIN Header */
/********************************************************************************* @file           : usbd_storage_if.c* @version        : v2.0_Cube* @brief          : Memory management layer.******************************************************************************* @attention** <h2><center>&copy; Copyright (c) 2025 STMicroelectronics.* All rights reserved.</center></h2>** This software component is licensed by ST under Ultimate Liberty license* SLA0044, the "License"; You may not use this file except in compliance with* the License. You may obtain a copy of the License at:*                             www.st.com/SLA0044********************************************************************************/
/* USER CODE END Header *//* Includes ------------------------------------------------------------------*/
#include "usbd_storage_if.h"/* USER CODE BEGIN INCLUDE *//* USER CODE END INCLUDE *//* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*//* USER CODE BEGIN PV */
/* Private variables ---------------------------------------------------------*//* USER CODE END PV *//** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY* @brief Usb device.* @{*//** @defgroup USBD_STORAGE* @brief Usb mass storage device module* @{*//** @defgroup USBD_STORAGE_Private_TypesDefinitions* @brief Private types.* @{*//* USER CODE BEGIN PRIVATE_TYPES *//* USER CODE END PRIVATE_TYPES *//*** @}*//** @defgroup USBD_STORAGE_Private_Defines* @brief Private defines.* @{*/#define STORAGE_LUN_NBR                  1
#define STORAGE_BLK_NBR                  0x10000
#define STORAGE_BLK_SIZ                  0x200/* USER CODE BEGIN PRIVATE_DEFINES */
#define  FLASH_START_ADDR                0x08005000
#define  FLASH_PAGE_NBR                  48/* USER CODE END PRIVATE_DEFINES *//*** @}*//** @defgroup USBD_STORAGE_Private_Macros* @brief Private macros.* @{*//* USER CODE BEGIN PRIVATE_MACRO *//* USER CODE END PRIVATE_MACRO *//*** @}*//** @defgroup USBD_STORAGE_Private_Variables* @brief Private variables.* @{*//* USER CODE BEGIN INQUIRY_DATA_FS */
/** USB Mass storage Standard Inquiry Data. */
const int8_t STORAGE_Inquirydata_FS[] = {/* 36 *//* LUN 0 */0x00,0x80,0x02,0x02,(STANDARD_INQUIRY_DATA_LEN - 5),0x00,0x00,0x00,'S', 'T', 'M', ' ', ' ', ' ', ' ', ' ', /* Manufacturer : 8 bytes */'P', 'r', 'o', 'd', 'u', 'c', 't', ' ', /* Product      : 16 Bytes */' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ','0', '.', '0' ,'1'                      /* Version      : 4 Bytes */
};
/* USER CODE END INQUIRY_DATA_FS *//* USER CODE BEGIN PRIVATE_VARIABLES *//* USER CODE END PRIVATE_VARIABLES *//*** @}*//** @defgroup USBD_STORAGE_Exported_Variables* @brief Public variables.* @{*/extern USBD_HandleTypeDef hUsbDeviceFS;/* USER CODE BEGIN EXPORTED_VARIABLES *//* USER CODE END EXPORTED_VARIABLES *//*** @}*//** @defgroup USBD_STORAGE_Private_FunctionPrototypes* @brief Private functions declaration.* @{*/static int8_t STORAGE_Init_FS(uint8_t lun);
static int8_t STORAGE_GetCapacity_FS(uint8_t lun, uint32_t *block_num, uint16_t *block_size);
static int8_t STORAGE_IsReady_FS(uint8_t lun);
static int8_t STORAGE_IsWriteProtected_FS(uint8_t lun);
static int8_t STORAGE_Read_FS(uint8_t lun, uint8_t *buf, uint32_t blk_addr, uint16_t blk_len);
static int8_t STORAGE_Write_FS(uint8_t lun, uint8_t *buf, uint32_t blk_addr, uint16_t blk_len);
static int8_t STORAGE_GetMaxLun_FS(void);/* USER CODE BEGIN PRIVATE_FUNCTIONS_DECLARATION *//* USER CODE END PRIVATE_FUNCTIONS_DECLARATION *//*** @}*/USBD_StorageTypeDef USBD_Storage_Interface_fops_FS =
{STORAGE_Init_FS,STORAGE_GetCapacity_FS,STORAGE_IsReady_FS,STORAGE_IsWriteProtected_FS,STORAGE_Read_FS,STORAGE_Write_FS,STORAGE_GetMaxLun_FS,(int8_t *)STORAGE_Inquirydata_FS
};/* Private functions ---------------------------------------------------------*/
/*** @brief  Initializes over USB FS IP* @param  lun:* @retval USBD_OK if all operations are OK else USBD_FAIL*/
int8_t STORAGE_Init_FS(uint8_t lun)
{/* USER CODE BEGIN 2 */return (USBD_OK);/* USER CODE END 2 */
}/*** @brief  .* @param  lun: .* @param  block_num: .* @param  block_size: .* @retval USBD_OK if all operations are OK else USBD_FAIL*/
int8_t STORAGE_GetCapacity_FS(uint8_t lun, uint32_t *block_num, uint16_t *block_size)
{/* USER CODE BEGIN 3 */
//  *block_num  = STORAGE_BLK_NBR;
//  *block_size = STORAGE_BLK_SIZ;*block_num  = FLASH_PAGE_NBR;*block_size = FLASH_PAGE_SIZE;return (USBD_OK);/* USER CODE END 3 */
}/*** @brief  .* @param  lun: .* @retval USBD_OK if all operations are OK else USBD_FAIL*/
int8_t STORAGE_IsReady_FS(uint8_t lun)
{/* USER CODE BEGIN 4 */return (USBD_OK);/* USER CODE END 4 */
}/*** @brief  .* @param  lun: .* @retval USBD_OK if all operations are OK else USBD_FAIL*/
int8_t STORAGE_IsWriteProtected_FS(uint8_t lun)
{/* USER CODE BEGIN 5 */return (USBD_OK);/* USER CODE END 5 */
}/*** @brief  .* @param  lun: .* @retval USBD_OK if all operations are OK else USBD_FAIL*/
int8_t STORAGE_Read_FS(uint8_t lun, uint8_t *buf, uint32_t blk_addr, uint16_t blk_len)
{/* USER CODE BEGIN 6 */if(lun == 0){memcpy(buf,(uint8_t *)(FLASH_START_ADDR +blk_addr*FLASH_PAGE_SIZE),blk_len*FLASH_PAGE_SIZE);return (USBD_OK);}return (USBD_OK);/* USER CODE END 6 */
}/*** @brief  .* @param  lun: .* @retval USBD_OK if all operations are OK else USBD_FAIL*/
int8_t STORAGE_Write_FS(uint8_t lun, uint8_t *buf, uint32_t blk_addr, uint16_t blk_len)
{/* USER CODE BEGIN 7 */if(lun == 0){uint16_t i;HAL_FLASH_Unlock();FLASH_EraseInitTypeDef f;f.TypeErase = FLASH_TYPEERASE_PAGES;f.PageAddress = FLASH_START_ADDR + blk_addr*FLASH_PAGE_SIZE;f.NbPages = blk_len;uint32_t pageError = 0;HAL_FLASHEx_Erase(&f,&pageError);for(i=0;i<blk_len*FLASH_PAGE_SIZE;i+=4)HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD,FLASH_START_ADDR+blk_addr*FLASH_PAGE_SIZE+i,*(uint32_t *)(&buf[i]));HAL_FLASH_Lock();return USBD_OK;}return (USBD_OK);/* USER CODE END 7 */
}/*** @brief  .* @param  None* @retval .*/
int8_t STORAGE_GetMaxLun_FS(void)
{/* USER CODE BEGIN 8 */return (STORAGE_LUN_NBR - 1);/* USER CODE END 8 */
}/* USER CODE BEGIN PRIVATE_FUNCTIONS_IMPLEMENTATION *//* USER CODE END PRIVATE_FUNCTIONS_IMPLEMENTATION *//*** @}*//*** @}*//************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

问题

1.插入识别U盘,但是打开或者读写文件异常慢:packet值不合理,导致变慢,可以修改成512 1024 4096尝试。正常就是page size

2.程序没反应,没有reset,或者重新插入。

3.格式化后出现无法格式化,或者等待好久没有反应,一直在转圈圈

这个是个大问题,卡了我好几天,主要是write方法有问题,像原来使用memcpy就会这样;

或者没有偏移地址,导致格式化的代码直接覆盖了U盘代码(我就是这个问题),U盘直接没了。

结尾

        这只是内部flash模拟U盘,可以添加fatfs文件系统模拟bootloader,进行程序拖拽跟新操作,不需要自己开发上位机,但是内存太小,不能存储大文件。

        可以考虑外接SPI FLASH,如果是2/8M的话,操作空间比较大,下次更新SPI FLASH的方法。

http://www.dtcms.com/wzjs/43498.html

相关文章:

  • 广东电子商务网站建设价格seo什么职位
  • 网站建设几个税点教育机构在线咨询
  • 网站建设最流行语言百度定位店铺位置怎么设置
  • 做名片哪个网站最好搜索引擎优化seo专员
  • 国外做鞋子的网站吗seo点击排名源码
  • 象山县住房和城乡建设局网站草根seo博客
  • asp商城网站源码下载站长seo综合查询
  • 手游代理联运平台成都关键词seo推广平台
  • 深圳免费网站优化网络推广网络优化工程师证书
  • 做图兼职网站有哪些长沙建站工作室
  • 江苏省建设工程招投标网站产品营销策划方案
  • 网站服务提供商网站排名优化外包
  • 如何在人力资源网站做合同续签搜索引擎优化seo网站
  • 做网站需要了解的内容今日桂林头条新闻
  • 网站里滚动的图片怎么做的百度推广营销方案
  • 无锡专业网站营销查收录
  • 新建的网站怎么登录域名注册要多少钱
  • 用wordpress怎么做网站百度指数怎么用
  • 网站代运营收费百度导航下载2022最新版官网
  • 昆明做网站魄罗科技百度人工智能
  • 提供域名申请的网站小程序模板
  • word可以做网站链接吗南宁网络优化seo费用
  • 武汉网站建设机构百度浏览器网址
  • 北京企业网站seo推广app赚钱的平台
  • 微信二维码seo标题优化
  • 岑溪网站开发北京网站快速排名优化
  • 深圳企业网站制作哪家好湖南关键词排名推广
  • 网站建设教程 项目式seo全称是什么
  • 网站被黑客攻击怎么办app开发公司排行榜
  • 有教做路桥质检资料的网站吗品牌宣传的推广