1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
昨天调试我们新的rtu的时候用外部spi flash的时候出现的一些小问题,因为赶工赶的急,所以想到用f4内置1m的flash作为数据存储器来使用。
首先在网上搜集了一些资料,也就有一篇资料比较好,我这里吧我看的连接的地址挂上,谢谢这位同学的无私,通过他的代码和STM32的数据 手册我,吧函数做一下几个函数,希望对各位同学有帮助,http://www.cnblogs.com/zyqgold/archive/2013/11/09/3416108.html STM32F4Discovery开发帮使用的STM32F407VGT6芯片,内部FLASH有1M之多。平时写的代码,烧写完之后还有大量的剩余。有效利用这剩余的FLASH能存储不少数据。因此研究了一下STM32F4读写内部FLASH的一些操作。 【STM32F4 内部Flash的一些信息】 STM32F407VG的内部FLASH的地址是:0x08000000,大小是0x00100000。 写FLASH的时候,如果发现写入地址的FLASH没有被擦出,数据将不会写入。FLASH的擦除操作,只能按Sector进行。不能单独擦除一个地址上的数据。因此在写数据之前需要将地址所在Sector的所有数据擦除。 在STM32F4的编程手册上可找到FLASH的Sector划分,我们现在只操作Main memory: 参考Demo中的例子,将FLASH的页的其实地址(基地址)可定义如下: |
|
相关推荐
|
|
这里的flash的在编程钱如果这一个地址已经写过了请先擦除这个地址,因为现在stm32f4的的flash分为11个部分,每个擦除是按照每个部分一起擦除,因为这你的对每个快的做一个缓冲区才行。
我的代码如下: void get_from_flash(void) { delay_ms(2); OwnFlashReady(0x08008000,getflashdata_buf,100); // SPI_FLASH_BufferRead(getflashdata_buf, 0x000000, 100); //?????? // SPI_FLASH_ChipErase();//????flash???????? memmove(&RTU_Basedata_Only,&getflashdata_buf[0],18); memmove(&BaseData01,&getflashdata_buf[18],21); memmove(&gx_options01[0],&getflashdata_buf[39],60); } void OwnFlashSave(uint32_t save_addr,uint8_t *p,uint16_t number) { uint32_t StartSector,EndSector,i, save_addr_temp; StartSector = GetSector(save_addr); EndSector = GetSector(save_addr+number); save_addr_temp = save_addr; FLASH_Unlock(); FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR|FLASH_FLAG_PGSERR); |
|
|
|
|
|
//????flash
for (i = StartSector; i<=EndSector; i += 8) { while (FLASH_EraseSector(i, VoltageRange_3) != FLASH_COMPLETE) { } } //????????????×÷?????????????????????í?ó?? while (save_addr < number+save_addr_temp) { if (FLASH_ProgramByte(save_addr, *p++) == FLASH_COMPLETE) { save_addr = save_addr + 1; } else { while (1) { } } } FLASH_Lock(); } |
|
|
|
|
|
// void OwnFlashErasure() 代码不是很复杂,但是如果没有弄懂的话还是要费些时间的,希望各位同学多多指教。 |
|
|
|
|
|
205 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1253 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
848 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
853 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
1073 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12010 浏览 31 评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 17:29 , Processed in 0.613914 second(s), Total 39, Slave 32 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号