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

如何用wampp 做网站广州网络推广

如何用wampp 做网站,广州网络推广,wordpress 没有权限,企业网站设计理念前言 简简单单,将手中的单品集模拟成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/405342.html

相关文章:

  • php网站怎么做自适应免费个人网站空间
  • wordpress 信息库插件安徽百度关键词优化
  • 苹果做安卓游戏下载网站企业seo网站推广
  • 手机网页制作与网站建设神马网站快速排名案例
  • 安徽专业做网站的大公司最火网站排名
  • 高端网站开发企业深圳谷歌seo推广
  • 常州网站建设招聘百度今日小说搜索风云榜
  • 网站做的最好的网站有哪些非国产手机浏览器
  • 网站建站建设上海黔文信息科技有限公司30网页制作软件有哪些
  • 信息技术转移网站建设关键字挖掘爱站网
  • ssh框架可以做网站么app开发费用
  • 拓者设计吧官网效果图长沙seo行者seo09
  • 聊城哪有做网站的网站建设是干什么的
  • 网络app制作网站有哪些内容软文营销定义
  • 网站怎么做跳转手机版谷歌浏览器入口
  • 网站建设编程怎么写推广一次多少钱
  • 无锡哪里做网站搜索引擎优化seo专员
  • 中山网站制作定制网络营销的四大特点
  • 做网站找我青岛网站优化公司
  • 网站转化百度商城app下载
  • 自己做的网页加在网站文章上为什么打不开百度的推广广告
  • 用自己电脑做网站空间站长之家官网入口
  • 关于网站开发的论文文献免费自媒体网站
  • 网站怎么做海外推广竞价代运营
  • 网站建设包括哪些部分百度推广怎么做的
  • 免费个人素材网站网络科技公司骗了我36800
  • 网站建设费怎么做会计分录世界500强企业
  • 普宁做网站网站推广的软件
  • 一个正规的网站建设公司中国网站排名查询
  • 泰州高端网站建设深圳网络推广seo软件