完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
之前求助的结果 就是用MCU的片内FLASH做文件系统存放数据 我就想到官方的Nucleo板不就是这样的吗?! 我目前只能做到显示出有U盘的盘符(因为用CubeMX配置的USB_device_Only MSC),但是接入电脑后马上提示要格式化才能用 官方的Nucleo板插入后能正常显示U盘,而且能够像U盘一样往里面放文件(但是下次插入电脑时自动清除) 了解到现在要改的关键部分代码或函数有以下这几个(求教怎么修改带能正常,MCU:STM32F107VCT6,FLASH是256K,每页2K): u***d_storage_if.c文件中的 int8_t STORAGE_Init_FS (uint8_t lun) { /* USER CODE BEGIN 2 */ HAL_FLASH_Unlock(); /* Fill EraseInit structure*/ EraseInitStruct.TypeErase = FLASH_TYPEERASE_PAGES; EraseInitStruct.PageAddress = FLASH_USER_START_ADDR; EraseInitStruct.NbPages = (FLASH_USER_END_ADDR - FLASH_USER_START_ADDR) / FLASH_PAGE_SIZE; return (USBD_OK); /* USER CODE END 2 */ } 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 = 0x20; *block_size = 0x800; return (USBD_OK); /* USER CODE END 3 */ } 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) { for(uint16_t i=0;i buf[i>>2] = *(__IO uint32_t *)(FLASH_START_ADDR + blk_addr); // buf = *(vu32*)(FLASH_START_ADDR + blk_addr); } } return (USBD_OK); /* USER CODE END 6 */ } 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) { for(uint16_t i=0; i // FLASH_tiMEOUT_VALUE if(FLASH_WaitForLastOperation(FLASH_WAIT_TIMEOUT)!=FLASH_TIMEOUT_VALUE) { __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP|FLASH_FLAG_PGERR|FLASH_FLAG_WRPERR); } FLASH_PageErase(FLASH_START_ADDR + blk_addr + i); } for(uint16_t i=0;i if(FLASH_WaitForLastOperation(FLASH_WAIT_TIMEOUT)!=FLASH_TIMEOUT_VALUE) { __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP|FLASH_FLAG_PGERR|FLASH_FLAG_WRPERR); } HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD,FLASH_START_ADDR + blk_addr + i , buf[i>>2]); } } return (USBD_OK); /* USER CODE END 7 */ } |
|
相关推荐
10个回答
|
|
官方有例子哦。
|
|
|
|
|
|
|
|
是不是要建立一个虚拟的FAT文件系统?
|
|
|
|
是在MCU的片内FLASH建立FAT文件系统 是不是虚拟的我就搞不懂了 |
|
|
|
鄙视这种不负责任的回答方式,最好给个连接也行啊。 关键是:我也找过,根本没找到。 ST的U盘升级方案可以参考ST-LINK/V2的具体实现,刚好论坛有个帖子,楼主去看下吧: http://www.stmcu.org/module/foru ... read&tid=610416 另外,你也可以参考mbed官方开源项目DAPLINK: https://github.com/mbedmicro/DAPLink |
|
|
|
7762642422d 发表于 2018-11-28 07:21 给的链接粗略看了一下 不是我需要的用USB引脚做MSC的功能 但是感谢帮我找相关的资料,谢谢! |
|
|
|
HAL库里有例程
|
|
|
|
我之前找过,麻烦你指出在哪个目录下 en.stm32cubef1STM32Cube_FW_F1_V1.4.0Projects 再下一层的什么路径? |
|
|
|
楼主 请问你找到相应的例程了吗? 找到的话可以共享个链接吗? 谢谢!!
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
316 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
834 浏览 2 评论
1996 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1099 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1525 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-20 03:32 , Processed in 0.874467 second(s), Total 90, Slave 74 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号