stm32内部stm32flash读写程序flash,为什么stm32flash读写程序会不一样

难道STM32F207的内部FLASH不如外接的SPI flash读写速度快?! - 【stm32/stm8】 - 电子工程世界-论坛
后使用快捷导航没有帐号?
请完成以下验证码
查看: 6714|回复: 5
难道STM32F207的内部FLASH不如外接的SPI flash读写速度快?!
在线时间60 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 58, 距离下一级还需 142 积分
一粒金砂(中级), 积分 58, 距离下一级还需 142 积分
我进行了如下实验,二者是都能正常读写出数据的,操作都是先擦除再写入数据,我对内部flash是按着16K擦除的,对外部flash是按照64k擦除的,结果:内部FLASH读写的时候机器明显很卡,把功能移到外部SPI接口的FLASH之后发现程序就不卡了,难道说外部的FLASH比内部的还快,不太可能吧,这个有没有个参考值或者参数什么的? 难道ST的东西真的这么挫吗?
&&&&&&&&&&
在线时间1423 小时
威望6318分
芯币21667枚
E金币300枚
TA的帖子TA的资源
不是flash擦除慢,是内部flash影响cpu运行而外部不影响.
感谢斑竹在此解答!在其他论坛上有人回答说操作内部FLASH的时候CPU挂起的,就是不明就里,可否深入指点一二?&
在线时间60 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 58, 距离下一级还需 142 积分
一粒金砂(中级), 积分 58, 距离下一级还需 142 积分
不是flash擦除慢,是内部flash影响cpu运行而外部不影响.
感谢斑竹在此解答!在其他论坛上有人回答说操作内部FLASH的时候CPU挂起的,就是不明就里,可否深入指点一二?为什么外部的就不影响而内部影响?
在线时间1423 小时
威望6318分
芯币21667枚
E金币300枚
TA的帖子TA的资源
flash的访问有独立的硬件电路控制,对flash编程不像写RAM那么简单.外部flash这套控制电路在芯片上所以和cpu没关系,顶多就是有个延时而已.
你可以上电初始化时把可能要写的区域擦掉,ram里开个缓冲区必要时候再写入,一次写入量越大影响就越小了.
在线时间1423 小时
威望6318分
芯币21667枚
E金币300枚
TA的帖子TA的资源
flash擦写是有寿命的10万次左右,如果你总是擦写会把它写坏的.
在线时间60 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 58, 距离下一级还需 142 积分
一粒金砂(中级), 积分 58, 距离下一级还需 142 积分
找到了相关的参数(如图)并且进行了实验。确实按字擦除的时候,硬件跟踪发现207擦除一个16K的扇区需要200ms,而另一103的资料说擦除1K大小的页是40ms.二者相差最少5倍。
(60.39 KB, 下载次数: 4)
22:28 上传
EEWORLD 官方微信
EE福利 唾手可得
Powered bySTM32读写内部FLASH程序_文档库
文档库最新最全的文档下载
当前位置: & STM32读写内部FLASH程序
STM32读写内部FLASH程序
/*******************************************************************************flash的写函数:输入: u32 StartAddr flash起始地址u32 *p_data 待写入数据指针u32 size 写入数据的数量输出: 0:正确执行
非0:出错注意:输入数据一定是u32 的指针,即数据一定是按照4字节对齐写入的。所以:size也是u32的个数(字节数的4分之一)*******************************************************************************/u8 flash_write(u32 StartAddr,u32 *p_data,u32 size){ volatile FLASH_Status FLASHS u32 EndAddr=StartAddr+size*4; vu32 NbrOfPage = 0; u32 EraseCounter = 0x0, Address = 0x0;int MemoryProgramStatus=1;//为一是通过FLASH_Unlock();
//解锁函数NbrOfPage=((EndAddr-StartAddr)>>10)+1; //有多少个页被擦除 //清除所有已有标志FLASH_ClearFlag(FLASH_FLAG_BSY | FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);//擦页FLASHStatus=FLASH_COMPLETE;for(EraseCounter=0;(EraseCounter<NbrOfPage)&&(FLASHStatus==FLASH_COMPLETE);EraseCounter++){
FLASHStatus=FLASH_ErasePage(StartAddr+(PageSize*EraseCounter)); }//开始写数据Address = StartAi=0;while((Address<EndAddr)&&(FLASHStatus==FLASH_COMPLETE)) { FLASHStatus=FLASH_ProgramWord(Address,p_data[i++]);Address=Address+4;}//检验数据是否出错Address = StartAi=0;while((Address < EndAddr) && (MemoryProgramStatus != 0)){ if((*(vu32*) Address) != p_data[i++]){
MemoryProgramStatus = 0;return 1;}Address += 4;}return 0;}int flash_read(u32 StartAddr,u32 *p_data,u32 size){u32 EndAddr=StartAddr+size*4;int MemoryProgramStatus=1;u32 Address = 0x0;int i=0;Address = StartAwhile((Address < EndAddr) && (MemoryProgramStatus != 0)){p_data[i++]=(*(vu32*) Address);Address += 4; }return 0; }注:需在stm32f10x_conf.h中先定义#define _FLASH_PROG
Word文档免费下载:
STM32F103系列内部Flash读写程序_计算机软件及应用_IT/计算机_专业资料。实现了stm32内部剩余flash空间的读写操作,需要对stm32单片机有一定了解 ...STM32读写内部FLASH程序_电子/电路_工程科技_专业资料。利用stm32内部FLASH存储数据,可实现掉电保存的功能,简化外部电路 /*** flash的写函数:输入: u32 StartAdd...STMF系列内部Flash读写程序_计算机硬件及网络_IT/计算机_专业资料。STMF系列内部...WriteFlashOneWord(uint32_t WriteAddress,uint32_t WriteData) { FLASH_...STM32读写内部FLASH的函数程序_计算机软件及应用_IT/计算机_专业资料。STM32操作内部FLASH的读写函数,可将FLASH作为数据区,用于存储各种参数。注意在编译器中设定...读写STM32 内部 flash 读写代码分类: 单片机 stm32
06:16 10343 人阅读 评论(2) 收藏 举报 flashfunctionbyte 编程存储 io 由于老师的要求, ...STM32F103系列内部Flash读写程序_计算机硬件及网络_IT/计算机_专业资料。STM32F103系列内部Flash读写程序 /*** *Function: STM32F103系列内部Flash读写操作 *Author...参数 eeprom it ▼ 分类: 安防,监控 因为要用内部 FLASH 代替外部 EEPROM,把参数放在 STM32 的 0xK 处,其中 20K 是 bootloader,300K 是应用程序...21ic官方微信-->
后使用快捷导航没有帐号?
ST MCU Finder
安装免费手机应用,
寻找理想的ST MCU
请完成以下验证码
查看: 1003|回复: 4
求 STM32F0内部flash读写例程 !
&&已结帖(20)
主题帖子积分
中级工程师, 积分 3524, 距离下一级还需 1476 积分
中级工程师, 积分 3524, 距离下一级还需 1476 积分
主题帖子积分
专家等级:结帖率:99%
主题帖子积分
中级工程师, 积分 3524, 距离下一级还需 1476 积分
中级工程师, 积分 3524, 距离下一级还需 1476 积分
求 STM32F0内部flash读写例程 !
满意回复+20
读没啥好说的,关心擦写吧。
这个手册上都讲得详细了,先FLASH开锁,
The main Flash memory programming sequence in standard mode is as follows:
1.Check th ...
主题帖子积分
助理工程师, 积分 1521, 距离下一级还需 479 积分
助理工程师, 积分 1521, 距离下一级还需 479 积分
主题帖子积分
专家等级:结帖率:0%打赏:0.00受赏:2.00
主题帖子积分
助理工程师, 积分 1521, 距离下一级还需 479 积分
助理工程师, 积分 1521, 距离下一级还需 479 积分
读没啥好说的,关心擦写吧。
这个手册上都讲得详细了,先FLASH开锁,
The main Flash memory programming sequence in standard mode is as follows:
1.Check that no main Flash memory operation is ongoing by checking the BSY bit in the FLASH_SR register.
2. Set the PG bit in the FLASH_CR register.
3. Perform the data write (half-word) at the desired address.
4. Wait until the BSY bit is reset in the FLASH_SR register.
5. Check the EOP flag in the FLASH_SR register (it is set when the programming operation has succeeded), and then clear it by software.
另外,官方固件库flash目录下有例程参考。
主题帖子积分
中级工程师, 积分 3524, 距离下一级还需 1476 积分
中级工程师, 积分 3524, 距离下一级还需 1476 积分
主题帖子积分
专家等级:结帖率:99%
主题帖子积分
中级工程师, 积分 3524, 距离下一级还需 1476 积分
中级工程师, 积分 3524, 距离下一级还需 1476 积分
读没啥好说的,关心擦写吧。
这个手册上都讲得详细了,先FLASH开锁,
The main Flash memory programming s ...
谢谢大侠 !
固件库 有例程,已找到!
主题帖子积分
助理工程师, 积分 1156, 距离下一级还需 844 积分
助理工程师, 积分 1156, 距离下一级还需 844 积分
主题帖子积分
专家等级:结帖率:100%打赏:0.00受赏:11.00
主题帖子积分
助理工程师, 积分 1156, 距离下一级还需 844 积分
助理工程师, 积分 1156, 距离下一级还需 844 积分
主题帖子积分
助理工程师, 积分 1156, 距离下一级还需 844 积分
助理工程师, 积分 1156, 距离下一级还需 844 积分
主题帖子积分
专家等级:结帖率:100%打赏:0.00受赏:11.00
主题帖子积分
助理工程师, 积分 1156, 距离下一级还需 844 积分
助理工程师, 积分 1156, 距离下一级还需 844 积分
评估板上都有相关的例程可以参考的。
技术新星奖章
人才类勋章
欢快之小溪
发帖类勋章
时间类勋章
社区建设奖章
等级类勋章

我要回帖

更多关于 stm32f103 flash 读写 的文章

 

随机推荐